我搜索了好多,发现很多人都遇到过这个问题。通过在 vmlinuz 行末尾添加 rw init=/bin/bash,我可以进入 UBUNTU 10.04 LTS 的单用户模式,但是当我输入关机或重新启动时,它只是说它不能这样做。然后我运行“/sbin/init 0”,它说它无法连接到 upstart 的 sock。
我的猜测是,因为我们用 /bin/bash 替换了 /sbin/init,并且没有 init(也没有 upstart),因此无法关机。
我注意到有人说按 Enter Exit 键,我应该进入正常启动的下一个阶段。我试了一下,结果我的 VMWare 中的 ubuntu 系统卡住了,并且行为怪异,至少 CAPLOCK 灯一直闪烁......(CPU 占用也得分)
如有任何指导,我们将不胜感激,先谢谢大家了〜
====更新===== 我尝试使用 single 而不是 init=/usr/bash,但它直接进入多用户模式。
答案1
当你没有在里面或 shell 之外的其他进程,几乎没有什么可以关闭的。事实上,唯一重要的是文件系统——同步它,然后卸载所有磁盘上的文件系统或将其重新挂载为只读(如果它们无法卸载,例如 rootfs):
sync
umount /home
mount -o remount,ro /
在此之后,你最好拔掉插头。
您可以尝试的另一件事(但我没有)是启动原始在里面确保除了 pid1 shell 之外没有其他进程正在运行,然后切换到根目录并执行 在里面:
cd /
sync
exec /sbin/init
exec
用给定的进程替换当前进程,因此以这种方式启动 /sbin/init 将从您的 shell 中获取特殊的 pid 1。
但是,如果 pid 1 退出,内核就会立即崩溃 - 因此在执行此操作之前,至少要确保sync
文件系统。
当内核崩溃时,它会打印出一条消息,开始闪烁键盘 LED,并停止所有其他操作 - 它甚至会停止通常告诉 CPU 保持空闲的循环;这可能是导致 Caps Lock 疯狂和虚拟机高 CPU 使用率的原因。
你的“某人”是对的——真实的单用户模式,exit
输入通常切换到多用户或至少彻底重启。然而init=/bin/bash
,不是启动此模式;除了内核和bash
shell 之外,它根本不启动任何东西。要达到真正的单用户模式,您需要将其添加single
到内核命令行。(有时1
或s
有效,但并非所有发行版都使用运行级别。)在 Ubuntu 中,这曾经被称为“恢复模式”。