Avant tout, je précise que tout ce qui suit à été testé sur une Gentoo. Il peut être utile de le signaler, dans la mesure où, par exemple, j'ai été incapable de faire fonctionner la même chose sur une Ubuntu 9.04 i386.

Tout d'abord, qu'est-ce que kexec ? C'est simple : c'est une fonction du noyau linux, qui permet, au lieu de rebooter totalement la machine, de simplement enchaîner sur un nouveau noyau. Concrètement, on économise le rechargement du BIOS, et les séquences d'initialisation sur les périphériques. Sur un PC de bureau, c'est anecdotique, en revanche sur un gros serveur muni de 3 ou 4 cartes d'interfaces diverses, le temps qui s'écoule entre le moment où l'on met la machine sous tension, et le moment ou GRUB apparaît se compte fréquemment en minutes ! Eviter cette phase permet donc de gagner en disponibilité.

Techniquement, la mise en place est vraiment très simple. La première étape est d'intégrer le support de kexec dans le noyau. Pour ce faire, rendez-vous dans "Processor type and features" pour activer l'option "kexec system call". On recompile, puis on reboot. L'option étant dorénavant disponible, il faut maintenant installer le userland ; sous Gentoo il s'agit du paquet sys-apps/kexec-tools.

La syntaxe de l'utilitaire kexec est extrêmement simple, et le plus souvent il suffira de recopier les paramètres utilisés par le bootloader (logique : kexec est une sorte de "chainloader"), en lui spécifiant le nouveau kernel à charger, un éventuel initrd pour ceux que ça concerne, et les paramètres à passer au kernel ( pour le détail, voir la page de manuel, courte et précise). Ensuite on peut rebooter avec un simple "kexec -e".

Simple et efficace.