12 diciembre 2016

Reinicio automático de la Raspberry Pi con Watchdog

Si tenemos un sistema domótico instalado en la Raspberry Pi en un sitio al cual no podemos acceder o simplemente no podemos conectarle físicamente una pantalla, teclado y ratón y solo tenemos acceso a él mediante SSH. ¿Que hacemos cuando la Raspberry Pi se queda colgada?. Para solventar este problema vamos a usar el servicio watchdog.
El watchdog timer es un temporizador electrónico que se usa para detectar algún mal funcionamiento o cuelgue del sistema en el que está instalado y reiniciarlo para volver al funcionamiento normal.
Afortunadamente el chip de nuestra Raspberry Pi lleva implementado ese temporizador, vamos a usarlo para reiniciarla en caso de que algo vaya mal.

Lo primero es cargar el módulo del kernel con este comando:
sudo modprobe bcm2708_wdog
A continuación, para que ese módulo se cargue al arranque del sistema, tecleamos:
echo "bcm2708_wdog" | sudo tee -a /etc/modules
 Si os sale el siguiente error al ejecutar el primer comando:
modprobe: FATAL: Module bcm2708_wdog not found.
Los dos comandos a ejecutar son los siguientes:
sudo modprobe bcm2835_wdt
echo "bcm2835_wdt " | sudo tee -a /etc/modules
Instalamos watchdog daemon:
sudo apt-get install watchdog chkconfig
sudo chkconfig watchdog on
Ahora toca configurar el servicio watchdog para los escenarios en los que queremos que reinicie la Raspberry Pi, para ello editamos el archivo watchdog.conf:
sudo nano /etc/watchdog.conf
El archivo se entiende fácilmente y vamos a configurar que nuestra Raspberry Pi se reinicie si la carga de la CPU en un minuto es superior al 24%, para ello le quitamos el # a estas dos lineas que nos deben quedar así y añadimos watchdog-timeout   = 10:
 max-load-1              = 24
 watchdog-device = /dev/watchdog
 watchdog-timeout   = 10
Iniciamos el servicio watchdog:
sudo systemctl start watchdog
 Ahora vamos a probar que todo funciona correctamente, para ello lo primero es asegurarse de que no hay ningún proceso importante corriendo en la Raspberry Pi y vamos a desactivar la partición swap, tecleamos:
sudo swapoff -a
 Y a continuación vamos a probar el funcionamiento del watchdog con una "forkbomb", para ello ejecutamos:
: (){ :|:& };:
Y si todo ha ido bien nuestra Raspberri Pi se habrá reiniciado al cabo de unos segundos.
Si comprobamos el estado del servicio después del reinicio:
sudo systemctl -l status watchdog
Nos encontramos con ésto:
 ● watchdog.service - watchdog daemon
Loaded: loaded (/lib/systemd/system/watchdog.service; static)
Active: inactive (dead)
El sistema no ha cargado el servicio y no lo ha iniciado después del reinicio. Para activarlo y que se inicie después de cada reinicio, seguimos los siguientes pasos:
Copiamos el archivo watchdog.service a la carpeta /etc/systemd/system/:
sudo cp /lib/systemd/system/watchdog.service /etc/systemd/system/
Lo abrimos:
sudo nano  /etc/systemd/system/watchdog.service
A la linea que empieza por  ExecStartPre=... le añadimos al final ' y nos debe quedar así:
ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module'
Y después de la sección [Install] añadimos esta linea:
WantedBy=multi-user.target
Sincronizamos el demonio:
sudo systemctl daemon-reload
Activamos el servicio:
sudo systemctl enable watchdog
Y lo iniciamos:
sudo systemctl start watchdog
Reiniciamos el sistema o ejecutamos la "forkbomb" y cuando se haya reiniciado comprobamos que sigue activo y funcionando:
sudo systemctl -l status watchdog
Si nos sale esto es que está todo correcto y el servicio watchdog funcionará después de cada reinicio:
 ● watchdog.service - watchdog daemon
   Loaded: loaded (/etc/systemd/system/watchdog.service; enabled)
   Active: active (running)
Pues ya podemos despreocuparnos de si nuestra Raspberry Pi se queda colgada y no podemos reiniciarla a mano, lo siguiente será conseguir que nos avise, enviándonos un mail por ejemplo, cuando esto suceda.

Documentación consultada para esta entrada en los foros de Raspberry

Comparte este post con tus amigos!

Compartir en Facebook Compartir en Google+ Compartir en Twitter Compartir en Pinterest Compartir en LikedinCompartir en WhatsAppCompartir en Telegram

0 comentarios:

Comparte tu opinión con los demás, deja un comentario. ↓

Los comentarios no son moderados, sin embargo si contienen insultos o son ofensivos, pueden ser borrados.

 

©2011 Trasteando con Raspberry Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.
Creado a partir de la obra en Trasteando con Raspberry. | FuuTheme diseñado por Fuutec | Ir arriba ↑