GRUB
À quoi il sert
GRUB 2, projet GNU, est le programme que lance le firmware (BIOS ou UEFI, via shim quand Secure Boot est actif). Il affiche éventuellement un menu, charge en mémoire un noyau (/boot/vmlinuz-<version>) et son initramfs, leur transmet une ligne de commande (racine, console, paramètres du noyau et de systemd), puis disparaît. Sa configuration, /boot/grub/grub.cfg, est générée par grub-mkconfig (raccourci update-grub sur Debian et Ubuntu) à partir des variables de /etc/default/grub et /etc/default/grub.d/*.cfg et des scripts de /etc/grub.d/. Les paquets de noyau régénèrent ce fichier à chaque installation ou suppression.
Quand le choisir
C'est le chargeur par défaut de Debian, d'Ubuntu et de Red Hat, et des images cloud de ces distributions : il faut savoir modifier durablement la ligne de commande du noyau (console série, paramètres d'audit, panic=) et se servir de son menu pour démarrer un noyau précédent ou une cible de secours. Les alternatives existent (systemd-boot, démarrage direct d'une image noyau unifiée par le firmware), mais restent rares sur les serveurs de ces distributions.
Points d'attention
- On n'édite jamais
grub.cfg: la prochaine mise à jour du noyau l'écrase. Passez par un fichier de/etc/default/grub.d/(par exemple90-lyneko.cfg), puissudo update-grub. - Les fichiers de
/etc/default/grub.d/sont lus après/etc/default/grubet le remplacent : sur une image cloud,50-cloudimg-settings.cfgredéfinit déjà certaines variables. GRUB_CMDLINE_LINUXs'applique à toutes les entrées, mode de secours compris ;GRUB_CMDLINE_LINUX_DEFAULTaux seules entrées normales./proc/cmdlineest la seule vérité sur ce que le noyau en cours a reçu.- En cloud, la console série de l'hébergeur ne montre le menu et les messages que si
GRUB_TERMINALet les paramètresconsole=incluent le port série : vérifiez-le avant d'en avoir besoin. - Qui peut éditer une entrée du menu peut obtenir un shell root (
init=/bin/bash) : protégez l'accès à la console, et envisagez un mot de passe GRUB (grub-mkpasswd-pbkdf2), recommandé par le guide BP-028 de l'ANSSI. - Une invite
grub rescue>signifie que GRUB ne trouve plus ses modules ou sa configuration :set prefix,insmod normal, puisgrub-installetupdate-grubdepuis un système de secours, dans un chroot qui monte/dev,/procet/sys.
Par où commencer
La leçon Le démarrage, du firmware à systemd du cours Linux : administration système, qui lit et modifie la configuration de GRUB, puis la leçon Dépanner un serveur qui ne démarre plus, qui se sert du menu et répare un GRUB qui ne trouve plus ses fichiers. Puis le manuel de GRUB, en particulier la section Simple configuration handling.