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