Intel Alder Lake N50平台iTCO_wdt看门狗使用异常排查求助
Intel Alder Lake N50平台iTCO看门狗问题解决指南
一、“10min”超时的来源
这个10分钟的超时是systemd-shutdown在系统关机/重启阶段启用的看门狗超时值,和内核初始化时的120秒心跳无关。systemd在关机流程中会自动接管看门狗,防止关机过程卡住,默认设置的超时就是10分钟。
你看到的watchdog0: watchdog did not stop!日志,是因为前一次看门狗没有被正确关闭,systemd接管后重置了超时配置。
二、修改超时的方法
1. 修改systemd关机阶段的看门狗超时
编辑/etc/systemd/system.conf,找到ShutdownWatchdogSec配置项,取消注释并修改为目标值,比如设置为5分钟:
ShutdownWatchdogSec=300s
保存后执行systemctl daemon-reload使配置生效,下次关机/重启时日志中的超时就会更新为设置值。
2. 修改内核iTCO_wdt模块的默认心跳超时
如果要调整内核初始化时的120秒心跳值,可通过模块参数修改:
- 临时生效:加载模块时指定参数
modprobe iTCO_wdt heartbeat=60
- 永久生效:编辑
/etc/modprobe.d/iTCO_wdt.conf,添加:
options iTCO_wdt heartbeat=60 nowayout=0
其中heartbeat单位为秒,nowayout=0表示允许关闭看门狗(设为1则启动后无法关闭)。
三、测试看门狗触发重启的方法
1. 正确触发看门狗的操作步骤
你之前执行cat >> /dev/watchdog的方式无法触发重启,因为仅单次写入不会让看门狗进入“需定期刷新”的状态。正确测试流程:
- 先用
lsof /dev/watchdog确认没有其他进程占用看门狗设备 - 打开终端执行
cat /dev/watchdog,该命令会持续读取设备,此时内核会认为你已接管看门狗,停止自动刷新 - 保持终端开启,等待设置的heartbeat超时(比如默认120秒),系统就会触发重启
2. 终止系统自动刷新进程
如果发现systemd-watchdog.service这类系统进程在自动刷新看门狗,可先停止并禁用该服务:
systemctl stop systemd-watchdog.service systemctl disable systemd-watchdog.service
再执行上述cat /dev/watchdog命令,等待超时即可触发重启。
注意:若模块参数设置了nowayout=1,看门狗启动后无法关闭,只能通过重启系统恢复,测试阶段建议保持nowayout=0。
内容的提问来源于stack exchange,提问作者zzi
相关产品推荐
相关产品推荐

