Debian

grub-mkconfig 在 chroot 環境中給出錯誤

  • December 23, 2019

我正在嘗試從頭開始手動將 Debian 安裝到實時 Debian CD 中的外部磁碟。

我按照此處 ( 44fbcc)中的說明通過 multistrap 創建了一個 Debian Stretch rootfs 。

在內部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環境?

錯誤消息的有意義的部分是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

引用自:https://unix.stackexchange.com/questions/558604