您尚未登录。

#1 2018-01-05 00:31:49

haski
会员
注册时间: 2018-01-04
帖子: 2

[已解决]安装完成之后出现了/sbin/init does not exist .... rootfs#错误

这是第一次安装arch,很多不太明白,之前帖子好像也是这个错误,但是感觉原因不太一样,所以请教一下,细节如下
UEFI启动,grub
分区情况:sdb 22.4G ext4 挂载点/         sda1 512M 作ESP 挂载点/boot        sda2 20G ext4 挂载点/usr           sda3 sda剩余空间 ext4 挂载点/home
fstab文件截图
"/etc/fstab截图" bbcode
然后是两条指令输出的截图

#ls /new_root
#ls -l /new_root/sbin/init

ls output" bbcode

最近编辑记录 haski (2018-01-05 19:31:06)

离线

#2 2018-01-05 08:40:53

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: [已解决]安装完成之后出现了/sbin/init does not exist .... rootfs#错误

不要单独分 /usr,除非你对启动过程非常非常了解。

离线

#3 2018-01-05 17:44:20

haski
会员
注册时间: 2018-01-04
帖子: 2

Re: [已解决]安装完成之后出现了/sbin/init does not exist .... rootfs#错误

搞定了,确实是2l说的/usr独立分区带来的问题。总结下以供参考,排查和解决方法是这样的:
首先通过

ls /new_root

排查new_root下的目录结构是否类似根的目录结构,如果是的,证明安装的分区应该没问题, 再通过

ls -l /new_root/sbin

查看是否是一个指向/usr/bin的软链接,如果没有链接的话可以尝试手动链接。再查看/usr/bin目录下是否存在init文件,如果存在链接并且init都存在的话证明是在rootfs下无法加载/usr的问题,可能和我一样都是没有注意archwiki里关于mkinitcpio里提到的独立分区/usr需要在/etc/mkinitcpio.conf下添加hook的问题。这里我直接引用一下

Archwiki 说:

/usr 放到单独分区
如果将 /usr 放在单独分区,必须满足:
添加 fsck 钩子,在/etc/fstab中将/usr的passno设置为0。这个对其他用户是推荐选项,而对 /usr 单独分区用户是硬性要求。不添加这个钩子,没有此选项,系统不好对/usr进行磁盘检查。
从 mkinitcpio 0.9.0 开始: 添加上面的钩子和 usr 钩子,它会在 root 挂载后挂载 /usr 分区。

直接讲做法吧,先通过livecd引导进入之后chroot,打开/etc/mkinitcpio.conf文件,找到HOOK那一行,在后面加上fsck usr shutdown,最终HOOK那一行看起来可能会是这样的

HOOKS=(base udev autodetect sata filesystems shutdown usr fsck)

之后不要忘记

 mkinitcpio -p linux 

,再打开/etc/fstab文件修改一下对应于/usr分区的passno,改为0,就大功告成了

离线

#4 2018-01-05 19:04:45

驿窗
驿窗
所在地: 基础开源研究
注册时间: 2016-06-03
帖子: 928
个人网站

Re: [已解决]安装完成之后出现了/sbin/init does not exist .... rootfs#错误

为什么想到要 /usr 单独分区?


开源/Linux大众化,从驿窗开始~

离线

页脚