Копировать ВМ из гипервизора Xen

Копировать ВМ из гипервизора Xen

Я скопировал (используя команду dd) целый диск виртуальной машины Debian7, работающей на сервере Xen. Мне удалось преобразовать необработанный образ в формат kvm (qemu-img). Затем я создал новую виртуальную машину и прикрепил образ диска (используя KVM). После неудачной попытки загрузки (просто черный экран) я решил скачать iso(Debian7) и загрузиться в режиме восстановления. Используя режим восстановления, я переустановил ядро ​​(3.2.0-4-amd64) и обновил initramfs. Я также добавил несколько строк в /etc/modules:

    alias eth0 pcnet32 
    alias scsi_hostadapter mptbase 
    alias scsi_hostadapter2 mptspi 
    alias scsi_hostadapter3 ata_piix 
    alias scsi_hostadapter4 virtio_blk

Тем не менее, когда я пытаюсь загрузиться, все, что я получаю, это:

   Loading Linux 3.2.0-4-amd64 
   Loading initial ramdisk

У меня есть root-доступ к работающей виртуальной машине, но нет никакого доступа к гипервизору Xen.

Можно ли что-нибудь сделать, чтобы загрузить эту виртуальную машину на моем KVM/virtualbox/ESXi?

Вопрос отмечен тегом VMware, потому что в конце концов я собираюсь разместить это на VMware. Я использую kvm, чтобы понять правила импорта из Xen (para vs virtualization).

ИЗМЕНИТЬ 01.04.2020

Привет, Eblock, спасибо за совет. Я следовал твоей статье и проверил список доступных модулей virtio на исходной виртуальной машине, который выглядит следующим образом:

    # find /lib/modules/ -name *virt*
    /lib/modules/3.2.0-4-amd64/kernel/net/9p/9pnet_virtio.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/net/virtio_net.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/scsi/virtio_scsi.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/block/virtio_blk.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/virtio
    /lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio_pci.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio_ring.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio_balloon.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/char/virtio_console.ko
    /lib/modules/3.2.0-4-amd64/kernel/drivers/char/hw_random/virtio-rng.ko
    /lib/modules/3.2.0-4-amd64/kernel/sound/pci/oxygen/snd-virtuoso.ko

Затем я добавил эти модули virtio как в /etc/modules, так и в /etc/initramfs-tools/modules и обновил initramfs командой initramfs-update (в режиме восстановления). Теперь моя гостевая виртуальная машина Debian KVM (в настоящее время запущенная в режиме восстановления с CD) показывает загруженные модули (рисунок ниже, к сожалению, невозможно скопировать и вставить текст с экрана KVM):

загруженные модули

Но мне по-прежнему не удаётся загрузить виртуальную машину :( Всё, что я получаю:

    Decompressing Linux... Parsing ELF    Done
    Booting the kernel...

Что еще мне стоит попробовать? Компиляция ядра со встроенными модулями virtio?

решение1

Все хорошо, VM загружается, запуская все службы (довольно много) правильно. Оказалось, что eblock был прав: добавления модулей в ядро ​​и initrd было достаточно. Одной недостающей частью был ttyS0 вместо tty0, настроенный в grub («способ xen», поскольку xen подключается через порты 'S'), что было причиной отсутствия обычного списка шагов загрузки. Также была проблема со слишком быстрым возрождением mingetty (что приводило к бесконечным '5-минутным задержкам'), поэтому я переключился на tty в /etc/inittab:

    1:2345:respawn:/sbin/getty tty1
    2:2345:respawn:/sbin/getty tty2
    ....

Все хорошо, спасибо eblock

Связанный контент