grub-mkconfig 在 chroot 环境中给出错误

grub-mkconfig 在 chroot 环境中给出错误

我正在尝试从头开始手动将 Debian 安装到 Live Debian CD 中的外部磁盘上。

我按照说明通过 multistrap 创建了 Debian Stretch rootfs从这里 (44fbcc

在内部chroot环境中,当涉及到Grub安装时,我将Grub2安装到MBR:

debian:~# grub-install /dev/sdX --boot-directory=/boot

命令运行没有错误。当我需要创建 时/boot/grub/grub.cfg,它会抛出以下错误:

debian:~# grub-mkconfig
/usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).

是的,/dev与 、 一起安装/sys/proc并且/run 这里

如何生成grub.cfg内部chroot环境?

答案1

错误消息的有意义部分是cannot find a device for /,因为mount命令不输出 的设备条目/

我在问题中没有告诉的是我试图将 rootfs 直接安装到 BTRFS 子卷中。显然,在这种情况下chroot无法检测到设备。/

这是我当前正在做的事情:(X是根分区(设备),Y是启动分区)

host:# mount /dev/X /mnt/mydiskroot
host:# btrfs sub create /mnt/mydiskroot/rootfs
host:# mkdir /mnt/mydiskroot/rootfs/boot
host:# mount /dev/Y /mnt/mydiskroot/rootfs/boot
host:# rsync -avP debian-stretch-rootfs/ /mnt/mydiskroot/rootfs
host:# do-chroot.sh /mnt/mydiskroot/rootfs
root@guest:/#  mount | awk '$3 == "/" {print}' # nothing shows up, so update-grub throws the mentioned error

这是我解决的方法:

root@guest:/# exit
host:# mkdir /mnt/actual-rootfs
host:# mount -t btrfs -o subvol=rootfs,defaults /dev/X /mnt/actual-rootfs/
host:# umount /dev/Y
host:# mount /dev/Y /mnt/actual-rootfs/boot
host:# do-chroot.sh /mnt/actual-rootfs
root@guest:/# mount | awk '$3 == "/" {print}'
/dev/X on / type btrfs (rw,relatime,space_cache,subvolid=257,subvol=/rootfs)
root@guest:/# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.0-11-amd64
Found initrd image: /boot/initrd.img-4.9.0-11-amd64
done

相关内容