Le watchdog, littéralement chien de garde, est une protection destinée généralement à redémarrer le système, si une action définie n'est pas exécutée dans un délai imparti.
Voici comment l'activer sur des ordinateurs fonctionnant sous Linux à base de processeur Intel ou pour les RaspberryPi.
Prérequis
Il faut un système ayant un watchdog, il est possible de faire un watchdog logiciel mais cela ne couvrira pas tous les cas, tel que le crash système.
Chipset Intel
Pour les processeurs Intel, il est présent sur tous les chipsets à base de ICH, il suffit de charger le module iCTO_wdt.
Ce qui produit les lignes suivantes dans les messages du noyau :
[39401.100017] iTCO_vendor_support: vendor-support=0 [39401.111655] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10 [39401.111684] iTCO_wdt: Found a Lynx Point TCO device (Version=2, TCOBASE=0x1860) [39401.114203] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
Selon le modèle, le module peut détecter d'autres types de périphérique :
[ 25.912615] iTCO_wdt: Found a Bay Trail SoC TCO device (Version=3, TCOBASE=0x0460)
[ 25.751022] iTCO_wdt: Found a ICH6-M TCO device (Version=2, TCOBASE=0x0860)
RaspberryPi
Pour raspberry, il suffit de charger le module bcm2708_wdog en ajoutant ledit module dans le fichier /etc/modules.
[ 12.450346] bcm2708 watchdog, heartbeat=10 sec (nowayout=1)
Vérification
Dans tous les cas, un périphérique doit apparaître dans /dev
ls -l /dev/watchdog* crw------- 1 root root 10, 130 déc. 20 20:07 /dev/watchdog
Mise en place
Pour la plupart des distrubtions Linux, un logiciel nommé watchdog est présent dans les dépots et permet d'activer le mécanisme.
Sous debian, il suffit d'ajouter dans /etc/watchdog.conf la ligne suivante :
watchdog-device = /dev/watchdog
Une fois le service lancé, le programme va écrire de manière régulière pour qu'un reboot matériel ne soit pas executé par le watchdog.
Tests
Une des techniques les plus simples consiste à crasher le kernel, si le système est relancé alors le watchdog fonctionne.
Je vous recommande fortement de fermer les documents actifs et de couper tous les services qui risqueraient de ne pas apprécier (base de données, par exemple).
Pour faire un kernel panic, le plus simple est de faire cette action :
echo c > /proc/sysrq-trigger
Vous pouvez aussi désactiver les partitions swap et éxectuer une fork bomb, en théorie le système devrait finir par crasher :
swapoff -a :(){ :|:& };:
L'option nowayout
Quasiment tous les modules de watchdog ont une option nommée nowayout, cette option signifie que le watchdog ne sera pas désactivé, même si le service watchdog est amené à être arrêté (arrêt du service, ou kill du processus).
Pour activer cette option sur mon raspberry, je charge le module de cette manière :
# cat /etc/modules bcm2708_wdog nowayout=1