Configurer l'image de démarrage par défaut dans Grub2
Aujourd'hui, j'ai mis à jour mon serveur Fedora depuis la version 33
vers 38
mais tout ne s'est pas passé comme prévu.
J'ai OpenZFS d'intallé pour gérer mon stockage et la version actuelle de OpenZFS (2.2.2) n'est pas compatible avec le dernier kernel (6.7
). J'étais coincé avec mon nouveau kernel et incapable d'accéder à mes données.
Pour référence, voici le message d'erreur que j'obtenais :
Output :
Et :
Output :
Troubleshooting
La première chose que j'ai faite a été de vérifier quelle version de kernel est supportée par la dernière version de OpenZFS (2.2.2) et j'ai découvert que la dernière version supportée de kernel est 6.6
. Je l'ai manqué d'une version mineure.
Ce n'est pas grave, je peux juste installer le kernel précédent et démarrer dessus, non ?
Voyons quels sont les noyaux disponibles :
Output :
Installer le noyau précédent
Ce n'est pas vraiment ce à quoi je m'attendais. J'espérais voir la version précédente kernel 6.6
mais elle n'est pas là.
Essayons d'installer la version 6.2.9
et voyons ce qui se passe :
Redémarrons et voyons si ça fonctionne.
Output :
Après avoir redémarré, je démarrais toujours avec le dernier kernel 6.7
.
Branchons un écran et voyons ce qui se passe pendant le processus de démarrage.
Grub2
Pendant le processus de démarrage, j'ai obtenu le menu Grub2 et j'ai pu sélectionner la version précédente kernel 6.2.9
mais ce n'était pas l'image de démarrage par défaut. Je dois la sélectionner manuellement à chaque fois que je redémarre le serveur.
Résolution des problèmes (à nouveau)
Jetons un coup d'oeil à la configuration de Grub2 pour voir quelle est la configuration par défaut :
Output :
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
Hum. GRUB_DEFAULT=saved
. On dirait que l'image de démarrage par défaut est sauvegardée quelque part. Jetons un coup d'oeil au fichier de configuration de Grub2 :
Output :
set default="${saved_entry}"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
function savedefault {
saved_entry="${chosen}"
save_env saved_entry
Le fichier de configuration de grub2 est assez complexe et je ne veux pas y toucher, mais il semble qu'il définisse l'image de démarrage par défaut dans la variable saved_entry
.
J'ai découvert qu'il existe un binaire pour travailler avec les variables d'environnement de grub2 : grub2-editenv
.
Output :
saved_entry=8bfb6e63623d4ee6aab1634ebafdd5d4-5.6.15-200.fc31.x86_64
kernelopts=root=/dev/mapper/fedora_nubs-root ro resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet systemd.unified_cgroup_hierarchy=0
boot_success=0
boot_indeterminate=1
5.6.15
! C'est une vieille version du noyau. Je suppose que ma précédente mise à jour depuis Fedora 31
n'était pas aussi propre que je le pensais.
Comment je peux changer l'image de démarrage par défaut ? Et quelle est cette longue chaîne hexadécimale au début de la variable saved_entry
?
Changer l'image de démarrage par défaut
Nous devons d'abord trouver la liste des images de démarrage disponibles. J'ai trouvé un autre binaire pratique pour faire cela grubby
.
Output :
index=0
kernel="/boot/vmlinuz-6.7.3-100.fc38.x86_64"
args="ro resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet systemd.unified_cgroup_hierarchy=0"
root="/dev/mapper/fedora_nubs-root"
initrd="/boot/initramfs-6.7.3-100.fc38.x86_64.img"
title="Fedora Linux (6.7.3-100.fc38.x86_64) 38 (Server Edition)"
id="8bfb6e63623d4ee6aab1634ebafdd5d4-6.7.3-100.fc38.x86_64"
index=1
kernel="/boot/vmlinuz-6.5.12-100.fc37.x86_64"
args="ro resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet systemd.unified_cgroup_hierarchy=0"
root="/dev/mapper/fedora_nubs-root"
initrd="/boot/initramfs-6.5.12-100.fc37.x86_64.img"
title="Fedora Linux (6.5.12-100.fc37.x86_64) 37 (Server Edition)"
id="8bfb6e63623d4ee6aab1634ebafdd5d4-6.5.12-100.fc37.x86_64"
index=2
kernel="/boot/vmlinuz-6.2.9-300.fc38.x86_64"
args="ro resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet systemd.unified_cgroup_hierarchy=0"
root="/dev/mapper/fedora_nubs-root"
initrd="/boot/initramfs-6.2.9-300.fc38.x86_64.img"
title="Fedora Linux (6.2.9-300.fc38.x86_64) 38 (Server Edition)"
id="8bfb6e63623d4ee6aab1634ebafdd5d4-6.2.9-300.fc38.x86_64"
index=3
kernel="/boot/vmlinuz-0-rescue-8bfb6e63623d4ee6aab1634ebafdd5d4"
args="ro resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet systemd.unified_cgroup_hierarchy=0"
root="/dev/mapper/fedora_nubs-root"
initrd="/boot/initramfs-0-rescue-8bfb6e63623d4ee6aab1634ebafdd5d4.img"
title="Fedora (0-rescue-8bfb6e63623d4ee6aab1634ebafdd5d4) 30 (Thirty)"
id="8bfb6e63623d4ee6aab1634ebafdd5d4-0-rescue"
Attendez un peu. La liste de sortie est vraiment similaire à ce que j'ai sur mon moniteur pendant le processus de démarrage. Et le champ id
a le même format que la variable saved_entry
.
Je suppose que si je change la variable saved_entry
par l'id
de l'image de démarrage sur laquelle je veux démarrer, cela devrait fonctionner.
Vérification de la variable saved_entry
:
Output :
saved_entry=8bfb6e63623d4ee6aab1634ebafdd5d4-6.2.9-300.fc38.x86_64
kernelopts=root=/dev/mapper/fedora_nubs-root ro resume=/dev/mapper/fedora_nubs-swap rd.lvm.lv=fedora_nubs/root rd.lvm.lv=fedora_nubs/swap rhgb quiet systemd.unified_cgroup_hierarchy=0
boot_success=1
boot_indeterminate=1
Ça a l'air pas mal. Il est temps de procéder au test final. Redémarrage du serveur...
Je vois le menu Grub2 et l'image sélectionnée par défaut est celle que j'ai définie. Ne bougez pas ... 5 ... 4 ... 3 ... 2 ... 1 ... 0.
Ca démarre !
Dernière vérification :
Output :
Et mon ZFS ?
Output :
Argh. J'ai oublié de réinstaller les modules OpenZFS pour le nouveau kernel. Faisons ça.
Output :
C'est vivant !
Conclusion
J'espère que ce guide vous aidera à configurer l'image de démarrage par défaut dans Grub2. C'est une tâche simple mais qui peut s'avérer délicate si vous ne savez pas où chercher. Soyez également très prudent lorsque vous jouez avec Grub2, vous pouvez facilement casser votre système. Ayez toujours un plan de secours (je ne l'ai pas fait ... YOLO).