Définir le noyau à charger au boot avec grub sous Almalinux
Après avoir installé et booté sur un noyau alternatif packagé comme elrepo, comment faire pour le désinstaller et repasser sur le noyau natif de la distribution ? Plus globalement comment dire à grub sur quel noyau on veut booter. Le test a été fait sous AlmaLinux9 mais peut être généralisé à la famille RedHat.
Pour installer le noyau elrepo (main line) et booter dessus :
1dnf --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2dnf install -y https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
3dnf --enablerepo=elrepo-kernel install kernel-ml
4reboot
Mais maintenant, alors que le noyau alternatif est chargé, il est impossible de le désinstaller :
1dnf --enablerepo=elrepo-kernel remove kernel-ml
La commande va nous interdire de retirer le noyau actif. Il faut donc forcer le boot sur un autre noyau.
La commande grubby permet de voir la liste des noyaux configurés ainsi que leur index :
1$ grubby --info=ALL
2index=0
3kernel="/boot/vmlinuz-6.19.11-1.el9.elrepo.x86_64"
4args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M"
5root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
6initrd="/boot/initramfs-6.19.11-1.el9.elrepo.x86_64.img"
7title="AlmaLinux (6.19.11-1.el9.elrepo.x86_64) 9.7 (Moss Jungle Cat)"
8id="f84a9d81b5a7418f89e204ac4b514c7a-6.19.11-1.el9.elrepo.x86_64"
9index=1
10kernel="/boot/vmlinuz-5.14.0-611.45.1.el9_7.x86_64"
11args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M"
12root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
13initrd="/boot/initramfs-5.14.0-611.45.1.el9_7.x86_64.img"
14title="AlmaLinux (5.14.0-611.45.1.el9_7.x86_64) 9.7 (Moss Jungle Cat)"
15id="f84a9d81b5a7418f89e204ac4b514c7a-5.14.0-611.45.1.el9_7.x86_64"
16index=2
17kernel="/boot/vmlinuz-5.14.0-611.41.1.el9_7.x86_64"
18args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M"
19root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
20initrd="/boot/initramfs-5.14.0-611.41.1.el9_7.x86_64.img"
21title="AlmaLinux (5.14.0-611.41.1.el9_7.x86_64) 9.7 (Moss Jungle Cat)"
22id="f84a9d81b5a7418f89e204ac4b514c7a-5.14.0-611.41.1.el9_7.x86_64"
23index=3
24kernel="/boot/vmlinuz-0-rescue-f84a9d81b5a7418f89e204ac4b514c7a"
25args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc"
26root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
27initrd="/boot/initramfs-0-rescue-f84a9d81b5a7418f89e204ac4b514c7a.img"
28title="AlmaLinux (0-rescue-f84a9d81b5a7418f89e204ac4b514c7a) 9.7 (Moss Jungle Cat)"
29id="f84a9d81b5a7418f89e204ac4b514c7a-0-rescue"
On veut forcer l'utilisation du kernel AlmaLinux (5.14.0-611.45.1.el9_7.x86_64) 9.7 (Moss Jungle Cat), qui a l'index 1, et on redémarre :
1$ grub2-set-default 1
2$ reboot
On vérifie :
1$ uname -r
25.14.0-611.45.1.el9_7.x86_64
C'est bon, on est bien repassé sur le kernel de la distribution, on peut maintenant désinstaller le noyau elrepo sans erreur avec la commande citée plus haut.
oui mais attention, on a défini de booter sur l'entrée 1 :
1$ cat /boot/grub2/grubenv | grep saved_entry
2saved_entry=1
Mais la liste des noyaux a aussi changé :
1$ grubby --info=ALL
2index=0
3kernel="/boot/vmlinuz-5.14.0-611.45.1.el9_7.x86_64"
4args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M"
5root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
6initrd="/boot/initramfs-5.14.0-611.45.1.el9_7.x86_64.img"
7title="AlmaLinux (5.14.0-611.45.1.el9_7.x86_64) 9.7 (Moss Jungle Cat)"
8id="f84a9d81b5a7418f89e204ac4b514c7a-5.14.0-611.45.1.el9_7.x86_64"
9index=1
10kernel="/boot/vmlinuz-5.14.0-611.41.1.el9_7.x86_64"
11args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M"
12root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
13initrd="/boot/initramfs-5.14.0-611.41.1.el9_7.x86_64.img"
14title="AlmaLinux (5.14.0-611.41.1.el9_7.x86_64) 9.7 (Moss Jungle Cat)"
15id="f84a9d81b5a7418f89e204ac4b514c7a-5.14.0-611.41.1.el9_7.x86_64"
16index=2
17kernel="/boot/vmlinuz-0-rescue-f84a9d81b5a7418f89e204ac4b514c7a"
18args="ro resume=UUID=a0df28d0-b8d1-4697-9e31-8a4853e2aabc"
19root="UUID=eb1f3ea4-5a0b-4f51-96dc-39c030c71aa9"
20initrd="/boot/initramfs-0-rescue-f84a9d81b5a7418f89e204ac4b514c7a.img"
21title="AlmaLinux (0-rescue-f84a9d81b5a7418f89e204ac4b514c7a) 9.7 (Moss Jungle Cat)"
22id="f84a9d81b5a7418f89e204ac4b514c7a-0-rescue"
Tout à l'heure, l'entrée 1 correspondait à 5.14.0-611.45.1.el9_7.x86_64 mais maintenant elle correspond à 5.14.0-611.41.1.el9_7.x86_64. Ça veut donc dire qu'au prochain reboot le kernel aura encore changé ?
Vérifions :
1$ reboot
2(... temps de reboot ...)
3$ uname -r
45.14.0-611.41.1.el9_7.x86_64
Effectivement
1$ grub2-set-default 0
2$ reboot
3(... temps de reboot ...)
4$ uname -r
55.14.0-611.45.1.el9_7.x86_64
C'est bon, on est bien repassé à l'entrée 0 et avec le dernier kernel natif de la distribution. Quand de nouvelles mises à jour de kernel se font par la distribution, elles prennent l'index 0, l'index 1 et les suivants correspondent aux versions précédentes (on peut paramétrer le nombre de versions à garder).