Aymeric / APLU(.FR) - Mot-clé - watchdogSite d'Aymeric (ou d'aplufr) pour parler de Linux, de technique.. enfin de tout et surtout de n'importe quoi !2023-09-19T19:41:16+02:00Aymericurn:md5:9a770342f58fde945e9ce016459f8f12DotclearOh my watchdogurn:md5:21ded1777ca507a62c90473a5d95bc3f2014-12-20T22:29:00+01:002015-01-18T15:34:28+01:00APLUHardwaredebianintellinuxmotherboardsystèmewatchdog <p>Le <a href="https://fr.wikipedia.org/wiki/Chien_de_garde_%28informatique%29" hreflang="fr">watchdog</a>, 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.<br />
Voici comment l'activer sur des ordinateurs fonctionnant sous Linux à base de processeur Intel ou pour les RaspberryPi.</p>
<h2>Prérequis</h2>
<p>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.</p>
<h3>Chipset Intel</h3>
<p>Pour les processeurs Intel, il est présent sur tous les chipsets à base de ICH, il suffit de charger le module<em> iCTO_wdt</em>.<br />
Ce qui produit les lignes suivantes dans les messages du noyau :</p>
<pre>
[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)</pre>
<p>Selon le modèle, le module peut détecter d'autres types de périphérique :</p>
<pre>
[ 25.912615] iTCO_wdt: Found a Bay Trail SoC TCO device (Version=3, TCOBASE=0x0460)</pre>
<pre>
[ 25.751022] iTCO_wdt: Found a ICH6-M TCO device (Version=2, TCOBASE=0x0860)</pre>
<h3>RaspberryPi</h3>
<p>Pour raspberry, il suffit de charger le module <em>bcm2708_wdog</em> en ajoutant ledit module dans le fichier <em>/etc/modules</em>.</p>
<pre>
[ 12.450346] bcm2708 watchdog, heartbeat=10 sec (nowayout=1)</pre>
<h3>Vérification</h3>
<p>Dans tous les cas, un périphérique doit apparaître dans /dev</p>
<pre>
ls -l /dev/watchdog*
crw------- 1 root root 10, 130 déc. 20 20:07 /dev/watchdog</pre>
<h2>Mise en place</h2>
<p>Pour la plupart des distrubtions Linux, un logiciel nommé watchdog est présent dans les dépots et permet d'activer le mécanisme.</p>
<p>Sous debian, il suffit d'ajouter dans /etc/watchdog.conf la ligne suivante :</p>
<pre>
watchdog-device = /dev/watchdog</pre>
<p>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.</p>
<h2>Tests</h2>
<p>Une des techniques les plus simples consiste à crasher le kernel, si le système est relancé alors le watchdog fonctionne.</p>
<p>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).<br />
Pour faire un kernel panic, le plus simple est de faire cette action :</p>
<pre>
echo c > /proc/sysrq-trigger</pre>
<p>Vous pouvez aussi désactiver les partitions swap et éxectuer une fork bomb, en théorie le système devrait finir par crasher :</p>
<pre class="de1">
swapoff -a
:(){ :|:& };:
</pre>
<h2>L'option nowayout</h2>
<p>Quasiment tous les modules de watchdog ont une option nommée <em>nowayout</em>, 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).</p>
<p>Pour activer cette option sur mon raspberry, je charge le module de cette manière :</p>
<pre>
# cat /etc/modules
bcm2708_wdog nowayout=1</pre>