Đây là phiên bản grub-pc 1.98 + 20100804-5ubfox3 (Maverick Meerkat).
Trình cài đặt grub2 có thể cài đặt cho các thiết bị loopback, nhưng nếu bạn sử dụng trình ánh xạ thiết bị, nó sẽ bị lẫn lộn và tin rằng bạn có sơ đồ LVM, thất bại một cách bí ẩn với một khiếu nại về sự trừu tượng bị thiếu.
Thay vào đó, bạn nên tự thiết lập thiết bị loopback cho phân vùng, với tên phải khớp với mẫu "/ dev / loop [0-9]", tức là không có bất kỳ trình thiết kế phân vùng nào ở cuối:
kpartx -v -a /dev/loop0
losetup /dev/loop1 /dev/mapper/loop0p1
mount /dev/loop1 /mnt
(Lưu ý rằng nếu bạn muốn grub-mkconfig / update-grub hoạt động trên ổ đĩa này, thì vòng lặp phân vùng phải được kết nối với loopback đĩa bên dưới / dev và không trực tiếp với tệp hình ảnh).
Vì bạn đã sử dụng fdisk để phân vùng hình ảnh, bạn có bảng phân vùng kiểu msdos (còn gọi là nhãn) và khởi động bằng BIOS. Ngoài việc đặt giai đoạn1 / boot.img vào MBR, giai đoạn1.5 / core.img sẽ được đặt trong một khu vực nhúng trong không gian không liên kết (!) Ngay sau đó và phải có không gian cho việc này.
Bí quyết bây giờ là nói cho trình cài đặt grub2 thông qua sơ đồ thiết bị về cách thiết lập loopback của bạn sẽ ánh xạ tới các ổ đĩa BIOS trong máy ảo. (Trong di sản grub1, điều này đã được thực hiện trực tiếp trong trình bao). Có lẽ bạn đang dự định khởi động hình ảnh này dưới dạng đĩa đầu tiên, vì vậy tôi đoán ánh xạ thích hợp sẽ là:
mkdir -p /mnt/boot/grub
cat > /mnt/boot/grub/device.map <<EOF
(hd0) /dev/loop0
(hd0,1) /dev/loop1
EOF
Ở đây tôi đã đặt bản đồ thiết bị bên trong hình ảnh đĩa khách, để bạn có thể tạo tệp cấu hình khởi động grub.cfg:
mount --bind /dev /mnt/dev
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
(Lưu ý rằng trình cài đặt sau của gói grub-pc sẽ chạy một đầu dò ghi đè lên bản đồ thiết bị (!), Vì vậy bạn sẽ phải viết nó sau khi cài đặt và tự chạy grub-mkconfig / update-grub).
Bây giờ hãy chạy trình cài đặt từ máy chủ lưu trữ , trỏ đến cài đặt của khách:
grub-install --no-floppy --grub-mkdevicemap=/mnt/boot/grub/device.map --root-directory=/mnt /dev/loop0
Cuối cùng, ngắt kết nối mọi thứ được thiết lập ở đây trước khi bắt đầu qemu trên hình ảnh của bạn:
umount /mnt/dev
umount /mnt
losetup -d /dev/loop1
kpartx -v -d /dev/loop0