Redémarrer automatiquement en cas de “Kernel Panic”

By fhh 2 Comments
Comment redémarrer automatiquement en cas de "kernel panic" ?

Il est possible de redémarrer un système automatiquement en cas de “kernel panic” en utilisant les fonctionnalités du noyau.

Activation au chargement du noyau

L’option “panic=X”, passée au noyau lors de son chargement, fixe à “X” secondes le temps avant redémarrage de la machine en cas de “kernel panic”.

La modification est effectuée dans la configuration du gestionnaire de démarrage, en général GRUB.

Sous Debian et ses dérivées (Ubuntu, …), ajoutez cette option à “GRUB_CMDLINE_LINUX_DEFAULT” de “/etc/default/grub” avant de régénérer “grub.cfg” via “update-grub2″ :

17:11:22 mafalda ~ # grep GRUB_CMDLINE_LINUX_DEFAULT /etc/default/grub 
GRUB_CMDLINE_LINUX_DEFAULT="panic=10 quiet"
17:11:26 mafalda ~ # update-grub2
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.39-2-amd64
Found initrd image: /boot/initrd.img-2.6.39-2-amd64
done
17:13:43 mafalda ~ # cat /boot/grub/grub.cfg
... 
        linux   /boot/vmlinuz-2.6.39-2-amd64 root=UUID=ab167e7b-343a-4031-a2b1-673c8ee6dbe5 ro  panic=10 quiet
...

Sous Gentoo Linux, éditez “/boot/grub/menu.lst” pour y ajouter l’option “panic=X” :

srv ~ # cat /boot/grub/menu.lst
... 
title Gentoo Linux (Kernel x86_64 2.6.29.6-vs2.3.0.36.14)
        root (hd0,0)
        kernel /kernel-x86_64-... root=/dev/ram0 real_root=/dev/sda2 panic=10
        initrd /initramfs-2.6.29.6-vs2.3.0.36.14
...

Sous Fedora, CentOS et autres “Red Hat like”, la modification est effectuée dans “/etc/grub.conf” :

centos ~ # cat /etc/grub.conf
...
title CentOS (2.6.32-71.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/... crashkernel=auto rhgb panic=10 quiet
        initrd /initramfs-2.6.32-71.el6.x86_64.img
...

Pour que cette option soit prise en compte, redémarrer le système.

NOTE : Il est possible de définir ce paramètre via “sysctl” ce qui ne nécessite pas de redémarrage.

Activation via “sysctl”

Pour définir “à chaud” le redémarrage automatique en cas de “kernel panic” utilisez “sysctl” (ce qui évite le reboot pour la prise en compte).

Ajouter la clé “kernel.panic=X”, où “X” est le temps en secondes avant redémarrage de la machine, au fichier “/etc/sysctl.conf” :

19:29:30 mafalda ~ # cat /etc/sysctl.conf 
...
kernel.panic=10
...

et recharger le contenu du fichier “sysctl.conf” via “sysctl” :

19:30:06 mafalda ~ # sysctl -p
kernel.panic = 10

ou définir la valeur seule via “sysctl” :

19:32:33 mafalda ~ # sysctl -w kernel.panic=10
kernel.panic = 10

NOTE : La définition de “kernel.panic” dans sysctl.conf est suffisante pour fixer le redémarrage du système en cas de défaillance du noyau.

Test de fonctionnement

Le nombre de secondes défini avant redémarrage de la machine est consultable sous “/proc/sys/kernel/panic”. Si la valeur est à 0, aucun redémarrage n’est prévu :

20:09:10 mafalda ~ # cat /proc/sys/kernel/panic
0
20:09:12 mafalda ~ # sysctl -w kernel.panic=10
kernel.panic = 10
20:09:16 mafalda ~ # cat /proc/sys/kernel/panic
10

Si la machine sur laquelle vous travaillez n’est pas en production, vous pouvez tester la prise en compte de cette nouvelle politique en déclenchant volontairement un “kernel panic”. Consultez “kernel panic” : Faites paniquer votre noyau Linux sur Admin Linux pour tester en condition réelle le comportement de votre système.

Configuration, Kernel, Sécurité

2 Comments to “Redémarrer automatiquement en cas de “Kernel Panic””

  1. [...] Redemarrer automatiquement en cas de kernel panic, sur admin-linux Wikio Wikio [...]

  2. 22decembre says:

    Très utile ça.
    Je viens de le mettre en place chez moi avec grub fallback (passage sur un autre noyau par grub si le premier échoue au boot).

Leave your Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Blue Taste Theme created by Jabox modified by FHH