在 Qemu 中,我正在启动一个 Linux VM,其中 init 进程(PID 1)是 bash。它正在工作:我可以在启动后使用 bash。但是当我用 aexit
或退出 bash 时,CTRL+D
我遇到了内核恐慌。
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
我希望系统正确且理想地停止,我希望它在退出 bash 之前同步磁盘。
知道我只能通过在启动时传递选项来修改内核行为吗?
答案1
我不认为你可以直接这样做,但你可以运行,例如
# bash; sync; halt
从第一个 (PID 1) shell 运行另一个 shell,并sync
在halt
第二个 shell 退出时运行。
如果您可以编辑系统上的文件,您可能可以通过在以下位置放置执行相同操作的脚本来自动执行此操作/sbin/init
:
#/bin/sh
/bin/bash; /bin/sync; /sbin/halt
(我说“可能”,因为我不确定 Linux 是否喜欢像 init 这样的脚本。)
在这两种情况下,您实际使用的 shell 都不会是 PID 1,但这可能并不重要。