Cet article à pour but de décrire les différentes étapes pour installer un watchdog sur votre Raspberry Pi. En effet il existe beaucoup d’articles (très peu en français) et certains ne fonctionnent pas (ou plus).
En d’autre termes : j’ai galéré pour l’installer, alors autant faire partager mon expérience.
Mais d’abord c’est quoi un « Watchdog » ?
C’est quoi un « Watchdog » ?
Un Watchdog : ou comme beaucoup l’auront compris un « Chien de garde ». Est un mécanisme qui permet de vérifier que votre système n’est pas défaillant. Et réagir (ou pas) s’il y a défaillance. En terme plus simple, pour notre cas, faire redémarrer automatiquement le Raspberry Pi si ce dernier est planté.
Bref lui dire « Tu te plantes, et bien redémarre tout seul !«
Ce système, qui nous est accessible via les standards Linux va vous être décrit ci-dessous.
Je vois déjà les commentaires du genre. « Mais un Raspberry Pi, ça plante jamais… et un Linux encore moins« . Certes, mais deux raisons à cela : d’une part ce qui peut faire « planter » nos Raspberry Pi, ce sont souvent les programmes que nous avons réalisés (boucle infinie oubliée, les « stack overflow », et j’en passe…). Et d’autre part, si votre Raspberry Pi se situe au fin fond du Morvan à plus d’une heure de route et qu’il ne répond plus. Ou qu’en pleine tempête de neige votre génial portail automatique, construit à base de Raspberry Pi, vous ignore…. Vous serez bien content qu’il se soit débrouillé tout seul pour redémarrer. Et dans ce cas là un bon redémarrage ne fait pas de mal. Je pense aussi aux portiers automatiques (sonnette / interphone / ouverture gâche) de certaines immeubles qui utilisent des Raspberry Pi : Sans cette option les conséquences sont non négligeables.
Installation du Watchdog
Là ce sont des commandes de base que vous connaissez tous, au moins pour la première :
# Installation du paquet sudo apt-get install watchdog # Lancement de l'application au démarrage de l'OS sudo update-rc.d watchdog enable
Configuration du Watchdog
C’est là que cela devient compliqué. En effet le Watchdog tout seul ne fonctionne pas. Il va falloir le paramétrer.
# Installation du paquet de configuration sudo apt-get install watchdog chkconfig sudo chkconfig watchdog on sudo /etc/init.d/watchdog start
Et modifier les fichiers de configuration :
sudo nano /etc/watchdog.conf
Décommenter les lignes suivantes :
watchdog-device = /dev/watchdog interval = 4 realtime = yes priority = 1
CTRL+X pour sortir et sauvegarder avec ‘Y’ (ou ‘O’)
sudo nano /etc/systemd/system.conf
Décommenter les lignes suivantes :
RuntimeWatchdogSec=14
CTRL+X pour sortir et sauvegarder avec ‘Y’ (ou ‘O’)
Configuration du Kernel
Non ce n’est pas un gros mot et comme vous voyez ce n’est pas fini.
Ici on va configurer le Kernel pour faire en quelque sorte une sonde qui va être exposée au Watchdog. Bref donner à manger au toutou.
Création d’un nouveau fichier
sudo nano /etc/modprobe.d/bcm2835_wdt.conf
Qui contient les lignes suivantes :
alias char-major-10-130 bcm2835_wdt alias char-major-10-131 bcm2835_wdt
CTRL+X pour sortir et sauvegarder avec ‘Y’ (ou ‘O’)
Édition du module avec ajout de lignes :
sudo nano /etc/modules
Ajout de la ligne suivante :
bcm2835_wdt
Et lancement de notre nouvelle sonde :
sudo modprobe bcm2835_wdt sudo service watchdog restart
Après tout cela vous aurez compris qu’un redémarrage s’impose.
Test du Watchdog
A cette étape le watchdog est donc démarré et scrute toute les 14 secondes.
Si la commande /dev/watchdog ne reçoit pas de signal au bout de 14 secondes, le Raspberry Pi redémarre.
Pour tester on va lancer un truc de hackeur pour planter notre Raspberry.
Il s’agit d’un « forkbomb« . Suite de commandes infinies qui se terminent jamais.
:(){ :|:& };:
Personnellement j’ai lancé cette commande et il ne se passait rien alors j’ai testé, retesté etc.
En fait la commande marchait mais le Raspberry Pi est stable et ne plante pas facilement. Il fallait juste être patient. En effet il faut bien parfois jusqu’à 3 à 4 minutes avant que le « forkbomb » plante réellement le Raspberry Pi.
Ça y est vous avez votre chien de garde à l’affût d’un plantage de votre framboise préférée.
Sources
- http://www.switchdoc.com/2014/11/reliable-projects-using-internal-watchdog-timer-raspberry-pi/ (avec bcm_2708)
- http://binerry.de/post/28263824530/raspberry-pi-watchdog-timer
- http://www.megaleecher.net/Watchdog_for_Raspberry_Pi#axzz4MyO5x2gT
- http://www.domoticz.com/wiki/Setting_up_the_raspberry_pi_watchdog
- https://github.com/notro/rpi-firmware/wiki/BCM2708vsBCM2835
Datasheet
BCM2835
- https://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
- http://elinux.org/BCM2835_datasheet_errata