查看: 18770|回复: 8

[教程] 给Raspberry pi 安装看门狗程序让它永不死机

[复制链接]

该用户从未签到

发表于 2013-1-15 10:54:49 | 显示全部楼层 |阅读模式
分享到:
pi watchdog-1.jpg

pi watchdog-2.png

你还在担心树莓派死机吗?给他装个看门狗吧!
什么是看门狗程序?
看门狗程序就是一个健康监控程序,每间隔一定时间(默认10秒)检查一次是否在设定的健康工作范围内,如果超过即启动硬件复位程序,让设备重新启动,恢复健康。
树莓派支持硬件自动复位?
是的,开源的BCM2708芯片让树莓派拥有了硬件看门狗芯片功能,加上linux内核编译好了的bcm2708_wdog模块,树莓派通过watchdog程序实现硬件看门狗功能,达到自动复位功能。
看门狗能做些什么?
比如CPU占用过高假死一定时间,系统严重报错无法响应,CPU温度过高…各种状态均可

接下来一步一步指导如何实现看门狗功能

首先让硬件的看门狗模块运行起来
  1. modprobe bcm2708_wdog
  2. vi /etc/modules
  3. #加入一行 "bcm2708_wdog"
复制代码
就我所知从2012-05以后的内核都默认支持这个模块,如果报错,使用我的精简版系统,我测试过没问题
接下来安装看门狗守护进程,他的功能就是每间隔一定时间向看门狗硬件模块发送一个状态,如果失败,则触发硬件看门狗让树莓派重启
  1. apt-get install watchdog
  2. apt-get install chkconfig #我的精简系统精简掉了chkconfig,手动安装一下就好
  3. chkconfig watchdog on
  4. #chkconfig是设定看门狗程序随系统启动自动运行
复制代码
在开始运行watchdog之前,先配置一下这个程序
  1. vi /etc/watchdog.conf
  2. 取消掉 watchdog-device = /dev/watchdog 前的注释#号,让他监控的设备指向CPU的硬件看门狗
  3. 取消掉 max-load-1 = 24 前的注释#号,当1分钟load进程超过24个的时候(一般5个就是超高负载了,再<FONT face="Courier New">高可以认为是死机,这在遭遇DDOS攻击的时候很容易遇到)就触发重启</FONT>
复制代码
还可以设置如温度到了多少度就重启,如 取消掉
temperature-device =
max-temperature = 120
前的注释#号,改为
temperature-device = /sys/class/thermal/thermal_zone0/temp
max-temperature = 75000
(温度一般不超过85度就不会损坏芯片,/sys/class/thermal/thermal_zone0/temp记录的是实时的温度,单位为千分之一摄氏度,所以75000就是75℃)
还可以设置内存耗尽就重启,如min-memory =1 前的注释#号去掉
还可以设置监控的间隔,如 interval = 1 前的注释#号去掉,该1为任意数字,单位是秒,默认是10秒一次健康检查
更多设置查阅watchdog文档
接下来我们让watchdog程序运行起来
  1. /etc/init.d/watchdog start
复制代码
让我们来测试一下死机后会不会自动重启吧
    ddos.jpg             
运行这一串字符会让系统内核立马崩溃,等等看,是不是10秒后他就自动重启了。
利用看门狗程序,结合raspberry pi 的CPU硬件看门狗模块,实现了raspberry pi永不死机。

转自:geekpi





回复

使用道具 举报

  • TA的每日心情

    2020-7-20 23:07
  • 签到天数: 979 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-1-15 11:27:19 | 显示全部楼层
    {:soso_e135:}不错不错            
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-15 16:27:20 | 显示全部楼层
    这个需要顶一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2013-8-12 17:47
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-18 13:01:38 | 显示全部楼层
    做个最小Arduino,GPIO给Arduino,轮询到没给信号时,Arduino上的继电器就开关一次电源
    这个算是个狗吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-18 13:37:56 | 显示全部楼层
    wyyyh 发表于 2013-1-18 13:01
    做个最小Arduino,GPIO给Arduino,轮询到没给信号时,Arduino上的继电器就开关一次电源
    这个算是个狗吧  ...

    这个也算的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-2-2 09:09
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-18 14:19:13 | 显示全部楼层
    本帖最后由 bw57899 于 2013-1-18 14:20 编辑
    powerdruy 发表于 2013-1-17 00:30
    为啥那一段字符串就会让系统内核立马崩溃呢

    这里有详细的解释:
    http://zh.wikipedia.org/wiki/Fork%E7%82%B8%E5%BC%B9
    http://zhidao.baidu.com/question/135289644.html
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-1-18 15:23:50 | 显示全部楼层
    bw57899 发表于 2013-1-18 14:19
    这里有详细的解释:
    http://zh.wikipedia.org/wiki/Fork%E7%82%B8%E5%BC%B9
    http://zhidao.baidu.com/ques ...

    fork炸弹
    你是高手啊{:soso_e179:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-2-17 09:37
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-19 17:17:15 | 显示全部楼层
    呦,不错哦~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-1-21 08:33:46 | 显示全部楼层
    铮铮卡穆 发表于 2013-1-19 17:17
    呦,不错哦~

    哟,谢谢哦
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条



    手机版|小黑屋|电路城

    GMT+8, 2020-11-24 06:15 , Processed in 0.084694 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.