Utiliser Gentoo et Calculate Linux

Redémarrer rapidement Gentoo avec kexec-tools

Table des matières

Introduction



kexec est une fonctionnalité du noyau Linux qui permet de charger et d'exécuter un noyau Linux (le même ou une version différente) sans avoir besoin de redémarrer le système.
Ainsi, au lieu de passer par le processus de redémarrage classique, kexec permet d'éviter le cycle d'amorçage BIOS/UEFI, et chargeur d'amorçage GRUB ce qui accélère le processus.

Cet article a été testé avec OpenRC.

Prérequis



Dans le noyau, il faut s'assurer que la fonctionnalité est activée :

Code TEXT :
Processor type and features --->
 [*] kexec system call



Installation



Pour installer kexec, on installe le paquet sys-apps/kexec-tools tout simplement

Code BASH :
emerge -avq sys-apps/kexec-tools


Si le noyau est compressé en LZMA, vérifier que le USE FLAG lzma est défini.

Au besoin :

Code BASH :
echo "sys-apps/kexec-tools lzma" >> /etc/portage/package.use/custom



Configuration



Maintenant que kexec-tools est installé, il faut le configurer.

Pour l'activer, on démarre le service kexec :
Code BASH :
/etc/init.d/kexec start


On peut aussi utiliser la commande suivante :
Code BASH :
kexec -l /boot/vmlinuz-$(uname -r) --reuse-cmdline


Et si on utilise un initrd :
Code BASH :
kexec -l /boot/vmlinuz-$(uname -r) --initrd=/boot/initramfs-$(uname -r).img --reuse-cmdline


Pour redémarrer avec un nouveau kernel, il faut bien penser à utiliser le nouveau kernel.
Voici un exemple avec un 5.4.168-gentoo-adrien nouvellement installé au moment de la rédaction de cet article :
Code BASH :
kexec -l /boot/vmlinuz-5.4.168-gentoo-adrien --initrd=/boot/initramfs-5.4.168-gentoo-adrien.img --reuse-cmdline


L'option --reuse-cmdline permet de réutiliser la ligne de commande du noyau actuel pour le nouveau noyau. Cela peut être utile si on a des options spécifiques.

On n'activera pas le service kexec automatiquement au démarrage. Sinon, à chaque redémarrage, on redémarrera toujours sur le noyau actuellement exécuté !

Si on s'est trompé et qu'on souhaite décharger le noyau pour en charger un nouveau, on pourra utiliser cette commande :

Code BASH :
kexec -u



Utilisation



Pour redémarrer sur ce noyau précédemment chargé, on exécutera :

Code BASH :
kexec -e


Voici en image le résultat, on voit que le nouveau noyau est rechargé (Starting new kernel) et qu'on est pas passé par la phase de BIOS :

kexec_reboot

Cette page a été vue 14181 fois