麒麟V10系统需启用硬件看门狗应对内核级卡死:先确认驱动存在(如ftwdt010)、dmesg显示注册成功,再加载模块并生成/dev/watchdog设备节点,最后配置nmi_watchdog=1与watchdog_thresh=5,验证喂狗通路及NMI触发硬重启。

当麒麟V10系统在工业控制、嵌入式终端或无人值守服务器场景中遭遇内核级卡死(如CPU软锁死、中断失响应、驱动挂起),而用户空间看门狗守护进程已无法执行时,必须依赖底层硬件看门狗电路强制复位——这要求启用并正确配置内核级Watchdog驱动与设备节点。
确认硬件看门狗芯片是否存在
执行命令列出当前系统识别到的所有watchdog驱动模块:
sudo ls /lib/modules/$(uname -r)/kernel/drivers/watchdog/
重点关注是否包含平台对应驱动:飞腾平台常见为ftwdt010,鲲鹏平台为hisilicon_wdt,x86平台多为iTCO_wdt或sch311x_wdt。若列表为空或仅有softdog.ko,说明未识别到真实硬件看门狗,需核查主板是否支持或BIOS中是否禁用了WDT功能。
运行以下命令检查内核启动日志中是否有硬件看门狗初始化成功记录:
dmesg | grep -i "watchdog\|wdt"
若输出含“registered watchdog device”且设备名非softdog,则硬件已识别;若仅见“softdog: registered”,则当前启用的是纯软件模拟,不具备断电后自恢复能力。
加载对应硬件看门狗内核模块
方法一:临时加载(重启失效)
根据上一步确认的驱动名,执行加载命令。例如飞腾FT-2000+/4平台:
sudo modprobe ftwdt010
方法二:永久启用(推荐工业环境)
将驱动名写入模块黑名单排除文件外的加载列表:
echo "ftwdt010" | sudo tee -a /etc/modules
【必须执行】加载后立即验证设备节点是否生成:
ls /dev/watchdog*
正常应返回/dev/watchdog或/dev/watchdog0。若无输出,说明驱动加载失败或硬件未就绪,此时不可继续后续步骤。
配置内核参数启用NMI联动触发
硬件看门狗需配合NMI(不可屏蔽中断)机制,在系统完全锁死时仍能接管控制权。编辑GRUB启动参数:
sudo vim /etc/default/grub
找到GRUB_CMDLINE_LINUX行,在引号内已有参数末尾添加:
nmi_watchdog=1 watchdog_thresh=5
其中watchdog_thresh=5表示连续5秒未收到喂狗信号即触发NMI中断,该值必须小于硬件看门狗超时时间(通常默认为60秒),否则NMI无法抢在硬件复位前介入。
保存退出后更新引导配置:
sudo update-grub → sudo reboot
验证硬件看门狗是否真正生效
第一步:确认设备可被打开并写入
sudo sh -c 'echo 0 > /dev/watchdog' && echo "写入成功"
第二步:触发一次手动喂狗测试(不重启)
sudo timeout 2s sh -c 'exec 3 /dev/watchdog; while true; do echo V >&3; sleep 0.5; done' 2>/dev/null || echo "喂狗通路正常"
第三步:强制模拟内核卡死(仅限测试环境!)
sudo sh -c 'echo c > /proc/sysrq-trigger'
若系统在5~10秒内自动硬重启,且重启后dmesg中可见“NMI watchdog: BUG: soft lockup”及“watchdog: rebooting system”字样,则硬件看门狗+ NMI联动已生效。

















