Come mantenere attivo il timer del watchdog durante il riavvio / spegnimento


10

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:

  1. timer del cane da guardia
  2. demone watchdog
  3. 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.

Risposte:


5

sudo poweroffsignifica spegnere e stare fuori. Il cane da guardia non intercetta e non dovrebbe intercettarlo. Il comportamento riscontrato è corretto e non dovresti aspettarti che il watchdog riavvii un sistema spento.

Non penso che questo sia quello che vuoi fare comunque. Se si desidera riavviare il pi. dovresti usare sudo rebootinvece il comando . E in questo caso, se qualcosa si blocca durante l'arresto - sequenza di avvio che si rebootinnesca, il cane da guardia dovrebbe quindi prendere il controllo.


4

Non ho sfuggito a tutto ciò che hai collegato, ma l'autore non sembra capire il cane da guardia.

C'è un cane da guardia hardware BCM; Se si desidera avviare il watchdog hardware, includere dtparam=watchdog=onin/boot/config.txt

Di per sé questo fa poco, anche se dovrebbe riavviare il sistema se non "calciato" regolarmente. Puoi scrivere il codice che si apre /dev/watchdogper avviarlo.

Ce n'è anche uno watchdog daemonche puoi configurare per attivare il watchdog; dovresti essere in grado di iniziaresudo systemctl enable watchdog

NOTA il bug menzionato di seguito era in Jessie ed è stato risolto in Stretch
Purtroppo c'è un bug noto nello script systemd, che può essere facilmente risolto. Vedi http://unix.stackexchange.com/questions/346224/problem-with-systemd-starting-watchdog


Grazie per aver risposto, ho aggiunto un aggiornamento al mio post originale per mostrare i miei progressi. Tuttavia, ho ancora problemi con il riavvio di RPI durante l'esecuzione di WDT sudo poweroff. A volte funziona, a volte no: S
Duje,

1
Sfortunatamente sembra che tu abbia mescolato molte idee diverse. Non pretendo di essere un esperto di cane da guardia, ma per vedere se è in esecuzione systemctl status watchdog.service. L'uccisione watchdog NON provocherà un riavvio, poiché l' watchdog.serviceinizio wd_keepalive.servicealla chiusura, che come il suo nome implica PREVENTI, si riavvierà.
Milliways,

Non se disabiliti wd_keepalive.service. In questo modo: "Configura /lib/systemd/system/watchdog.service: # OnFailure=wd_keepalive.service- Commentare questo disabilita il demone keepalive, quindi una volta che il demone watchdog fallisce / ferma nulla, il timer watchdog non verrà riavviato dal riavvio di RPI"
Duje

2

Power è un servizio di sistema / demone in pi ed è una stringa analizzata da un IC che esegue il pin out / fanouted direttamente al Broadcom IC. Il flusso di lavoro delle operazioni può essere modificato facendo riferimento ai file di sistema, ma da quello che posso dire si sta provando a invocare i periperhials in scenari di regolazione della potenza personalizzati all'interno del concetto di interrupt e timer di watchdog. È possibile modificare una parte di questo comportamento ripetendo l'IC di regolazione e eseguendo una programmazione bare metal pre-avvio. Dai un'occhiata a questi e non esitare a contattarmi se hai in mente qualcosa. consultare il set di istruzioni della linea di riferimento di assemblaggio ARM Corp. nonché la documentazione sull'architettura. È sul web.

http://infocenter.arm.com/help/topic/com.arm.doc.dui0489f/DUI0489F_arm_assembler_reference.pdf

https://www.arm.com/files/pdf/CortexM3_programming_for_ARM7_developers.pdf

A proposito, saluta il tuo professore ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.