diff --git a/poste/install.sh b/poste/install.sh index 8c6f4e8..d7e3a9f 100644 --- a/poste/install.sh +++ b/poste/install.sh @@ -21,6 +21,78 @@ if [ "$(id -u)" = "0" ] && [ -x "$(dirname "$0")/alpi-fiche.sh" ]; then "$(dirname "$0")/alpi-fiche.sh" || true 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 # testé le 25/03/2026 @@ -163,13 +235,12 @@ opti_apt() { modif_systeme() { configuration_apt - - # Vérification Live USB - if [ -f "/cdrom/preseed/linuxmint.seed" ]; then - echo "Mode Live détecté. Fin du script." - exit 0 - fi - + + # La session live est écartée en tête de script, avant toute modification : + # ce test-ci arrivait après « configuration_apt », et ne reposait que sur un + # fichier de /cdrom — le signe dont on sait depuis le 24/09 qu'il désigne + # aussi des machines installées. + install_logiciels config_firefox_fr config_timeshift_desactive @@ -348,11 +419,8 @@ configuration_apt() { # Met à jour les langues pour toutes les applications Flatpak installées flatpak update -y - # Configuration de 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 - + poser_apt_proxy || abort "Échec de l'installation d'auto-apt-proxy" + } ###############################################################