LINUX:Kernel
But
Le Kernel ou noyau de Linux est le point de démarrage du système Linux. Il assure l'interface entre le matériel et les programmes que vous lancez.
Cet article reprend quelques problèmes rencontrés.
Localisation
Sur une machine Linux, plusieurs noyaux cohabitent. C'est lors du processus de démarrage que le choix entre ceux-ci peut se faire dans l'écran géré par GRUB2.
Ces noyaux se trouvent dans la partition "/boot". Anciennement cette partition était de 500MB. Au vu de la croissance de la taille des noyaux, elle a dû passer à 1GB. Et elle arrive à sa limite. Il faudrait passer à 2GB.
Nombre de Kernels
Par défaut ce nombre est de trois. Mais si on a un problème de place disque dans cette partition "/boot", on peut le restreindre à deux, nombre minimum.
En premier lieu, on édite le fichier de configuration du processus des installations des paquets "/etc/dnf/dnf.conf" donc voici le contenu modifié:
[main] installonly_limit=2
Note: Le fichier "/etc/dnf/dnf5.conf" ne fonctionne pas.
A l'avenir, lors de l'ajout d'un nouveau Kernel, deux anciens seront supprimés.
Si on veut directement restreindre ce nombre, on peut exécuter la commande suivante:
dnf remove --oldinstallonly
Cette commande supprimera le kernel le plus ancien non utilisé. Je conseille que le dernier Kernel soit celui en exécution pour qu'effectivement ce soit le plus vieux qui soit éliminé.
Kernel Rescue
Le Kernel Rescue est la pour démarrer la machine en mode console afin de régler des problèmes cruciaux. Il est proposé lors de la séquence de démarrage de GRUB.
Il est généré automatiquement lors de l'installation de la machine. Et à la longue, il reprend une vieille version du Kernel.
Pour s'en assurer, on démarre sous ce Kernel Rescue et on affiche son n°:
uname -a
Ou une autre méthode moins précise est de consulter un fichier du système:
grep ^title /boot/loader/entries/*rescue*
Dans mon cas, je me suis aperçu qu'il était relatif au Kernel de Fedora 35 or je suis actuellement sous Fedora 44.
J'ai donc décidé de le régénérer.
La première étape est de s'assurer que le logiciel suivant est installé:
dnf install dracut-config-rescue
Il l'est normalement.
En seconde étape, on efface les composantes de ce Kernel Rescue qui portent dans leur nom, le terme "rescue" sous la partition "/boot".
rm /boot/vmlinux*rescue* rm /boot/initramfs*rescue* rm /boot/loader/entries/*rescue.conf
Le dernier est facultatif.
A ce stade deux solutions sont possibles:
- soit vous attendez qu'une mise à jour comprenne un nouveau Kernel. Dans ce cas, le Kernel Rescue sera régénéré sur base de ce nouveau Kernel. Mais vous devrez être sûr que vous pourrez démarrer sans problème avec ce nouveau Kernel. Notons que je n'ai jamais eu ce souci,
- soit vous forcez sa recréation.
Dans le second cas, on rentre la commande suivante:
kernel-install add "$(uname -r)" "/lib/modules/$(uname -r)/vmlinuz"
Comme vous le remarquez, le Kernel Rescue sera basé sur celui qui est actif à ce moment et il n'est pas nécessairement le dernier.
Par la même occasion, le Kernel courant sera aussi régénéré.
Je conseille que ce soit le Kernel le plus récent qui soit actif lors de cette manipulation. Car lors de cette manipulation, le Kernel par défaut, lors de la séquence de démarrage du GRUB, deviendra ce Kernel actuellement actif. Et un redémarrage ne vous fera pas passer automatiquement au Kernel le plus récent, ce qui est normalement le cas.
Si vous êtes dans cette situation d'un Kernel ancien actif, pour repasser à un autre Kernel par défaut lors d'un redémarrage, il faut procéder à ce changement.
Le fichier concerné est "/boot/grub2/grubenv" mais il ne peut être édité directement. Il faut utiliser la commande spéciale "grubby". En le consultant, vous y découvrirez la version du Kernel utilisé par défaut.
Pour afficher tous les démarrages disponibles dans l'écran de GBUB, on lance la commande suivante:
grubby --info=ALL
La commande:
ls /boot/vmlinuz*
permet de voir les Kernels disponibles.
La commande suivante permet de spécifier le Kernel par défaut:
grubby --set-default /boot/vmlinuz-7.0.8-200.fc44.x86_64
Ici on a choisit le Kernel "/boot/vmlinuz-7.0.8-200.fc44.x86_64". A adapter selon votre cas.