213. sbin-init:No such file or directory
方案
解决方法
/sbin/init 是 Linux 系统中至关重要的初始化进程,缺失它将导致系统无法启动。以下是一些解决方法:
1. 从 Live CD/USB 复制 init 文件:
- 准备工作:
- Ubuntu Live CD/USB 启动盘。
- 步骤:
- 使用 Live CD/USB 启动系统。
- 挂载你的根分区,例如:
sudo mount /dev/sda1 /mnt
(将 /dev/sda1 替换成你的实际分区,我的文件系统是sda5)。 - 复制 init 文件:
sudo cp /sbin/init /mnt/sbin/
- 卸载根分区并重启系统。
2.使用 dpkg 命令重新安装 init 软件包:
- 准备工作:
- Live CD/USB 启动盘。
- 步骤:
- 在 Live CD 环境下,挂载根分区。
- 使用 chroot 命令进入你的系统环境:
sudo chroot /mnt
- 重新安装 init 软件包:
sudo apt-get install --reinstall init
- 退出 chroot 环境:
exit
- 卸载根分区并重启系统
3.使用 Ubuntu 安装盘修复系统:
- 准备工作:
- Ubuntu 安装盘。
- 步骤:
- 使用 Ubuntu 安装盘启动系统。
- 选择 “Try Ubuntu” 进入试用模式。
- 打开终端,并运行
sudo apt-get update
更新软件包列表。 - 运行
sudo apt-get install --reinstall ubuntu-minimal
重新安装基础系统软件包,其中包含 init。 - 重启系统。
结合方法1、2。在 Live USB 启动Try Ubuntu系统,挂载根分区后,在/sbin目录下,没有init
1 | sudo cp /sbin/init /mnt/sbin/ |
之后发现,与Live USB下的init不一致(然而在这一步当时没有用ldd命令确定具体连接,并不确定简答复制是否有用!!)
简单cp后发现区别[如下与上面的截图]
1 | lrwxrwxrwx 1 root root 20 Dec 10 15:33 /mnt/sbin/init -> /lib/systemd/systemd* |
随后进入chroot,重新安装 init 软件包: sudo apt-get install --reinstall init
。
但是此步骤有可能遇到在chroot中无法访问网络的问题,ping不到baidu,apt会无法解析源地址,通过在 /mnt/etc/resolv.conf
插入 nameserver 8.8.8.8
后(添加Google 提供的公共 DNS 服务器的 IP 地址 8.8.8.8) 可以正常使用 apt-get install init
。
ldd
是list, dynamic, dependencies的缩写, 意思是, 列出动态库依赖关系。ldd
/sbin/init使用命令查看依赖的库文件是否都存在
方案

方案
修复文件系统
开始检查并修复文件系统错误
1 | sudo fsck -f /dev/sda1 |
修复完以后还是无法进入,文件损失太严重。只能试试重建initrd
重建initrd
首先安装 Ubuntu安装并绑定 /dev、/sys 和 /proc 目录。我的系统分区在sda6,你的可能在sda1
1 | sudo mount /dev/sda6 /mnt |
这些命令创建一个 chroot 环境,允许您像正在运行的系统一样使用 Ubuntu 安装。
进入 chroot 环境后,导航到 /boot 目录:
1 | cd /boot |
执行此操作的命令取决于您的 Ubuntu 版本, 请将“<kernel-version>
”替换为已安装内核的版本号(例如 3.19.0-25-generic)。
1 | update-initramfs -c -k <kernel-version> |
重建initrd后,退出chroot环境:
1 | exit |
尝试正常启动 Ubuntu 桌面,看看问题是否得到解决。
重新安装GRUB
如果重建 initrd 不能解决问题,您可能需要重新安装 GRUB(Ubuntu 的引导加载程序)。
要重新安装 GRUB,请按照与上述相同的步骤进入 chroot 环境。
然后,运行命令 grub-install /dev/sda6
,将“/dev/sda
”替换为适合您的 Ubuntu 安装的设备名称。
1 | grub-install /dev/sda6 |
/bin/bash
报错如下:
1 | chroot: failed to run command ‘/bin/bash’: No such file or directory |
根据报错应该rootfs文件系统中缺少/bin/bash,进入查看确实默认是sh,换成
1 | chroot . /bin/sh |
依然报错
1 | chroot: failed to run command ‘/bin/sh’: No such file or directory |
通过查阅资料发现,/bin/sh链接/bin/busybox,busybox为动态执行文件,直接进入缺少动态链接库,如下:

需要拷贝相应的动态到rootfs文件系统,如下:
1 | cd rootfs |
然后再执行chroot . /bin/sh就正常了。