From 369a7f2b82ee0bde97743af620f13aa0437a3ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Thu, 24 Sep 2026 22:34:39 +0200 Subject: [PATCH] =?UTF-8?q?Ne=20pas=20r=C3=A9g=C3=A9n=C3=A9rer=20GRUB=20qu?= =?UTF-8?q?and=20il=20est=20d=C3=A9j=C3=A0=20configur=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update-grub lance os-prober, qui sonde toutes les partitions à la recherche d'autres systèmes, puis régénère la configuration entière : vingt à trente secondes par machine, payées jusqu'ici même lorsqu'il n'y avait rien à changer. Sur une install party de quinze machines, cela se voit. La fonction vérifie donc d'abord, et sort si les deux réglages sont là. Deux défauts corrigés au passage. Le sed insérait ses lignes avec l'indentation du script : /etc/default/grub se retrouvait avec des directives décalées, que GRUB accepte mais qui trompent la lecture quand on vient déboguer. Et il ne faisait rien du tout si « GRUB_DEFAULT=0 » avait disparu, ce qui arrive dès qu'un autre outil est passé avant nous — les deux lignes sont désormais ajoutées si elles manquent, plutôt qu'insérées avant une ligne qui peut ne plus exister. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01XLTJ8DoPfvhZMK5Yxtrfx2 --- code/linux/linux-mint/install.sh | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/code/linux/linux-mint/install.sh b/code/linux/linux-mint/install.sh index bb33d49..c67e8bc 100644 --- a/code/linux/linux-mint/install.sh +++ b/code/linux/linux-mint/install.sh @@ -337,11 +337,32 @@ configuration_apt() { # GRUB : sélection automatique de la dernière entrée utilisée # ############################################################### modif_grub() { + # Rien à faire si c'est déjà en place. + # + # update-grub lance os-prober, qui part sonder toutes les partitions de la + # machine à la recherche d'autres systèmes, puis régénère la configuration + # entière : vingt à trente secondes qu'on ne rattrape pas, et qu'on payait + # jusqu'ici à chaque exécution, y compris quand il n'y avait rien à + # changer. Sur une install party de quinze machines, cela se voit. + if grep -q '^GRUB_DEFAULT=saved' /etc/default/grub \ + && grep -q '^GRUB_SAVEDEFAULT=true' /etc/default/grub; then + echo -e "==> GRUB est déjà configuré, rien à changer\n" + return 0 + fi + echo -e "==> Modification de GRUB\n" - # On comment la ligne "GRUB_DEFAULT=0" et on ajoute les "bonnes" options - sed -i '/^GRUB_DEFAULT=0/ i#GRUB_DEFAULT=0\ - GRUB_DEFAULT=saved\ - GRUB_SAVEDEFAULT=true' /etc/default/grub + # On commente la ligne d'origine, puis on ajoute les nôtres si elles + # manquent. Les ajouter plutôt que les insérer règle deux choses : le + # fichier ne se retrouve plus avec des lignes indentées — GRUB les accepte, + # mais elles trompent la lecture quand on vient déboguer —, et la fonction + # fait toujours son travail lorsque « GRUB_DEFAULT=0 » a disparu, ce qui + # arrive dès qu'un autre outil est passé avant nous. + sed -i 's/^GRUB_DEFAULT=0/#&/' /etc/default/grub + grep -q '^GRUB_DEFAULT=saved' /etc/default/grub \ + || echo 'GRUB_DEFAULT=saved' >> /etc/default/grub + grep -q '^GRUB_SAVEDEFAULT=true' /etc/default/grub \ + || echo 'GRUB_SAVEDEFAULT=true' >> /etc/default/grub + # On met à jour GRUB update-grub } -- 2.45.2