Utiliser Gentoo et Calculate Linux

Redémarrer rapidement Gentoo avec kexec-tools

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction




Pour une raison X ou Y, vous voulez redémarrer votre système, mais vous y trouvez trop long ?

Kexec tools est la pour vous :cbon:

En effet, à la fin de l’arrêt du système, le noyau est immédiatement relancé.

On saute l'étape du BIOS et du GRUB, ce qui pour un serveur physique évite la batterie de tests effectuée à l'allumage.

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) --reuse-cmdline


Il se peut que vous ayez le même message d'erreur que moi si /boot n'est pas sur une partition séparée. Cela n'empêche pas le fonctionnement de l'outil.

Pour démarrer kexec automatiquement au démarrage, on active le service (Attention, si MàJ du kernel on redémarre sur l'actuel !) :

Code BASH :
rc-update add kexec boot




Utilisation




Pour redémarrer et utiliser kexec (s'il est lancé), il faut simplement utiliser la commande reboot ou le redémarrage proposé par l'éventuelle interface graphique lancée :

Code BASH :
reboot


ou

Code BASH :
kexec -e


Pour ne pas redémarrer avec kexec (procéder à un redémarrage "classique", il suffit de décharger le noyau :

Code BASH :
kexec -u


Ou si le service a été lancé, le stopper et redémarrer :

Code BASH :
/etc/init.d/kexec stop


Code BASH :
reboot


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