对于某些错误,initramfs 将进入恢复控制台,以允许用户在启动前修复问题。
这对于安全性(例如,在面向客户的信息亭)和恢复系统的能力(例如,无人值守系统和物联网设备)方面都可能是一个问题
有没有办法重新配置它以便重新启动?
我可以配置 grub,以便在系统未达到稳定状态时它会尝试不同的引导选项,但如果它只是坐在那里等待永远不会出现的用户输入,我就无能为力。
请注意,系统并非完全不可恢复,引导失败通常可以通过回滚到以前的工作配置在引导加载程序中解决。这种技术在物联网中非常常见。但是,物联网设备可能会在出现故障时自动重启。
您可以禁用 initramfs 调试 shell 并使用内核参数立即重新启动,
panic=<seconds>
例如:panic=10
。来自man initramfs-tools
警告
不要使用
panic=0
. 这会起到相反的作用,并禁用而不是启用重新启动功能。initramfs 遵循与内核相同的语义。来自内核管理指南:
链接
如果启动期间出现故障(例如安装设备),系统将启动到“emergency.target”并启动“emergency.service”。
此时将显示消息“(或键入 Control-D 以正常启动)”。
这将通过询问 root 密码来启动 root 登录 shell(请参阅 参考资料
man 8 sulogin
)。只要屏蔽服务和目标就无法启动。但我没有经验如果发生严重错误导致系统无法启动会发生什么。小心一点,最好以某种方式进行测试。