如何让基于 Linux 的设备在 rootfs 不可用时重新启动?
只有软件看门狗可用。
问题是 rootfs 是从NFS
.当我停止 NFS 服务器时,设备被阻止。我希望它重新启动。我怎样才能实现这个目标?
即: rootfs 有问题,内核级别是否有任何东西可以重置整个系统?我不关心打开/损坏的文件和资源。
注意:我没有该架构的内核源代码。该设备是无头设备,没有连接显示器或键盘。有一个根控制台agetty
(在 中定义/etc/inittab
)。
答案1
您没有说明您是否连接了物理键盘,但如果有,那么“神奇的 SysRq 键”可能有帮助。在你的情况下
- Alt+ SysRq+S用于紧急同步到磁盘,以及
- Alt+ SysRq+B立即重启
应该做这项工作。请注意,要使其工作,必须不停用这些组合键,请参阅/proc/sys/kernel/sysrq
其中允许的 SysRq-Actions 的 ORed 位掩码的设置(复制自这里):
2 = 0x2 - enable control of console logging level
4 = 0x4 - enable control of keyboard (SAK, unraw)
8 = 0x8 - enable debugging dumps of processes etc.
16 = 0x10 - enable sync command
32 = 0x20 - enable remount read-only
64 = 0x40 - enable signalling of processes (term, kill, oom-kill)
128 = 0x80 - allow reboot/poweroff
256 = 0x100 - allow nicing of all RT tasks
您还可以通过写入以下内容从 shell 脚本/程序触发此操作/proc/sysrq-trigger
:
echo "b" > /proc/sysrq-trigger
无论设置是什么,这都将起作用/proc/sys/kernel/sysrq
,这仅限制键盘引发的 SysRq 事件。
答案2
听起来您需要onerror=panic
NFS 根文件系统的挂载选项,但我不确定它是否适用于 NFS。您可能还需要使用特定于 NFS 的挂载选项来挂载 NFS 根文件系统,soft
这样它就会超时并返回错误,而不是永远重试。
笔记:安装soft
选项可能会导致文件损坏和/或数据丢失,但在评论中您明确表示您不关心这一点。
也许值得一试?