Nella mia ricerca finora ho notato che ci sono due approcci per attivare un timer di watchdog su raspberry: usare systemd o installare watchdog. È tutto spiegato bene qui: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=147501#
E sono riuscito a farlo funzionare in entrambi i modi, ma non durante il riavvio / arresto. Ho usato un forkbomb per testarlo e reagisce a quello, tuttavia quando provo:
sudo poweroff
Rimane solo giù. Quindi sto pensando che c'è un modo per forzare il watchdog a continuare a funzionare durante il riavvio / spegnimento in modo da ripristinarlo dopo qualche secondo se non si avvia correttamente?
La maggior parte degli approcci avvia il watchdog durante l'avvio, ma cosa succede se ne hai bisogno in esecuzione tutto il tempo? Il mio lampone una volta si è fermato al riavvio e ho dovuto scollegare / collegare manualmente per farlo funzionare.
AGGIORNARE:
Alcune cose sono molto più chiare per me ora. Ci sono 3 cose da considerare:
- timer del cane da guardia
- demone watchdog
- demone del servizio di controllo
timer watchdog: un registro che attiva un reset quando trabocca, ogni ciclo di RPI che incrementa, deve essere cancellato (calciato) regolarmente per evitare il reset
Per eseguirlo all'avvio, aggiungere quanto segue a /boot/config.txt :
dtparam=watchdog=on
demone watchdog: un processo responsabile della cancellazione (espulsione) regolare del timer del watchdog
Installalo:
sudo modprobe bcm2835_wdt
echo "bcm2835_wdt" | sudo tee -a /etc/modules
sudo apt-get install watchdog
sudo update-rc.d watchdog defaults
Configura /etc/watchdog.conf :
watchdog-device = /dev/watchdog
watchdog-timeout = 14
realtime = yes
priority = 1
max-load-1 = 24
Configura / etc / default / watchdog :
watchdog_module="bcm2835_wdt"
Per configurarlo aggiungi quanto segue a /etc/modprobe.d/watchdog.conf :
options bcm2835_wdt nowayout=1 heartbeat=10
refernce: http://vk5tu.livejournal.com/35721.html
Il parametro heartbeat per il modulo kernel è lo spazio massimo tra heartbeat visto dal dispositivo prima del riavvio dell'hardware
Il parametro nowayout determina cosa succede quando il dispositivo / dev / watchdog è chiuso: è ancora previsto un battito cardiaco? Il valore 1 indica che il conto alla rovescia per un riavvio continua a funzionare e se il dispositivo non viene riaperto e viene scritto un battito cardiaco, la macchina si riavvierà.
Abilitalo (se non funziona, occupati prima di watchdog.service e riprova):
sudo systemctl enable watchdog
Monitoralo:
sudo systemctl status watchdog
demone del servizio watchdog: si attiva quando il demone watchdog fallisce / si arresta, di solito esegue un demone keepalive che dà dei calci al watchdog regolarmente
Configura /lib/systemd/system/watchdog.service :
# OnFailure=wd_keepalive.service
- Commentando questo si disabilita il demone keepalive, quindi una volta che il demone watchdog fallisce / si ferma nulla, il timer watchdog non verrà riavviato dal riavvio di RPI
[Install]
WantedBy=multi-user.target
- risoluzione del problema
Finalmente:
Riavvia RPI. Una volta riavviato raspberry, tutto dovrebbe avviarsi (timer watchdog e demone watchdog). Per verificare questo uso:
cat /var/log/syslog | grep watchdog
Uscita prevista:
Jun 14 12:09:08 raspberrypi systemd[1]: Starting watchdog daemon...
Jun 14 12:09:08 raspberrypi watchdog[813]: starting daemon (5.14):
Jun 14 12:09:08 raspberrypi watchdog[813]: int=1s realtime=yes sync=no soft=no mla=24 mem=0
Jun 14 12:09:08 raspberrypi watchdog[813]: ping: no machine to check
Jun 14 12:09:08 raspberrypi watchdog[813]: file: no file to check
Jun 14 12:09:08 raspberrypi watchdog[813]: pidfile: no server process to check
Jun 14 12:09:08 raspberrypi watchdog[813]: interface: no interface to check
Jun 14 12:09:08 raspberrypi watchdog[813]: temperature: no sensors to check
Jun 14 12:09:08 raspberrypi watchdog[813]: test=none(0) repair=none(0) alive=/dev/watchdog heartbeat=none to=root no_act=no force=no
Jun 14 12:09:08 raspberrypi watchdog[813]: watchdog now set to 14 seconds
Jun 14 12:09:08 raspberrypi watchdog[813]: hardware watchdog identity: Broadcom BCM2835 Watchdog timer
Jun 14 12:09:08 raspberrypi systemd[1]: Started watchdog daemon.
E:
ps aux|grep watchdog
Uscita prevista:
root 813 0.0 0.2 1888 1760 ? SLs 12:09 0:00 /usr/sbin/watchdog
pi 900 0.0 0.2 4752 1992 pts/0 S+ 12:10 0:00 grep --color=auto watchdog
TEST:
Uccidi il demone watchdog, esegui:
ps aux|grep watchdog
Vedi l'ID del processo e uccidilo:
root 812 0.0 0.2 1888 1760 ? SLs 12:16 0:00 /usr/sbin/watchdog
pi 898 0.0 0.2 4752 1992 pts/0 S+ 12:16 0:00 grep --color=auto watchdog
sudo kill -9 812
Test classico del forkbomb, esegui:
: (){ :|:& };:
Per testare il ripristino lampone se il processo di riavvio non riesce, eseguire:
sudo poweroff
- con questo ho avuto dei problemi
Raspberry dovrebbe riavviarsi dopo circa 15 secondi.
sudo poweroff
. A volte funziona, a volte no: S