从 Xen 虚拟机管理程序复制 VM

从 Xen 虚拟机管理程序复制 VM

我已经复制(使用 dd 命令)在 Xen 服务器上运行的 Debian7 VM 的整个磁盘。我能够将原始图像转换为 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

我拥有运行 VM 的 root 访问权限,但无法访问 xen 虚拟机管理程序

我可以做些什么来在我的 KVM/virtualbox/ESXi 上启动此虚拟机吗?

问题标有 VMware 标签,因为最后我要把它放在 VMware 上。我正在使用 kvm 来了解从 Xen 导入的规则(para 与虚拟化)。

编辑2020年4月1日

您好,Eblock,谢谢您的建议。我按照您的文章检查了源VM上可用的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-update 命令更新 initramfs(在救援模式下)。现在我的 KVM-guest Debian VM(当前从 CD 以救援模式运行)显示已加载的模块(下图,不幸的是无法从 KVM 屏幕复制粘贴文本):

加载的模块

然而,启动虚拟机仍然没有运气:(我得到的是:

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

还有什么我应该尝试的吗?使用内置 virtio 模块编译内核?

答案1

一切都很好,VM 启动并正确启动所有服务(相当多)。事实证明,eblock 是对的:向内核和 initrd 添加模块就足够了。一个缺失的部分是 ttyS0 而不是 grub 中配置的 tty0(“xen 方式”,因为 xen 通过“S”端口连接),这是缺少通常的引导步骤列表的原因。还有一个问题是 Mingetty 重生太快(导致无休止的“5 分钟延迟”),所以我在 /etc/inittab 中切换到 tty:

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

一切都很好,谢谢 eblock

相关内容