Как установить личинку в .img файл?

Я сделал следующее:

  1. созданный пустой .img файл с dd
  2. связанный это с/dev/loop0 с losetup
  3. созданный раздел в нем с fdisk
  4. отформатированный такой раздел с mke2fs
  5. скопированный пользовательская система GNU/Linux в тот раздел

Теперь я хотел бы сделать .img файл загрузочным путем установки личинки в ее MBR и каталог начальной загрузки/. Моя цель состоит в том, чтобы загрузить .img файл qemu. Было бы лучше, если grub2 используется вместо наследия личинки.

Спасибо.

26
задан 14.04.2010, 21:03

1 ответ

Это с версией ПК личинки 1.98+20100804-5ubuntu3 (Независимая Суриката).

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 для разделения изображения, у Вас есть таблица разделов стиля MS-DOS (иначе маркировка), и начальная загрузка с помощью BIOS. В дополнение к помещению stage1/boot.img в MBR stage1.5/core.img будет помещен в область встраивания в неразделенном пространстве (!) после прямо после, и должно быть пространство для этого.

Прием должен теперь сказать grub2 установщик через карту устройства, как Ваша петлевая установка отобразится на диски BIOS в виртуальной машине. (В 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-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
24
ответ дан 07.12.2019, 09:32

Теги

Похожие вопросы