Linux — utilisation avancée et administration · Étape 17

Comprends GRUB2 sans casser le démarrage

Distingue sources et fichier généré, analyse une entrée de menu et valide une copie avant toute modification réelle.

Durée indicative · ~1 h 30Niveau intermédiairePrérequis conseillé · Leçon 16 — démarrage, noyau et initramfsPratique · TP
L’idée reçue

« Pour modifier GRUB, il suffit d’éditer directement /boot/grub/grub.cfg. »

Ce fichier est généralement généré. Une modification directe peut être écrasée au prochain update et rend le changement difficile à reproduire.

01Identifie les emplacements

test -f /etc/default/grub && sed -n '1,80p' /etc/default/grub
find /boot -maxdepth 3 -type f ( -name 'grub.cfg' -o -name 'grubenv' ) -print 2>/dev/null
ls -ld /sys/firmware/efi 2>/dev/null || true

Sur Debian/Ubuntu, les sources incluent généralement /etc/default/grub et les scripts de /etc/grub.d. Sur les familles RHEL, le chemin généré dépend notamment du mode BIOS ou UEFI.

02Travaille uniquement sur la copie du lab

export LAB="/tmp/soria-linux-systemd-$USER"
cp "$LAB/grub/default-grub.sample" "$LAB/grub/default-grub.work"
cp "$LAB/grub/grub.cfg.sample" "$LAB/grub/grub.cfg.work"
diff -u "$LAB/grub/grub.cfg.sample" "$LAB/grub/grub.cfg.work"

03Lis une entrée GRUB

sed -n '1,80p' "$LAB/grub/grub.cfg.work"
grep -nE '^(menuentry|[[:space:]]*(linux|linuxefi|initrd|initrdefi))' "$LAB/grub/grub.cfg.work"
Directive
Rôle
Risque d’erreur
menuentry
définir une entrée visible
syntaxe ou accolade incorrecte
linux/linuxefi
charger noyau et paramètres
mauvaise racine ou option
initrd/initrdefi
charger l’initramfs
image absente ou incohérente

04Teste une modification contrôlée

sed -i 's/ ro quiet/ ro quiet systemd.unit=multi-user.target/' "$LAB/grub/grub.cfg.work"
diff -u "$LAB/grub/grub.cfg.sample" "$LAB/grub/grub.cfg.work" || true

La modification reste dans une copie. systemd.unit=multi-user.target illustre un paramètre de boot temporaire ; il ne doit pas être appliqué sans comprendre son effet.

05Valide avant génération

command -v grub-script-check
grub-script-check "$LAB/grub/grub.cfg.work"

Si l’outil n’est pas installé, conserve la copie et effectue la validation sur une VM de laboratoire équipée de GRUB2.

06Comprends la génération réelle

Les commandes usuelles diffèrent selon la distribution :

command -v update-grub || true
command -v grub-mkconfig || true
command -v grub2-mkconfig || true

Ne les exécute qu’après avoir identifié le chemin de sortie correct, créé un snapshot, vérifié l’accès console et sauvegardé les sources. Le lab n’exécute aucune génération réelle.

07Prépare le rollback

Challenge autonome

Rédige une fiche de changement GRUB

Inclue objectif, source modifiée, fichier généré attendu, commande de validation, snapshot, accès console, test au prochain boot, entrée précédente conservée et procédure de retour arrière.

Ce que tu retiens

GRUB se gère à partir de sources reproductibles. Le fichier généré se lit et se valide, mais ne doit pas devenir la source de vérité. Tout changement de boot exige une voie de récupération indépendante.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.