Si vous intervenez sur un serveur distant et que vous devez compiler ou installer un nouveau noyau, il est prudent de prendre ses précautions et de configurer Grub pour qu’en cas de kernel panic, il ne reste pas bloqué sur la séquence de démarrage du noyau…
Il est possible de configurer Grub pour qu’il démarre sur le nouveau kernel et qu’en cas de problème, il redémarre automatiquement sur l’ancien kernel fonctionnel.
Ce guide concerne la version 2 de Grub et a été testé sous Debian, il devrait également fonctionner pour ses dérivés (Ubuntu, Xandros, etc.). Vous pouvez vérifier votre version de Grub avec la commande suivante :
grub-install -v
Si la commande retourne « GNU GRUB 1.98 » ou plus, vous utilisez Grub 2, si elle retourne « 0.97 », vous utilisez Grub Legacy.
Une fois que votre nouveau noyau est compilé et installé, il faut éditer le fichier /etc/default/grub et le configurer comme suit.
On ajoute l’option « panic=5 » à la ligne « GRUB_CMDLINE_LINUX_DEFAULT » pour redémarrer le kernel au bout de 5 secondes s’il y a un problème lors du démarrage :
GRUB_CMDLINE_LINUX_DEFAULT="quiet panic=5"
On remplace « GRUB_DEFAULT=0 » par « GRUB_DEFAULT=saved ». Cela permet à Grub de ne démarrer sur le nouveau kernel qu’une seule fois. En cas de kernel panic, la machine pourra redémarrer sur l’ancien noyau :
GRUB_DEFAULT=saved
Lorsque les deux modifications du fichier /etc/default/grub on été effectuées et sauvegardées, on récupère le nom du kernel actuel (celui dont on est sûr du bon fonctionnement) et de celui que l’on vient de compiler :
cat /boot/grub/grub.cfg --> Debian GNU/Linux, avec Linux 3.2.0-4-amd64 --> Debian GNU/Linux, avec Linux 3.9.5-vs2.3.6.5revised-kernel
On définit l’ancien kernel par défaut :
grub-set-default "Debian GNU/Linux, avec Linux 3.2.0-4-amd64"
On configure Grub pour qu’il redémarre une fois sur le nouveau kernel :
grub-reboot "Debian GNU/Linux, avec Linux 3.9.5-vs2.3.6.5revised-kernel"
On régénère le fichier /boot/grub/grub.cfg :
update-grub
On redémarre le serveur :
reboot
On vérifie que la machine a bien redémarré sur son nouveau noyau :
uname -r
Si tout est bon, on définit le nouveau noyau par défaut :
grub-set-default "Debian GNU/Linux, avec Linux 3.9.5-vs2.3.6.5revised-kernel"