Как настроить облачный образ в VirtualBox?

Я хотел бы превратить образ диска из облачного изображения (прежнее изображение UEC) в загрузочный VirtualBox (для Vagrant). Я могу запустить изображение в kvm (используя https://help.ubuntu.com/community/UEC/Images в качестве стартера), но как я могу превратить файл .img в загрузочный VirtualBox диск? Я бы предпочел не использовать дискету как загрузку.

5
задан 23 September 2011 в 20:16

4 ответа

Решение действительно должно сделать само загружаемое изображение. После нескольких дней поиска в interwebs я обнаружил, что решение заключается в использовании пакета extlinux, который является производным от syslinux - решения для загрузки загрузочных дисков FAT. extlinux работает с e2fs и производными, это отлично работает на любой старой системе ext2.

mkdir /mnt/image
mount -o loop cloud-image.img /mnt/image
mkdir /mnt/image/extlinux/
extlinux --install /mnt/image/extlinux/
echo "DEFAULT /vmlinuz" > /mnt/image/extlinux/extlinux.conf
echo "APPEND root=/dev/sda init=/usr/lib/cloud-init/uncloud-init" \
     "ubuntu-pass=ubuntu ds=nocloud" >> /mnt/image/extlinux/extlinux.conf
umount /mnt/image

Это сделает загрузочное изображение и extlinux и т. д.

Примечания: Я не определил, как указать APPEND, который позволяет ему использовать «root = LABEL = cloudimage-rootfs».

Полученное изображение может затем загрузиться с помощью qemu, kvm или vmware, без дополнительных дискет, ядер или чего-то еще. И из того, что я понимаю, apt-get для обновления ядра сделает это ядро ​​активным следующей загрузкой.

будет : Я забыл упомянуть очевидное, что вам нужно выполнить этот цикл -back на изображении необработанного диска, а затем преобразовать полученный файл в VDI с помощью vboxmanage convertfromraw cloud-image.img cloud-image.vdi

1
ответ дан 25 May 2018 в 18:40
  • 1
    root = LABEL = cloudimage-rootfs может быть заменен на root = / dev / disk / by-label / cloudimg-rootfs не проверен, но я предполагаю, что initrd использует udev, насколько я знаю, LABEL имеет тенденцию быть переменной сценария инициализации , что означает его зависимость от сценариев инициализации ubuntu, о которых я не знаю достаточно. – strings 8 January 2013 в 05:07
  • 2
    Почему бы просто не загрузить VM и установить grub? – Blaisorblade 12 February 2014 в 11:16
  • 3
    Суть заключалась в том, чтобы сделать это без необходимости загружать его, чтобы поддерживать такие вещи, как cloud-init в не облачной среде, используя фондовые изображения UEC. Я думаю, что этот ответ может быть устаревшим, поскольку я видел, что изображения UEC на самом деле загружаются как есть (что не так было пару лет назад). – mogsie 20 February 2014 в 17:08
  • 4
    Если вы хотите использовать VirtualBox, вы можете использовать VBoxManage internalcommands createrawvmdk -filename cloud-image.vmdk -rawdisk cloud-image.img для создания файла метаданных для использования изображения с новой виртуальной машиной. – Florian 2 August 2016 в 16:22

Решение действительно должно сделать само загружаемое изображение. После нескольких дней поиска в interwebs я обнаружил, что решение заключается в использовании пакета extlinux , который является производным от syslinux - решения для загрузки загрузочных дисков FAT. extlinux работает с e2fs и производными, это отлично работает на любой старой системе ext2.

mkdir /mnt/image
mount -o loop cloud-image.img /mnt/image
mkdir /mnt/image/extlinux/
extlinux --install /mnt/image/extlinux/
echo "DEFAULT /vmlinuz" > /mnt/image/extlinux/extlinux.conf
echo "APPEND root=/dev/sda init=/usr/lib/cloud-init/uncloud-init" \
     "ubuntu-pass=ubuntu ds=nocloud" >> /mnt/image/extlinux/extlinux.conf
umount /mnt/image

Это сделает загрузочный образ, а отключит встроенные методы инициализации облаков и так далее .

Примечания: Я не разработал, как указать APPEND, который позволяет ему использовать «root = LABEL = cloudimage-rootfs».

Полученное изображение может затем загрузитесь с помощью qemu, kvm или vmware, без дополнительных дискет, ядер или чего-нибудь еще. И из того, что я понимаю, apt-получить обновление ядра будет сделать это ядро ​​активным следующей загрузки.

изменить : я забыл упомянуть очевидное что вам нужно выполнить этот обратный монтаж на изображении необработанного диска, а затем преобразовать полученный файл в VDI, используя vboxmanage convertfromraw cloud-image.img cloud-image.vdi

1
ответ дан 4 August 2018 в 18:46

Возможно, это полезно? http://en.wikibooks.org/wiki/QEMU/Images#Exchanging_images_with_VirtualBox

1
ответ дан 25 May 2018 в 18:40
  • 1
    Хотя, конечно, полезно, это не помогает в текущей проблеме, поскольку файл на диске из облачных образов не является загрузочным диском. Он работает в KVM, потому что я могу загрузить определенный файл ядра и сообщать ему, где находится корневая файловая система. Мне нужен способ превратить образ диска в загрузочный диск . – Magne Rasmussen 26 September 2011 в 11:26
  • 2
    Затем вы должны решить эту проблему так же, как и с помощью реального компьютера, и загрузить изображение в реальном времени cd / usb, chroot целевой диск и установить загрузчик и ядро. Начните там, заведите его в KVM , затем преобразуйте его в образ VirtualBox. – ppetraki 27 January 2012 в 09:02
  • 3
    @ppetraki хотят сделать это ответом на выживание? – Tom Brossman 3 April 2012 в 18:14
  • 4
    @Tom: К сожалению, я больше не использую Vbox. – ppetraki 3 April 2012 в 20:10
1
ответ дан 6 August 2018 в 03:10

Другие вопросы по тегам:

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