Compare commits

..

2 commits
stable ... main

Author SHA1 Message Date
Cédrix
8c9d5ea755 Remettre le proxy APT en session live, que l'arrêt anticipé avait fait sauter
Depuis que la session live est écartée en tête de script, celui-ci s'arrête
avant configuration_apt, seul endroit où auto-apt-proxy était posé. Or c'est
depuis la session live que l'installateur télécharge paquets de langue et
mises à jour : sans le proxy, tout partait sur Internet au lieu de passer par
alpicache.

La pose du proxy devient une fonction, poser_apt_proxy, appelée en live avant
le relevé — seule exception au « rien n'est installé ici » — et reprise telle
quelle par configuration_apt sur le système installé. En live, un échec est
signalé sans arrêter le script : le relevé, qui donne l'heure de départ, passe
avant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:48:01 +02:00
Cédrix
4b56a7967d Lancer install.sh dès la session live, pour que le décompte démarre
La durée réelle d'une installation est l'écart entre les deux relevés d'une même
machine, horodatés par le serveur. Sans relevé en session live, il n'y a pas
d'heure de départ, et la seule chose qu'on mesure est la post-installation.
D'où la consigne : on lance install.sh dès le live.

Encore fallait-il qu'il s'y arrête. Il le faisait, mais mal, et le détail
comptait :

- la détection ne reposait que sur /cdrom/preseed/linuxmint.seed, le signe dont
  le relevé a démontré le 24/09 qu'il désigne aussi des machines installées —
  et s'il manque sur l'ISO du jour, c'est l'inverse qui se produit : le script
  installe des paquets dans un système vivant en mémoire, qui disparaîtra au
  redémarrage ;
- elle n'intervenait qu'au milieu de modif_systeme, après configuration_apt,
  donc après une première modification ;
- lancé sans sudo, il passait d'abord par personnalisation_utilisateur, puis la
  sortie en « exit 0 » de la relance était lue comme une réussite : le script
  annonçait « Installation terminée avec succès » et se supprimait lui-même.

La session live est donc écartée en tête de fichier, avant quoi que ce soit,
avec la détection éprouvée du relevé : racine en overlay ou squashfs, et
boot=casper sur la ligne du noyau. Le script lance le relevé — avec --check,
pour que le verdict s'affiche et qu'on ait le temps de le lire — dit que rien
n'a été installé et que le serveur a noté l'heure de départ, puis s'arrête sans
se supprimer.

Les cinq situations sont vérifiées, dont le piège du 24/09 : un /cdrom monté en
ext4 sur une machine installée reste une machine installée.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BssvzfDMeXVoUQHEcnavW7
2026-09-26 00:13:36 +02:00

View file

@ -21,6 +21,78 @@ if [ "$(id -u)" = "0" ] && [ -x "$(dirname "$0")/alpi-fiche.sh" ]; then
"$(dirname "$0")/alpi-fiche.sh" || true "$(dirname "$0")/alpi-fiche.sh" || true
fi fi
##################################################
# Une session live : relever, et ne rien installer
#
# On lance ce script dès la session live, avant même d'installer : c'est ce
# premier relevé qui donne au serveur l'heure de départ. La durée réelle d'une
# installation est l'écart entre les deux relevés d'une même machine, horodatés
# par le serveur — sans le premier, on ne mesure rien.
#
# Rien n'est installé ici. Le système live vit en mémoire et disparaîtra au
# redémarrage : y poser des paquets coûterait du temps et de la place, sans
# rien laisser. Le script s'arrête donc après le relevé, et se relance après
# l'installation.
#
# Une exception : le proxy APT. L'installateur télécharge lui aussi (paquets de
# langue, mises à jour), et c'est depuis la session live qu'il le fait. Sans
# auto-apt-proxy ici, tout part sur Internet au lieu de passer par alpicache.
# Avant le 26/09, c'est configuration_apt qui s'en chargeait, avant le test de
# session live ; l'arrêt anticipé l'avait fait disparaître.
#
# La détection est celle du relevé, éprouvée le 24/09/2026 : la racine montée
# en overlay ou squashfs, ce qu'aucun système installé ne fait, et « boot=casper »
# sur la ligne de commande du noyau. L'existence de /cdrom n'en fait pas partie :
# l'installateur de Mint en laisse un vide derrière lui, et s'y fier faisait
# prendre des machines installées pour des sessions live.
##################################################
en_session_live() {
findmnt -n -o FSTYPE / 2>/dev/null | grep -qE '^(overlay|aufs|squashfs)$' \
|| grep -qE '(^| )boot=(casper|live)( |$)' /proc/cmdline 2>/dev/null \
|| mountpoint -q /rofs 2>/dev/null \
|| { mountpoint -q /cdrom 2>/dev/null \
&& findmnt -n -o FSTYPE /cdrom 2>/dev/null | grep -qE '^(iso9660|squashfs)$'; }
}
# Partagée avec configuration_apt. Appelée en root, ou via « sudo » en live.
poser_apt_proxy() {
echo -e "==> Configuration de apt-proxy\n"
apt-get update -qq || return 1
DEBIAN_FRONTEND=noninteractive apt-get install -y auto-apt-proxy || return 1
echo 'Acquire::http::ProxyAutoDetect "auto-apt-proxy";' > /etc/apt/apt.conf.d/01proxy
}
if en_session_live; then
echo ""
echo "==> Session live détectée : seul le proxy APT sera installé."
echo ""
if [ "$(id -u)" = "0" ]; then
poser_apt_proxy
else
sudo bash -c "$(declare -f poser_apt_proxy); poser_apt_proxy"
fi || echo " Échec de l'installation d'auto-apt-proxy : l'installateur ira sur Internet."
echo ""
releve="$(dirname "$0")/alpi-fiche.sh"
if [ -x "$releve" ]; then
if [ "$(id -u)" = "0" ]; then
"$releve" --check || true
else
sudo "$releve" --check || true
fi
echo ""
echo "==> Le serveur a noté l'heure de départ de cette installation."
else
echo " Le relevé alpi-fiche.sh n'est pas à côté de ce script : le"
echo " décompte ne démarrera pas. Prenez-le sur le serveur :"
echo " wget http://alpicache.lan/alpi-fiche.sh && chmod +x alpi-fiche.sh"
fi
echo " Relancez ce script après l'installation, sur le système installé."
echo ""
exit 0
fi
# Script de post-installation pour Linux Mint 22.3 # Script de post-installation pour Linux Mint 22.3
# testé le 25/03/2026 # testé le 25/03/2026
@ -164,11 +236,10 @@ modif_systeme() {
configuration_apt configuration_apt
# Vérification Live USB # La session live est écartée en tête de script, avant toute modification :
if [ -f "/cdrom/preseed/linuxmint.seed" ]; then # ce test-ci arrivait après « configuration_apt », et ne reposait que sur un
echo "Mode Live détecté. Fin du script." # fichier de /cdrom — le signe dont on sait depuis le 24/09 qu'il désigne
exit 0 # aussi des machines installées.
fi
install_logiciels install_logiciels
config_firefox_fr config_firefox_fr
@ -348,10 +419,7 @@ configuration_apt() {
# Met à jour les langues pour toutes les applications Flatpak installées # Met à jour les langues pour toutes les applications Flatpak installées
flatpak update -y flatpak update -y
# Configuration de apt-proxy poser_apt_proxy || abort "Échec de l'installation d'auto-apt-proxy"
echo -e "==> Configuration de apt-proxy\n"
apt install -y auto-apt-proxy || abort "Échec de l'installation d'auto-apt-proxy"
echo 'Acquire::http::ProxyAutoDetect "auto-apt-proxy";' > /etc/apt/apt.conf.d/01proxy
} }