是否可以将 .vdi 文件转换为可以刻录到 cd 或 dvd 的 .iso,并使其像安装程序一样。或者是否可以将虚拟机转换为物理环境?
答案1
是的,也不是。
你能将 VDI 转换为磁盘映像垂直框管理工具。此命令克隆已注册的虚拟磁盘映像转换为另一个映像文件。如果您想将虚拟磁盘转换为其他格式,这是要使用的官方 VirtualBox 工具[*]。
VBoxManage clonehd file.vdi output.img --format RAW
- 如果你使用的是动态 VDI,并且使用的是旧版本的 VirtualBox,克隆高清可能无法正常运行。VBoxManage 的内部命令工具包括原始转换,它可以将动态 VDI 转换为原始磁盘映像(来源)[+].
VBoxManage internalcommands converttoraw file.vdi output.img
但... 输出的 IMG 文件不是 ISO 映像,并且安装的操作系统不会配置为从可启动 CD/DVD 运行。您可以将 IMG“刻录”(写入)到硬盘驱动器上,并且它可能会在裸机上启动(例如,不在虚拟机中)。但可能不会,因为安装在该 IMG 上的操作系统希望看到 VirtualBox 提供的虚拟硬件,而您正在它没有预料到的真实硬件上启动它。
某些版本的 Windows 不能很好地处理这种情况;而某些 Linux 发行版可以。有时可以配置操作系统(事先或事后)以将其从一个环境迁移到另一个环境,但具体步骤完全取决于要迁移的操作系统。
在 Windows 上,您可能需要指定程序的完整路径:
"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]
添加目录:C:\Program Files\Sun\VirtualBox到你的 PATH 中来使用简短版本。
[*]我假设“--格式化 RAW”选项将转换为标准磁盘映像,就像你使用了日命令在物理硬盘上执行。但坦率地说,我还没有找到任何支持这一观点的文档,所以请注意这可能不正确。
[+]我刚刚在 VirtualBox 3.1.2 下测试了这两个命令。根据md5sum,但我还没有完全测试输出文件。
另请参阅“关于 VDI 的一切”教程在 VirtualBox 论坛上。
答案2
如果您的 vdi 文件包含分区并且您只想提取其中一个,请使用以下命令:
首先,正如 quack quixote 之前所说,将 vdi 文件转换为原始图像文件:
# VBoxManage clonehd file.vdi file.raw --format RAW
然后为图像设置一个循环设备:
# loopdev=$(losetup --show -r -f file.raw)
使用 kpartx 为原始文件中的每个分区创建设备:
# apt-get install kpartx
# kpartx -a $loopdev
查看我们现在有哪些设备。在此示例中,只有一个设备,因为原始映像中只有一个分区:
# ls /dev/mapper/loop*
/dev/mapper/loop0p1
现在安装它来验证一切是否正常工作:
# mkdir /mnt/part1
# mount /dev/mapper/loop0p1 /mnt/part1
# ls /mnt/part1
# umount /mnt/part1
使用 dd 将分区内容复制到另一个目标分区:
# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M
完成后再次删除设备映射:
# kpartx -d file.raw
答案3
答案4
我以非常快的速度完成这个过程,在 Linux 中只需两行命令:
#
VBoxManage 内部命令 converttoraw your_disk_virtual.vmdk your_disk_virtual.img
或者
#
VBoxManage 内部命令 converttoraw your_disk_virtual.vdi your_disk_virtual.img
#
mv 你的磁盘虚拟.img 你的磁盘虚拟.iso