您可以使用VBoxManage工具将VDI转换为磁盘镜像。这个命令 克隆一个注册的虚拟磁盘镜像 到另一个镜像文件。如果你想把你的虚拟磁盘转换为其他格式,这是官方的VirtualBox工具[*]。
VBoxManage clonehd file.vdi output.img --format RAW
VBoxManage internalcommands converttoraw file.vdi output.img
But……那个输出的IMG文件不是ISO映像,安装的操作系统不会被配置为从可启动的CD/DVD中运行。你可以把IMG “刻录"(写入)到硬盘上,它可能会在裸硬件上启动(例如不在虚拟机中)。但也可能不是,因为安装在IMG上的操作系统希望看到VirtualBox提供的虚拟硬件,而你在它不希望看到的真实硬件上启动它。
某些版本的Windows不能很好地处理这种情况;某些Linux发行版则可以。有时可以对操作系统进行配置(事前或事后),将其从一个环境迁移到另一个环境,但具体步骤完全取决于被迁移的操作系统。
在Windows上,你可能需要指定程序的完整路径。
"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]
将C:\Program Files\Sun\VirtualBox添加到你的PATH中,以使用简版。
[*] 我假设”–format RAW"选项会转换为标准的磁盘镜像,就像你在物理硬盘上使用dd命令一样。但老实说,我还没有找到任何文档来支持这一点,所以请注意这可能不正确。
[+] 我刚刚在VirtualBox 3.1.2下测试了两个命令。根据md5sum,两个输出文件都是相同的,但我还没有完全测试输出文件。
也请参见VirtualBox论坛的“All about VDIs”教程。
如果你的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
使用dd复制分区内容到另一个目标分区:
0x1&
答案是肯定的,如果你的主机和客机系统是Linux的话。它是用qemu
和TKLPatch
的包来完成的。你可以同时使用VDI或VMDK文件。
阅读更多。
我尝试了接受的答案的VBoxManage clonehd file.vdi output.img --format RAW
,但没有太大成功。
我在Windows 7主机上使用Windows 8.1虚拟机的方法是这样的。
1.在VirtualBox中制作一个Windows 8. 1的机器,安装并使用,就像通常使用虚拟机一样。
2. 将Virtual Box .vdi硬盘转换为Windows VHD 用VBoxManage clonehd source.vdi target.vhd --format vhd
3.
3. 将 VHD 挂载到主机 Windows 机器中 作为驱动器(您可以在计算机管理中的磁盘管理器中挂载 VHD。
4. 克隆VHD(挂载为驱动器)到另一个新的硬盘(在我的例子中是一个USB连接的笔记本硬盘) DriveImage XML 或类似的磁盘克隆工具。你现在基本上已经把虚拟硬盘.VDI克隆到裸机上了。
5. 将新的硬盘安装在一台机器上。(在我的例子中,交换笔记本硬盘)
6. 插入一个Windows 8.1的安装USB/CD,从它启动,选择高级选项和自动修复。自动修复会使新硬盘可以启动。
7. 用克隆的Windows 8.1从新硬盘启动,并运行Windows更新。这将为您的计算机硬件下载驱动程序,这些驱动程序是您在VirtualBox中运行Windows时不知道的。如果有缺失的驱动程序,您必须手动安装。
8. 卸载VirtualBox Guest Additions。选择安装VirtualBox,这样你的裸机Windows 8.1就可以成为VirtualBox主机了。
我做这个过程的速度非常快,在Linux中只需要两行命令:
#
VBoxManage internalcommands converttoraw your/disk/virtual.vmdk your/disk/virtual. img
OR
#
VBoxManage internalcommands converttoraw yourdisk/virtual.vdi yourdisk/virtual.img
#
mv your_disk/virtual.img your/disk/virtual.iso