我有一个小型嵌入式 Linux 设备,其中根文件系统通过 USB 连接安装
该设备可以很好地处理重置(如果在启动时拔出 USB 磁盘,它将等待 USB 磁盘到达)
但是,如果拔掉磁盘,设备往往会楔入,我希望它只是重置?
如果主磁盘消失,是否有一个内核选项可以让内核重置?
答案1
这很容易。
您需要创建一个在该设备的 USB 拔出事件上触发的 udev 规则。这些将是etc/udev/rules.d
.看一眼这个问题在 ServerFault 上结束了解详情。
因此,我们已经确定您可以使用关键字在 USB 拔出事件上触发任意命令PROGRAM
。
第二部分是使用“神奇”sysrq 键。看维基百科上关于 Magic SysRq 的这篇文章您可以使用 sysrq 键执行的操作。也可以通过将操作字母回显至 来触发该键/proc/sysrq-trigger
。这与按物理连接键盘上的组合键具有相同的效果。
因此,udev 规则为:
DRIVER="some_device", ACTION="remove", PROGRAM="/bin/echo b > /proc/sysrq-trigger"
some_device
当设备被移除时,这将触发系统重新启动。
当然,这假设“楔入”并不是指“内核恐慌”。