“看门狗”,是一种硬件计时器。计算机系统在正常运行中会定时将这个计时器清零,俗称“喂狗”。当计算机系统无响应时,看门狗这这个计时器就会一直计时,当达到预定时间后还没有“喂狗”动作,“看门狗”就会将系统重启。从而保证系统不会达到长时间死机的状态。

启用硬件看门狗模块

使用树莓派硬件看门狗之前,需要先启用硬件看门狗模块,对于不同版本的树莓派,其看门狗模块的名称不同,需要根据树莓派版本加载对应的模块:

树莓派 1 代bcm2708_wdog
树莓派 2 代bcm2709_wdog
树莓派 3 代bcm2835_wdt
树莓派 4 代bcm2835_wdt

确定好版本后,编辑内核模块文件 /etc/modules,在其内容最后追加一行对应的模块名,添加完成后则之后每次系统启动时都会加载看门狗模块。

想要立即启动看门狗模块,需要执行命令:

sudo modprobe [模块名]

[模块名] 需要替换为对应版本的实际模块名

至此,已经完成了看门狗模块的加载。

安装管理服务

在 RaspiOS 下使用软件 watchdog 来管理看门狗,可以直接使用 apt 安装:

sudo apt install watchdog

然后由于显而易见的原因,要把它设置为开机启动:

systemctl enable watchdog

然后编辑配置文件 /etc/watchdog.conf,作出如下修改:

  • 取消 #max-load-1 = 24 的注释(删除开头的 # 号),代表当系统 1 分钟内的负载高于 24(已经非常非常高了),就重启系统
  • 取消 #watchdog-device = /dev/watchdog 的注释,设置看门狗的路径
  • 增加一行 watchdog-timeout = 15,代表 15 秒内系统无响应就重启系统,在树莓派 3B 上这个值最高为 15。注意不要设置的太小,否则可能造成系统反复重启。

保存修改,重启看门狗服务:

service watchdog restart

看门狗功能就启用了。

测试看门狗

可以通过 kill 掉看门狗服务来模拟系统死机的情况:

pkill -9 watchdog
pkill -9 wd_keepalive

过 15 秒后树莓派就会自动重启。

发表评论