Debian
grub-mkconfig 在 chroot 環境中給出錯誤
我正在嘗試從頭開始手動將 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