Redémarrer rapidement Fedora ou CentOS avec kexec-tools

Cet article a été mis à jour, vous consultez ici une archive de cet article!

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.


Installation



Si cela n'est pas encore fait, installer le paquet kexec-tools :

Code BASH :
yum install kexec-tools


Et voila :)


Paramétrer le noyau



Par défaut, quand vous redémarrerez la machine avec la commande

Code BASH :
reboot


kexec-tools
n'entrera pas en action.

Il faut exécuter la commande suivante (en root) pour fabriquer notre noyau kexec-tools :

Code BASH :
kexec -l /boot/vmlinuz-$kernel --initrd=/boot/initramfs-$kernel.img --reuse-cmdline


$kernel correspond au noyau utilisé. Pour plus d'infos sur les noms de fichiers :

Code BASH :
ls /boot


Il faut exécuter cette commande après chaque nouvelle installation de noyau.


Pour plus de simplicité, un script !



Avouons le, taper cette commande, il faut s'en rappeler.

Je vous propose ce script à exécuter après une install de nouvau kernel :

Code BASH :
#! /bin/bash
kernel=$(rpm -qa --last | grep kernel-3 | head -n1 | cut -d" " -f1 | sed -e 's/kernel-//')
if [ $UID -ne 0 ]
then
    echo "Il est nécessaire de lancer le script en root !!!"
else
    echo "La commande suivante sera lancée pour le noyau $kernel :"
    echo "kexec -l /boot/vmlinuz-$kernel --initrd=/boot/initramfs-$kernel.img --reuse-cmdline"
    read -p "Appuyer sur entrée pour lancer la commande kexec-tools ? (Ctrl+C pour annuler)"
    kexec -l /boot/vmlinuz-$kernel --initrd=/boot/initramfs-$kernel.img --reuse-cmdline
fi



Redémarrer grâce à kexec-tools



Par défaut, la commande

Code BASH :
reboot


a été substituée par celle appelant le noyau créé par kexec-tools.

En effet, si on fait un reboot après une mise à jour du noyau, ce même noyau sera relancé.

Si on veut redémarrer classiquement le système en repassant par le BIOS et GRUB, utiliser :

Code BASH :
coldreboot


Et voila :magic: