Ne pas régénérer GRUB quand il est déjà configuré
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) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XLTJ8DoPfvhZMK5Yxtrfx2
This commit is contained in:
parent
1c19aee031
commit
a25488101e
1 changed files with 25 additions and 4 deletions
|
|
@ -337,11 +337,32 @@ configuration_apt() {
|
||||||
# GRUB : sélection automatique de la dernière entrée utilisée #
|
# GRUB : sélection automatique de la dernière entrée utilisée #
|
||||||
###############################################################
|
###############################################################
|
||||||
modif_grub() {
|
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"
|
echo -e "==> Modification de GRUB\n"
|
||||||
# On comment la ligne "GRUB_DEFAULT=0" et on ajoute les "bonnes" options
|
# On commente la ligne d'origine, puis on ajoute les nôtres si elles
|
||||||
sed -i '/^GRUB_DEFAULT=0/ i#GRUB_DEFAULT=0\
|
# manquent. Les ajouter plutôt que les insérer règle deux choses : le
|
||||||
GRUB_DEFAULT=saved\
|
# fichier ne se retrouve plus avec des lignes indentées — GRUB les accepte,
|
||||||
GRUB_SAVEDEFAULT=true' /etc/default/grub
|
# 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
|
# On met à jour GRUB
|
||||||
update-grub
|
update-grub
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue