我有一些平面文件格式的旧Linux文件系统的旧图像.它们可以被Bochs使用,但我需要使用Virtual Box运行它们.Virtual Box无法使用此格式的图像,因此我需要将这些图像从平面文件转换为.vmdk文件格式.有没有办法做到这一点?
apt-get install qemu
(在debian/ubuntu上安装QEMU)
然后运行以下命令:
qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk
我假设平盘图像是dd风格的图像.转换操作还处理许多其他格式.
由于问题提到VirtualBox,这个目前工作:
VBoxManage convertfromraw imagefile.dd vmdkname.vmdk --format VMDK
为了一些有趣的细节(特别是--variant
标志),不带参数运行它:
VBoxManage convertfromraw
在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).然后,在6.5-7的vmware虚拟机中打开它(5.1拒绝连接vmdk硬盘).howgh!
回答TJJ:但是在不复制整个文件的情况下是否也可以这样做?因此,以某种方式创建了一个额外的vmdk-metafile,该文件引用了原始的dd-image。
是的,有可能。这是在VirtualBox中使用磁盘映像的方法:
首先,您以通常的方式使用dd创建映像:
dd bs=512 count=60000 if=/dev/zero of=usbdrv.img
然后,您可以为VirtualBox创建一个引用此图像的文件:
VBoxManage internalcommands createrawvmdk -filename "usbdrv.vmdk" -rawdisk "usbdrv.img"
您可以按原样在VirtualBox中使用此映像,但是根据来宾操作系统,它可能不会立即显示。例如,我尝试在Windows guest虚拟机操作系统上使用此方法,并且必须执行以下操作以为其提供驱动器号:
转到控制面板。
转到管理工具。
转到计算机管理。
转到左侧面板中的“存储\磁盘管理”。
您会在这里看到磁盘。在其上创建一个分区并对其进行格式化。对于小卷使用FAT,对于大卷使用FAT32或NTFS。
您可能要在Linux上访问文件。首先确定要从来宾OS卸载它,然后再将其从虚拟机中删除。现在,我们需要创建一个引用分区的虚拟设备。
sfdisk -d usbdrv.img
响应:
label: dos label-id: 0xd367a714 device: usbdrv.img unit: sectors usbdrv.img1 : start= 63, size= 48132, type=4
注意分区的开始位置:63.在下面的命令中,我使用loop4,因为它是我的情况下第一个可用的循环设备。
sudo losetup -o $((63*512)) loop4 usbdrv.img mkdir usbdrv sudo mount /dev/loop4 usbdrv ls usbdrv -l
响应:
total 0 -rwxr-xr-x. 1 root root 0 Apr 5 17:13 'Test file.txt'
好极了!