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