RPi zero W启动watchdog服务失败报signal=SEGV错误如何解决
你遇到的code=killed, status=11/SEGV是段错误,代表watchdog进程访问了非法内存地址,常见触发原因如下:
- 树莓派硬件看门狗驱动未正确加载,watchdog daemon尝试访问不存在的
/dev/watchdog设备节点 /etc/watchdog.conf配置文件参数错误,存在非法配置项- 安装的watchdog软件包损坏,或与当前系统版本不兼容
- 系统内置的systemd看门狗服务与第三方watchdog daemon冲突
第一步:确认硬件看门狗驱动已启用
编辑/boot/firmware/config.txt(老旧系统路径为/boot/config.txt),确认存在配置行dtparam=watchdog=on,没有就新增后重启树莓派。
重启后执行ls /dev | grep watchdog,正常应返回watchdog、watchdog0两个设备节点;执行lsmod | grep bcm2835_wdt确认内核模块已加载,无输出则手动执行sudo modprobe bcm2835_wdt加载。第二步:修正watchdog配置文件
编辑/etc/watchdog.conf,仅保留以下基础配置(注释其他所有未用到的检测项,比如不存在的温度传感器、网卡等):watchdog-device = /dev/watchdog watchdog-timeout = 15 max-load-1 = 24再编辑
/etc/default/watchdog,确认配置:run_watchdog=1 watchdog_module="bcm2835_wdt"第三步:排查软件包与冲突问题
手动运行测试命令看是否仍报错:sudo /usr/sbin/watchdog -v -c /etc/watchdog.conf
如果仍报段错误,执行sudo apt update && sudo apt reinstall watchdog重装软件包。
如果你使用的是Bookworm及以上版本的树莓派OS,系统已自带systemd内置看门狗,无需安装第三方watchdog包,直接卸载该包:sudo apt remove watchdog,再修改/etc/systemd/system.conf,开启RuntimeWatchdogSec=15配置,重启系统即可生效。第四步:验证修复结果
所有配置调整完成后执行sudo systemctl daemon-reload,再启动服务:sudo systemctl start watchdog
执行systemctl status watchdog确认服务状态为active (running)即为修复完成。
内容的提问来源于stack exchange,提问作者Zak

