Debian 系统安装在U盘上,系统无法正常启动,进到 initramfs 提示符下。

mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

(initramfs)

原因

引导器找不到系统分区的设备名,找不到当然就无法挂载设备到各项目录了。

解决方法

LiveCD 下挂载U盘,chroot 进去修改 grub2 的配置。例如,设备为 /dev/sdc:

$ sudo fdisk -l
设备       启动  起点     末尾     扇区  大小 Id 类型
/dev/sdc1        2048 15632383 15630336  7.5G 83 Linux

查看设备 PARTUUID 信息

$ blkid
/dev/sdc1: UUID="04b71e5c-9343-42f1-81c9-24e752a96789" TYPE="ext4" PARTUUID="83ad6361-01"

挂载 /dev/sdc1 到 LiveCD 的 /mnt

$ sudo mount /dev/sdc1 /mnt

挂载其他设备文件:

$ for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

进入 chroot 环境:

$ sudo chroot /mnt

编辑 grub2 配置文件:

$ sudo nano /etc/default/grub

在配置文件中添加下面两行,其中 PARTUUID 替换成上面查到的实际值:

GRUB_DISABLE_LINUX_UUID=true
GRUB_DEVICE="PARTUUID=83ad6361-01"

更新 grub:

$ sudo update-grub

退出 chroot 环境,卸载文件系统:

$ exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Reference