Regénérer avec dracut les entrées rescue du noyau Linux
Table des matières
Lorsque le système est installé pour la première fois, on a une entrée rescue qui est créée en plus des différents noyaux :
Cette entrée 0-rescue est conçue pour démarrer le système avec une version spéciale du noyau et une image initramfs qui sont optimisées pour la récupération. Cela permet aux sysadmins de démarrer dans un environnement minimal, avec plein d'outils, même si le système principal ne parvient pas à démarrer correctement.
Par exemple, sur mon système Fedora Linux 41, on constate que le initramfs "rescue" généré pour le noyau 6.11.8 est bien plus volumineux que le initramfs "classique" :
Cet initramfs (et son noyau associé) ne sont pas regénérés en mode rescue lorsque le noyau est mis à jour.
Lorsqu'on met à niveau notre système (RHEL, Fedora Linux, ou autre distribution), il est nécessaire de penser à regénérer de temps en temps le noyau et le initramfs en mode rescue. Cela permet de l'avoir à jour.
Ces manipulations fonctionnent aussi bien pour Fedora Linux que pour Red Hat Enterprise Linux (et ses dérivées telles qu'Alma Linux)
Cet article s'applique aux disitributions Linux utilisant dracut pour générer les images initramfs.
Il faudra supprimer le noyau rescue actuel ainsi que son initramfs :
Il se peut que la commande nécessaire ne soit pas livrée avec le paquet dracut (c'est le cas sur RHEL, Fedora et dérivées). Dans ce cas, installer le paquet dracut-config-rescue :
Après avoir démarré sur un kernel fonctionnel, on peut repérer sur quoi GRUB bootait en mode rescue :
Ce qui renvoie chez moi une entrée vieille de Fedora 30 :
On va générer un nouveau kernel et son image initrd associée :
On peut vérifier que le kernel est bien regénéré ainsi que son initrd :
Ce qui renvoie :
On pourra vérifier que les entrées de GRUB sont à jour maintenant :
Ce qui renvoie chez moi une entrée pour ma Fedora 41 actuelle :
On pourra inspecter le contenu de l'initrd avec la commande suivante et voir que le noyau et les modules inclus dans cette image sont bien les actuels :
Introduction
Lorsque le système est installé pour la première fois, on a une entrée rescue qui est créée en plus des différents noyaux :
Cette entrée 0-rescue est conçue pour démarrer le système avec une version spéciale du noyau et une image initramfs qui sont optimisées pour la récupération. Cela permet aux sysadmins de démarrer dans un environnement minimal, avec plein d'outils, même si le système principal ne parvient pas à démarrer correctement.
Par exemple, sur mon système Fedora Linux 41, on constate que le initramfs "rescue" généré pour le noyau 6.11.8 est bien plus volumineux que le initramfs "classique" :
Code TEXT :
-rw-------. 1 root root 160214517 13 mars 2024 initramfs-0-rescue-5d9f7c30b5e7463fa6e43eef4bb4cdad.img -rw------- 1 root root 36084561 27 nov. 11:01 initramfs-6.11.8-300.fc41.x86_64.img
Cet initramfs (et son noyau associé) ne sont pas regénérés en mode rescue lorsque le noyau est mis à jour.
Lorsqu'on met à niveau notre système (RHEL, Fedora Linux, ou autre distribution), il est nécessaire de penser à regénérer de temps en temps le noyau et le initramfs en mode rescue. Cela permet de l'avoir à jour.
Ces manipulations fonctionnent aussi bien pour Fedora Linux que pour Red Hat Enterprise Linux (et ses dérivées telles qu'Alma Linux)
Prérequis
Cet article s'applique aux disitributions Linux utilisant dracut pour générer les images initramfs.
Il faudra supprimer le noyau rescue actuel ainsi que son initramfs :
Code BASH :
rm /boot/vmlinuz-*rescue* /boot/initramfs-*rescue*
Il se peut que la commande nécessaire ne soit pas livrée avec le paquet dracut (c'est le cas sur RHEL, Fedora et dérivées). Dans ce cas, installer le paquet dracut-config-rescue :
Code BASH :
dnf install dracut-config-rescue
Regénération de l'image rescue
Après avoir démarré sur un kernel fonctionnel, on peut repérer sur quoi GRUB bootait en mode rescue :
Code BASH :
grep ^title /boot/loader/entries/*rescue*
Ce qui renvoie chez moi une entrée vieille de Fedora 30 :
Code TEXT :
title Fedora (0-rescue-331ba5795dcb4a0c84115c80b34d1098) 30 (Workstation Edition)
On va générer un nouveau kernel et son image initrd associée :
Code BASH :
/usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"
On peut vérifier que le kernel est bien regénéré ainsi que son initrd :
Code BASH :
ls -lh /boot/*rescue*
Ce qui renvoie :
Code TEXT :
-rw-------. 1 root root 167M 4 nov. 17:05 /boot/initramfs-0-rescue-331ba5795dcb4a0c84115c80b34d1098.img -rwxr-xr-x. 1 root root 16M 4 nov. 17:04 /boot/vmlinuz-0-rescue-331ba5795dcb4a0c84115c80b34d1098
On pourra vérifier que les entrées de GRUB sont à jour maintenant :
Code BASH :
grep ^title /boot/loader/entries/*rescue*
Ce qui renvoie chez moi une entrée pour ma Fedora 41 actuelle :
Code TEXT :
title Fedora Linux (0-rescue-331ba5795dcb4a0c84115c80b34d1098) 41 (Workstation Edition)
On pourra inspecter le contenu de l'initrd avec la commande suivante et voir que le noyau et les modules inclus dans cette image sont bien les actuels :
Code BASH :
lsinitrd /boot/initramfs-*rescue*.img | grep "$(uname -r)"