sмu*_*urf 31
引导加载程序将加载内核,内核将尝试运行 init,找不到它并恐慌。
解决方法是重新启动,编辑启动参数,然后添加init=/bin/bash并启动。内核将使用 bash 作为 init。这将使您有机会运行命令并修复系统。
更正
显然内核(文件init/main.c)执行以下操作:
if (!try_to_run_init_process("/sbin/init") ||
!try_to_run_init_process("/etc/init") ||
!try_to_run_init_process("/bin/init") ||
!try_to_run_init_process("/bin/sh"))
return 0;
panic("No working init found. Try passing init= option to kernel. "
"See Linux Documentation/init.txt for guidance.");
Run Code Online (Sandbox Code Playgroud)
所以它会找到/bin/sh(这是一个破折号的链接),这会给你一个shell,并有机会在不使用init=/bin/bash引导参数的情况下修复它。
200*_*ess 12
没有任何反应,直到您尝试重新启动。只要系统正在运行,并且您不尝试通过运行/sbin/init n来切换运行级别,您甚至不会意识到它已经消失了。
其实,/sbin/init如果你早点意识到错误并保持冷静,删除是可以撤消的。在保持操作系统运行的同时,系统管理员已经从更严重的“脑叶切除术”中恢复过来。
从删除中恢复的一种方法/sbin/init是upstart使用 APT重新安装包。
男子气概的恢复方式是只使用机器本身的资源。对您有利的一个因素是它/sbin/init始终在运行。因此,当您运行 时rm /sbin/init,该文件只是从文件系统中取消链接。inode 和文件内容保留在磁盘和内存中,直到 PID 1 退出。您只需/sbin/init要从适当的 inode重新创建 。
在最简单的方式来实现这一目标是:
# cp /proc/1/exe /sbin/init
# chmod 755 /sbin/init
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |