是否可以将虚拟机转换为物理环境?

Wer*_*eta 86 virtualbox bare-metal virtual-machine

是否可以将 .vdi 文件转换为可以刻录到 cd 或 dvd 的 .iso 并使其像安装程序一样。或者是否可以将虚拟机转换为物理环境?

qua*_*ote 70

是的,也不是。

可以使用VBoxManage工具将 VDI 转换为磁盘映像。此命令将注册的虚拟磁盘映像克隆到另一个映像文件。如果您想将您的虚拟磁盘转换为另一种格式,这是要使用的官方 VirtualBox 工具[*]。

VBoxManage clonehd file.vdi output.img --format RAW
Run Code Online (Sandbox Code Playgroud)
  • 如果您使用的是动态 VDI,并且您使用的是旧版本的 VirtualBox,则clonehd可能无法正常运行。VBoxManage 的内部命令工具包括converttoraw,它可以将动态 VDI 转换为原始磁盘映像()[+]。

VBoxManage internalcommands converttoraw file.vdi output.img
Run Code Online (Sandbox Code Playgroud)

但是……输出的 IMG 文件不是 ISO 映像,并且安装的操作系统不会配置为从可引导 CD/DVD 运行。您可以将 IMG“刻录”(写入)到硬盘驱动器上,它可能会在裸硬件上启动(例如不在虚拟机中)。但它可能不会,因为安装在该 IMG 上的操作系统期望看到 VirtualBox 提供的虚拟硬件,而您正在它不期望的真实硬件上启动它。

某些版本的 Windows 不能很好地处理这种情况;一些 Linux 发行版可以。有时可以配置操作系统(事先或之后)以将其从一个环境迁移到另一个环境,但具体步骤完全取决于要迁移的操作系统。


在 Windows 上,您可能需要指定程序的完整路径:

"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]
Run Code Online (Sandbox Code Playgroud)

C:\Program Files\Sun\VirtualBox 添加到您的 PATH 以使用简短版本。


[*]我假设“--format RAW”选项将转换为标准磁盘映像,就好像您在物理硬盘上使用了dd命令一样。但坦率地说,我还没有找到任何支持这一点的文档,所以请注意这可能不正确。

[+]我刚刚在 VirtualBox 3.1.2 下测试了这两个命令。根据md5sum,两个输出文件是相同的,但我还没有完全测试输出文件。

另请参阅VirtualBox 论坛上的“关于 VDI”的教程

  • VDI 的大小如何?那有关系吗?假设 VDI 大小为 20GB,实际硬盘大小为 200GB...会发生什么? (4认同)

小智 22

如果您的 vdi 文件包含分区并且您只想提取其中一个分区,请使用以下命令:

首先,如quack quixote所说,将vdi文件转换为raw image文件:

# VBoxManage clonehd file.vdi file.raw --format RAW
Run Code Online (Sandbox Code Playgroud)

然后为图像设置循环设备:

# loopdev=$(losetup --show -r -f file.raw)
Run Code Online (Sandbox Code Playgroud)

使用 kpartx 为原始文件中的每个分区创建设备:

# apt-get install kpartx
# kpartx -a $loopdev
Run Code Online (Sandbox Code Playgroud)

看看我们现在有哪些设备。在此示例中,由于原始映像中只有一个分区,因此只有一台设备:

# ls /dev/mapper/loop*
/dev/mapper/loop0p1
Run Code Online (Sandbox Code Playgroud)

现在挂载它以验证一切正常:

# mkdir /mnt/part1
# mount /dev/mapper/loop0p1 /mnt/part1
# ls /mnt/part1
# umount /mnt/part1
Run Code Online (Sandbox Code Playgroud)

使用 dd 将分区内容复制到另一个目标分区:

# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M
Run Code Online (Sandbox Code Playgroud)

完成后再次删除设备映射:

# kpartx -d file.raw
Run Code Online (Sandbox Code Playgroud)


小智 13

答案是肯定的,如果您的主机和来宾系统是 Linux。它是通过包qemuTKLPatch. 您可以使用 VDI 或 VMDK 文件。

阅读更多:

  • +1 *"确定"* 带有警告 *"..只要您的客人是 linux"*。他们(您的?)解决方案依赖于一些 TurnKey Linux 工具。但程序看起来很健全。(欢迎超级用户!) (3认同)

小智 7

我试图VBoxManage clonehd file.vdi output.img --format RAW接受的答案,但没有成功。

在 Windows 7 主机上使用 Windows 8.1 虚拟机对我有用的是:

  1. 在 VirtualBox 中制作一台 Windows 8.1 机器,安装和使用就像通常使用 VM 一样。
  2. 转换的虚拟框.vdi硬盘到Windows VHDVBoxManage clonehd source.vdi target.vhd --format vhd
  3. 将 VHD 挂载在主机 Windows 机器中作为驱动器(您可以在计算机管理的磁盘管理器中挂载 VHD。
  4. 将 VHD(安装为驱动器)克隆到另一个新硬盘(在我的情况下为 USB 连接的笔记本电脑 HD)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 主机。


归档时间:

查看次数:

177171 次

最近记录:

4 年,2 月 前