到目前为止,在我的研究中,我注意到有两种方法可以在树莓派上激活看门狗计时器:使用systemd或安装看门狗。一切都在这里得到了很好的解释:https : //www.raspberrypi.org/forums/viewtopic.php?f=29&t=147501#
而且我设法使其能够双向运行,但在重启/关机期间却没有。我用一个前炸弹进行了测试,它确实对此做出了反应,但是当我尝试时:
sudo poweroff
它只是停留下来。因此,我在想是否有办法强制看门狗在重新引导/关闭期间继续运行,以便在不正确引导的情况下在几秒钟后将其重置?
大多数方法在引导过程中启动看门狗,但是如果您需要一直运行它怎么办?我的树莓一旦重启就停止了,我不得不手动拔下插头才能使其正常工作。
更新:
现在,有些东西对我来说更清晰了。有三件事要考虑:
- 看门狗定时器
- 看门狗守护程序
- 看门狗服务守护程序
看门狗定时器:溢出时触发复位的寄存器,每个RPI周期递增,需要定期清除(踢)以避免复位
要在启动时运行它,请在/boot/config.txt中添加以下内容:
dtparam=watchdog=on
看门狗守护程序:负责定期清除(踢)看门狗计时器的进程
安装它:
sudo modprobe bcm2835_wdt
echo "bcm2835_wdt" | sudo tee -a /etc/modules
sudo apt-get install watchdog
sudo update-rc.d watchdog defaults
配置/etc/watchdog.conf:
watchdog-device = /dev/watchdog
watchdog-timeout = 14
realtime = yes
priority = 1
max-load-1 = 24
配置/ etc / default / watchdog:
watchdog_module="bcm2835_wdt"
要配置它,请在/etc/modprobe.d/watchdog.conf中添加以下内容:
options bcm2835_wdt nowayout=1 heartbeat=10
参考:http://vk5tu.livejournal.com/35721.html
内核模块的心跳参数是硬件重启之前设备看到的心跳之间的最大间隔
nowayout参数确定在关闭/ dev / watchdog设备时会发生什么:是否仍然需要心跳?值为1表示重新启动的倒计时将继续运行,如果未重新打开设备并写入心跳,则计算机将重新启动。
启用它(如果不起作用,请先注意watchdog.service并重试):
sudo systemctl enable watchdog
监视它:
sudo systemctl status watchdog
看门狗服务守护程序:在看门狗守护程序失败/停止时激活,通常运行一个keepalive守护程序,该守护程序会定期启动看门狗
配置/lib/systemd/system/watchdog.service:
# OnFailure=wd_keepalive.service
-注释掉此选项将禁用keepalive守护程序,因此一旦看门狗守护程序失败/停止,任何操作都不会阻止看门狗计时器重新启动RPI
[Install]
WantedBy=multi-user.target
-错误修复
最后:
重新启动RPI。覆盆子重新启动后,所有内容均应启动(看门狗计时器和看门狗守护程序)。要检查此用法:
cat /var/log/syslog | grep watchdog
预期产量:
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.
和:
ps aux|grep watchdog
预期产量:
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
测试:
杀死看门狗守护程序,运行:
ps aux|grep watchdog
查看进程ID并杀死它:
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
经典前炸弹测试,运行:
: (){ :|:& };:
要测试如果重启过程失败,树莓派将重置,请运行:
sudo poweroff
-我遇到了一些问题
树莓应该在cca 15s之后重启。
sudo poweroff
。有时有效,有时却无效:S