grub-mkconfigはchroot環境でエラーを発生させる

grub-mkconfigはchroot環境でエラーを発生させる

Live Debian CDから外部ディスクに最初からDebianを手動でインストールしようとしています。

マルチストラップでDebian Stretch rootfsを作成するための指示に従いました。ここから( 44fbcc)

内部chroot環境では、Grubのインストールに関してMBRにGrub2をインストールしました。

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

おすすめ記事