如何将平面原始磁盘映像转换为 virtualbox 或 vmplayer 的 vmdk?
我有一些旧 Linux 文件系统的平面文件格式的旧映像。 它们可以被 Bochs 使用,但我需要使用 虚拟盒子。 Virtual Box 无法使用这种格式的图像,因此我需要将这些图像从平面文件转换为 .vmdk 文件格式。 有什么办法可以做到这一点吗?
I have some old images of old Linux filesystems in flat file format. they can be used by Bochs, but I need to run them with Virtual Box. Virtual Box cannot use images in this format, so I need to convert these images from flat file to .vmdk file format. Is there any way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
首先,安装QEMU。 在基于 Debian 的发行版(例如 Ubuntu)上,运行:
然后运行以下命令:
我假设平面磁盘映像是
dd
样式的映像。 转换操作还可以处理许多其他格式。有关 qemu-img 命令的更多信息,请参阅以下命令的输出
First, install QEMU. On Debian-based distributions like Ubuntu, run:
Then run the following command:
I’m assuming a flat disk image is a
dd
-style image. The convert operation also handles numerous other formats.For more information about the
qemu-img
command, see the output of由于问题提到了 VirtualBox,所以这个目前有效:
在不带参数的情况下运行它以获得一些有趣的细节(特别是
--variant
标志):Since the question mentions VirtualBox, this one works currently:
Run it without arguments for a few interesting details (notably the
--variant
flag):回答 TJJ:但是是否也可以在不复制整个文件的情况下执行此操作?因此,只是为了以某种方式创建一个额外的 vmdk-metafile,它引用原始 dd-image。
是的,这是可能的。 以下是如何在 VirtualBox 中使用平面磁盘映像:
首先,以通常的方式使用 dd 创建一个映像:
然后,您可以为 VirtualBox 创建一个引用该映像的文件:
您可以在 VirtualBox 中按原样使用该映像,但具体取决于来宾操作系统可能不会立即可见。 例如,我尝试在 Windows 客户操作系统上使用此方法,并且必须执行以下操作来为其指定驱动器号:
您可能想访问 Linux 上的文件。 首先将其从来宾操作系统中卸载,然后将其从虚拟机中删除。 现在我们需要创建一个引用该分区的虚拟设备。
响应:
记下分区的起始位置:63。在下面的命令中,我使用了loop4,因为它是我的情况下第一个可用的循环设备。
回应:
耶!
To answer TJJ: But is it also possible to do this without copying the whole file? So, just to somehow create an additional vmdk-metafile, that references the raw dd-image.
Yes, it's possible. Here's how to use a flat disk image in VirtualBox:
First you create an image with dd in the usual way:
Then you can create a file for VirtualBox that references this image:
You can use this image in VirtualBox as is, but depending on the guest OS it might not be visible immediately. For example, I experimented on using this method with a Windows guest OS and I had to do the following to give it a drive letter:
You might want to access your files on Linux. First dismount it from the guest OS to be sure and remove it from the virtual machine. Now we need to create a virtual device that references the partition.
Response:
Take note of the start position of the partition: 63. In the command below I used loop4 because it was the first available loop device in my case.
Response:
Yay!
在 Windows 上,使用 https://github.com/Zapotek/raw2vmdk 转换由 dd 或winhex 到 vmdk。 raw2vmdk v0.1.3.2 有一个错误 - 创建 vmdk 文件后,编辑 vmdk 文件并修复原始文件的路径(在我的例子中,而不是 D:\Temp\flash_16gb.raw (由 winhex 创建)路径为 D:Tempflash_16gb.raw)。 然后,在 vmware 虚拟机版本 6.5-7 中打开它(5.1 拒绝附加 vmdk 硬盘驱动器)。 哎哟!
On windows, use https://github.com/Zapotek/raw2vmdk to convert raw files created by dd or winhex to vmdk. raw2vmdk v0.1.3.2 has a bug - once the vmdk file is created, edit the vmdk file and fix the path to the raw file (in my case instead of D:\Temp\flash_16gb.raw (created by winhex) the generated path was D:Tempflash_16gb.raw). Then, open it in a vmware virtual machine version 6.5-7 (5.1 was refusing to attach the vmdk harddrive). howgh!
也许您应该尝试使用 Starwind V2V Converter,您可以从这里获取它 - http://www.starwindsoftware.com/转换器。 它还支持 IMG 磁盘格式,并在 IMG、VMDK 或 VHD 之间执行逐扇区转换,无需对源映像进行任何更改。 这个工具是免费的:)
Maybe you should try using Starwind V2V Converter, you can get it from here - http://www.starwindsoftware.com/converter. It also supports IMG disk format and performs sector-by sector conversion between IMG, VMDK or VHD into and from any of them without making any changes to source image. This tool is free :)
krosenvold的答案启发了以下脚本,该脚本执行以下操作:
脚本可重新启动并检查中间文件是否存在。 它还使用 pv 和 qemu-img -p 显示每个步骤的进度。
在我的环境 2 x Ubuntu 12.04 LTS 中,步骤如下:
krosenvold's answer inspired the following script which does the following:
the script is restartable and checks the existence of the intermediate files. It also uses pv and qemu-img -p to show the progress of each step.
In my environment 2 x Ubuntu 12.04 LTS the steps took:
只是为了给您另一个选择,您可以使用 https://sourceforge.net/projects/dd2vmdk/ 也是如此。 dd2vmdk 是一个基于 *nix 的程序,允许您通过获取原始映像、分析主引导记录(物理扇区 0)并获取特定信息来挂载原始磁盘映像(由 dd、dcfldd、dc3dd、ftk imager 等创建)创建 vmdk 文件所需的信息。
就我个人而言,imo Qemu 和 Zapotek 的 raw2vmdk 工具是将 dd 转换为 vmdks 的最佳整体选项。
披露:我是这个项目的作者。
Just to give you an another option, you could use https://sourceforge.net/projects/dd2vmdk/ as well. dd2vmdk is a *nix-based program that allows you to mount raw disk images (created by dd, dcfldd, dc3dd, ftk imager, etc) by taking the raw image, analyzing the master boot record (physical sector 0), and getting specific information that is need to create a vmdk file.
Personally, imo Qemu and the Zapotek's raw2vmdk tools are the best overall options to convert dd to vmdks.
Disclosure: I am the author of this project.
我一直在使用:
dd2vmdk
https://sourceforge.net/projects/dd2vmdk/
https://github.com/labgeek/dd2vmdk
和
raw2vmdk
https://sourceforge.net/projects/raw2vmdk/
https://github.com/Zapotek/raw2vmdk
raw2vmdk 在我看来效果更好,但它的 java..这样,Raw、IMG、ISO 和任何未压缩的 DD 映像都可以使用。
事实证明,vmdk 文件可以引用其他文件和数据。 这些类型的 vmdk 文件是使用 raw2vmdk 创建的。 我已经轻松安装了 oVirt Raw 磁盘、DD Raw 磁盘、ISO 文件等。
这是用于通过 raw2vmdk 制作文本 vmdk 文件的 tpl 文件:
I've been using:
dd2vmdk
https://sourceforge.net/projects/dd2vmdk/
https://github.com/labgeek/dd2vmdk
and
raw2vmdk
https://sourceforge.net/projects/raw2vmdk/
https://github.com/Zapotek/raw2vmdk
raw2vmdk works better imo, but its java.. Either way, Raw, IMG, ISO, and any uncompressed DD image will work.
it turns out vmdk files can reference other files, with the data. these type of vmdk files are created with raw2vmdk. I've easily mounted oVirt Raw disks, DD Raw Disks, ISO files like this.
This is the tpl file that is used to make the text vmdk files via raw2vmdk: