« kexec » Permet de charger un noyau Linux depuis un système en fonctionnement (redémarrage à chaud) évitant ainsi toute la phase de chargement du BIOS, de test de mémoire, de détection des disques/RAIDs, etc, et de GRUB. Sur des serveurs de grosses capacités (mémoire, disques, etc), et même sur certain ordinateurs de bureau ou portables, le temps de redémarrage s’en trouve considérablement raccourci.
Installation
« kexec » est fournis par le paquet « kexec-tools », disponible sur la plupart des distributions Linux, qui s’installe via votre gestionnaire de paquets préféré :
15:01:42 cixi ~ # apt-get install kexec-tools ... |
Sous les dérivés de Red Hat, un « yum install kexec-tools » ce chargera de l’installation du paquet tous comme « emerge -av kexec-tools » le fera sous Gentoo Linux.
Utilisation
Un redémarrage via « kexec » se décompose en 2 phases :
- chargement du noyau en spécifiant les paramètres nécessaires ;
- exécution du redémarrage.
Chargement du noyau
Dans cette phase préparatoire, son spécifiés à « kexec », le noyau à charger (option « -l »), ainsi que ses options (option « —append= » ou « —command-line= ») et l’initrd à appliquer (option « —initrd= » ou « —ramdisk= »).
20:43:32 cixi ~ # kexec -l /boot/vmlinuz-3.0.0-1-686-pae --append="$( cat /proc/cmdline ) panic=10" --initrd=/boot/initrd.img-3.0.0-1-686-pae 20:44:13 cixi ~ # |
Note : Pour utiliser les mêmes options de chargement du noyau que celles appliquées sur le noyau courant, remplacez « —append= » (ou « —command-line= ») par « —reuse-cmdline » qui équivaut à « —append=$( cat /proc/cmdline ) ».
Le redémarrage
L’option « -e » (pour « execute ») lance la séquence de redémarrage.
21:47:24 cixi ~ # kexec -e |
Spécificités Debian like (Debian, Ubuntu, etc)
Pour les utilisateurs de Debian, Ubuntu, etc, « kexec » ce substitue au « reboot » classique de la machine dès son installation. Par défaut, un « reboot » charge, à chaud, le noyau « /vmlinuz » avec les options courantes (récupérées dans « /proc/cmdline ») et l’initrd « /initrd.img ».
Ces paramètres peuvent être modifiés dans le fichier « /etc/default/kexec » :
11:28:43 fhh@cixi ~ $ cat /etc/default/kexec ... # Utilisation de kexec pour le redémarrage ? true/false LOAD_KEXEC=true # Noyau par défaut à charger : KERNEL_IMAGE="/vmlinuz" # initrd à charger par défaut : INITRD="/initrd.img" # Options de démarrage du noyau. Si vide, récupère les options # de /proc/cmdline : APPEND="" # ex : APPEND="$( cat /proc/cmdline ) panic=10" |
Une fois « kexec-tools » installé sur votre système vous pouvez effectuer un redémarrage classique via « coldreboot » :
11:47:06 cixi ~ # coldreboot |