如何从 Windows C:\ 驱动器创建动态 qcow2 映像?

如何从 Windows C:\ 驱动器创建动态 qcow2 映像?

我想将我之前的笔记本电脑上的 Windows 7 C:\ 驱动器转换为 qcow2 映像,以便用它在新计算机(基于 Linux)上创建 KVM 虚拟机。

我想最简单的方法就是某种dd加法运算qemu-img convert

1.) 从实时系统启动旧的 W7 笔记本电脑并运行: dd if=/dev/sda1 of=/path/to/W7.img

(我是否需要添加任何dd选项来使其可启动?是否有任何其他选项[对于块大小]推荐?)

2.)在新机器上说类似
qemu-img convert -f raw -O qcow2 /path/to/W7.img /path/to/W7.qcow2

我想这应该会给我一个与 C:\ 驱动器大小相同的非常精确的副本。

现在原始的 C: 驱动器相当大并且有一半是空的,所以我希望最终有一个动态扩展的 qcow2 图像,并同样减小它的尺寸。

我可以向操作中添加任何选项qemu-img convert来帮助实现这一目标吗?

答案1

已经有一个可以进行这种转换的工具,叫做virt-p2v

首先,libguestfs-tools在您的 Ubuntu 系统上安装,它将作为新 KVM 虚拟机的管理程序。这将安装virt-p2vvirt-v2vvirt-p2v-make-disk这些都是您需要的。

sudo apt install libguestfs-tools

现在将 USB 插入 Linux 系统,记下其/dev/sd*设备名称,然后运行virt-p2v-make-disk以创建可启动的 virt-p2v 环境,稍后您将从该环境启动 Windows 计算机。(或者参阅手册页了解创建可启动映像的其他选项。

sudo virt-p2v-make-disk -o /dev/sd*

现在从此 USB 启动 Windows 系统。系统会要求您提供 SSH 到 Linux 计算机的凭证。您需要启用 root在 Ubuntu 机器上,或者设置无密码 sudo为您的帐户。

设置 ssh 后,virt-p2v 会询问您一些有关要创建的虚拟机的问题,然后它会开始将数据从物理机复制到 Ubuntu 服务器。

答案2

另一种方法是连接笔记本电脑驱动器(我使用 M2 存储到 SATA 适配器 - 小心 M2 pci 适配器也无法工作。或者通过网络。)

基于原始分区创建虚拟机。Virt-manager 和 VBox 都可以做到这一点。它非常安全且稳定,在 Ubuntu 中使用原始分区的 Windows 已经有一段时间了,没有任何问题,但您也可以复制分区或使用 KDE Part-mgr 将其备份到文件。Windows 喜欢有自己的分区表,因此请使用整个驱动器 /dev/sdX。

然后将 Clonezilla ISO 附加到 VM,以及 Qcow2 的目标存储位置,启动 ISO,它会将驱动器克隆到一个文件中。我相信它也可以做相反的事情。

编辑:我刚刚确认使用 dd 复制整个 Windows 驱动器,然后使用 qemu-img 将其转换为 qcow2 确实有效。https://moozing.wordpress.com/2015/06/24/converting-a-physical-machine-to-a-virtual-machine/

上述方法和 Clonezilla p2v 均能正常工作。让 EFI 在 VM 管理器中工作很重要。以下是有关如何使用 VMM/KVM 执行此操作的一些信息:https://unix.stackexchange.com/questions/612813/virt-manager-change-firmware-after-installation

这里有一些链接来澄清使用 CLoneZilla 的不太清楚的恢复步骤(该步骤有注释:“不要再进入文件夹。按两次 tab 键并输入以选择完成”): https://support.onlogic.com/documentation/linux-clonezilla/
https://clonezilla.org/clonezilla-live-doc.php

相关内容