이것은 grub-pc 버전 1.98 + 20100804-5ubuntu3 (Maverick Meerkat)과 함께 제공됩니다.
grub2 설치 프로그램은 장치를 루프백 장치에 설치할 수 있지만 장치 매퍼를 사용하여 마운트하면 LVM 체계가 혼란스러워 추상화 누락에 대한 불만으로 인해 실패하게됩니다.
대신, "/ dev / loop [0-9]"패턴과 일치 해야하는 이름을 사용하여 파티션에 대한 루프백 장치를 직접 설정 해야합니다 ( 예 : 끝에 파티션 지정자가없는 경우).
kpartx -v -a /dev/loop0
losetup /dev/loop1 /dev/mapper/loop0p1
mount /dev/loop1 /mnt
grub-mkconfig / update-grub이이 볼륨에서 작동하게하려면 파티션 루프백 을 이미지 파일이 아닌 / dev 아래의 디스크 루프백에 연결해야합니다 .
fdisk를 사용하여 이미지를 분할 했으므로 msdos 스타일의 파티션 테이블 (일명 레이블)이 있고 BIOS를 사용하여 부팅합니다. stage1 / boot.img를 MBR에 넣는 것 외에도 stage1.5 / core.img는 바로 다음에 파티션되지 않은 공간 (!) 의 임베드 영역 에 배치되며 이에 대한 공간이 있어야합니다.
요령은 루프백 설정이 가상 머신의 BIOS 드라이브에 어떻게 매핑되는지 장치 맵을 통해 grub2 설치 프로그램에 알리는 것입니다. (grub1 레거시에서 이것은 쉘에서 직접 수행되었습니다). 이 이미지를 첫 번째 디스크로 부팅 할 계획이므로 적절한 매핑은 다음과 같습니다.
mkdir -p /mnt/boot/grub
cat > /mnt/boot/grub/device.map <<EOF
(hd0) /dev/loop0
(hd0,1) /dev/loop1
EOF
부팅 디스크 구성 파일 grub.cfg를 생성 할 수 있도록 게스트 디스크 이미지 안에 장치 맵을 넣었습니다.
mount --bind /dev /mnt/dev
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
(grub-pc 패키지의 설치 후 관리자는 장치 맵을 덮어 쓰는 프로브를 실행합니다 (!). 설치 후에 이를 작성하고 grub-mkconfig / update-grub을 직접 실행해야합니다).
이제 호스트 에서 설치 관리자를 실행하고 게스트 설치를 가리 킵니다.
grub-install --no-floppy --grub-mkdevicemap=/mnt/boot/grub/device.map --root-directory=/mnt /dev/loop0
마지막으로 이미지에서 qemu를 시작하기 전에 여기에 설정된 모든 것을 마운트 해제하십시오.
umount /mnt/dev
umount /mnt
losetup -d /dev/loop1
kpartx -v -d /dev/loop0