我使用 grub 启动了系统:
linux /boot/vmlinuz-4.5.0 root=/dev
initrd /boot/initrd-4.5.0
我将 root 设置为 dev 是为了让它无法正确启动。当然,它又回到了 busybox 的东西;我在网上看到您可以使用 mount 并以某种方式启动 init 。我四处寻找,在/sbin下找到了switch_root并尝试使用它,但没有成功。如何更改 root 并以 PID 1 启动 init?另外,我的 init 是 System V,所有内容都在同一分区上。
答案1
您需要安装要切换到的根目录。我假设您已经知道如何做到这一点。基本上只是mkdir /newroot; mount -r /dev/something /newroot
那么你需要代替您当前正在运行的后备 shell。它以 PID 1 运行(您可以使用 验证echo $$
),并且目标 init 需要再次获取该数字。所以你需要一个exec
内置的 shell 来使用。
switch_root
至少接受两个参数:要切换的根目录,以及切换后要运行的 init 可执行文件名。
所以你只需更换你的后备外壳:
exec switch_root /newroot /sbin/init
,并/sbin/init
在将root改为mounted后再次获得PID 1 /newroot
,并可以继续进一步初始化。