Na minha pesquisa até agora, notei que existem duas abordagens para ativar um timer de watchdog no raspberry: usar systemd ou instalar watchdog. Está tudo bem explicado aqui: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=147501#
E eu consegui fazê-lo funcionar nos dois sentidos, mas não durante a reinicialização / desligamento. Eu usei um forkbomb para testá-lo e ele reage a isso, no entanto, quando tento:
sudo poweroff
Apenas fica no chão. Então, eu estou pensando que existe uma maneira de forçar o cão de guarda a continuar em execução durante a reinicialização / desligamento, para que ele seja redefinido após alguns segundos se não inicializar corretamente?
A maioria das abordagens inicia o watchdog durante a inicialização, mas e se você precisar dela em execução o tempo todo? Meu framboesa parou uma vez na reinicialização e eu tive que desconectá-lo / plugá-lo manualmente para fazê-lo funcionar.
ATUALIZAR:
Algumas coisas estão muito mais claras para mim agora. Há três coisas a considerar:
- watchdog timer
- daemon de cão de guarda
- daemon de serviço de watchdog
watchdog timer: um registro que aciona uma redefinição quando ela transborda, a cada ciclo de RPI incrementado, precisa ser limpo (chutado) regularmente para evitar a redefinição
Para executá-lo na inicialização, adicione o seguinte a /boot/config.txt :
dtparam=watchdog=on
watchdog daemon: um processo responsável por limpar (chutar) o timer do watchdog regularmente
Instale-o:
sudo modprobe bcm2835_wdt
echo "bcm2835_wdt" | sudo tee -a /etc/modules
sudo apt-get install watchdog
sudo update-rc.d watchdog defaults
Configure /etc/watchdog.conf :
watchdog-device = /dev/watchdog
watchdog-timeout = 14
realtime = yes
priority = 1
max-load-1 = 24
Configure / etc / default / watchdog :
watchdog_module="bcm2835_wdt"
Para configurá-lo, adicione o seguinte ao /etc/modprobe.d/watchdog.conf :
options bcm2835_wdt nowayout=1 heartbeat=10
referência: http://vk5tu.livejournal.com/35721.html
O parâmetro de pulsação para o módulo do kernel é o intervalo máximo entre pulsações visto pelo dispositivo antes da reinicialização do hardware
O parâmetro nowayout determina o que acontece quando o dispositivo / dev / watchdog é fechado: um batimento cardíaco ainda é esperado ou não? Um valor 1 diz que a contagem regressiva para uma reinicialização continua em execução e se o dispositivo não for reaberto e uma pulsação gravada, a máquina será reinicializada.
Habilite-o (se isso não funcionar, primeiro cuide de watchdog.service e tente novamente):
sudo systemctl enable watchdog
Monitore:
sudo systemctl status watchdog
daemon de serviço watchdog: ativa quando o daemon watchdog falha / para, geralmente executa um daemon keepalive que ativa o watchdog regularmente
Configure /lib/systemd/system/watchdog.service :
# OnFailure=wd_keepalive.service
- Comentar isso desativa o daemon keepalive; assim, quando o daemon watchdog falha / para, nada impede o cronômetro watchdog de reiniciar o RPI
[Install]
WantedBy=multi-user.target
- correção de bug
Finalmente:
Reinicie o RPI. Depois que o raspberry é reiniciado, tudo deve começar (watchdog timer e watchdog daemon). Para verificar este uso:
cat /var/log/syslog | grep watchdog
Saída esperada:
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
Saída esperada:
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
TESTE :
Mate o daemon watchdog, execute:
ps aux|grep watchdog
Veja o ID do processo e mate-o:
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
Teste de forkbomb clássico, execute:
: (){ :|:& };:
Para testar a redefinição do raspberry se o processo de reinicialização falhar, execute:
sudo poweroff
- com este eu tive alguns problemas
Framboesa deve reiniciar após 15s cca.
sudo poweroff
. Às vezes funciona, às vezes não: S