树莓派 3B 折腾笔记:硬件看门狗

在计算机中,「看门狗」指的是一种硬件计时器,用于在计算机失去响应(死机)的时候重启计算机。计算机的系统上要运行一个程序不断和看门狗硬件通信。当通信中断经过一段预设的时间后,看门狗就会通过发送 RESET 信号或者切断再接通电源等方式强制重启,保证计算机上运行的服务不长时间中断。

在折腾树莓派的过程中,我也曾好几次让树莓派失去响应,结果不得不人工开关电源来重启。通过开启树莓派上的硬件看门狗功能,就可以减少这种情况的出现。

加载驱动

由于 Linux 「万物皆文件」的特点,可以通过 ls 命令直接查看看门狗驱动的状态:

ls /dev/watchdog

如果有这个文件,可以直接跳到下一部分。如果没有,就要根据树莓派版本加载驱动:

  1. 树莓派 1代的驱动名为:bcm2708_wdog
  2. 树莓派 2代的驱动名为:bcm2709_wdog
  3. 树莓派 3代的驱动名为:bcm2835_wdt

使用 modprobe -v [驱动名] 加载驱动,然后再 ls /dev/watchdog 查看情况。如果驱动加载成功,就要将这个驱动设置为开机加载。编辑 /etc/modules,另起一行填入驱动名就可以了。

安装通信软件

前面提到,硬件看门狗需要和软件通信来确定系统的状态。在 Raspbian 下这个软件是 watchdog,可以直接 apt-get 安装:

apt-get install watchdog

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

systemctl enable watchdog

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

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

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

service watchdog restart

看门狗功能就启用了。

测试

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

pkill -9 watchdog
pkill -9 wd_keepalive

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

« 上一篇文章
NAT64 服务器搭建