我在终端sudo cat /dev/char/10:130上这样做了,它在uevent中有一个看门狗的名称,它输出来自内核的一条消息:watchdog did not stop !,再过几秒钟,它就关机了,为什么?
我到底在做什么?
我正在Raspberry 3b+上运行Raspbian。
发布于 2018-07-18 07:26:57
/dev/char/10:130是一个字符设备,其主设备号为10,次设备号为130。在非嵌入式Linux系统中,它更常见的名称是/dev/watchdog。
当你打开一个看门狗设备时,一个定时器(通常是硬件级的定时器)开始滴答作响。打开看门狗设备的程序将定期向打开的设备写入一些东西(任何东西,真的),以表明系统仍然正常运行。这将重置硬件定时器,然后开始向零方向滴答滴答。
如果没有发生这种情况,例如,由于系统挂起或超载,硬件定时器将达到零,然后看门狗机制将激活硬件级别的复位信号来执行硬重新启动。它相当于运行在系统上的操作系统和/或其他软件的死人开关。
如果管理看门狗的软件需要停止,一些看门狗驱动程序需要在关闭文件之前向看门狗设备发送一个特定的字符。然后,内核中的看门狗司机应该解除看门狗计时器的武装。你的sudo cat /dev/char/10:130没有这么做。
问题是,一些硬件看门狗定时器显然不能停止,除非重新启动一旦激活。如果内核是用CONFIG_WATCHDOG_NOWAYOUT选项编译的,那么驱动程序就会期望,一旦激活了看门狗,就应该始终存在一个看门狗-看管程序,因此将拒绝看门狗的失活请求。
https://unix.stackexchange.com/questions/456865
复制相似问题