![在 Linux 下挂载 VMWare 磁盘映像](https://linux22.com/image/1450679/%E5%9C%A8%20Linux%20%E4%B8%8B%E6%8C%82%E8%BD%BD%20VMWare%20%E7%A3%81%E7%9B%98%E6%98%A0%E5%83%8F.png)
在 Linux 下仍然可以挂载 VMWare 磁盘映像吗?
我找到了以下两篇文章,它们都建议使用kpartx -av diskimage-flat.vmdk
。但是这两篇文章都很旧了,当我在 Ubuntu Utopic 14.10 上尝试时,它不再起作用了。
$ sudo kpartx -av MyWin81.vmdk
$ sudo ls /dev/mapper/loop* | wc -l
ls: cannot access /dev/mapper/loop*: No such file or directory
0
披露:我的 VMWare 磁盘映像是平面磁盘映像。此外(在您推荐循环安装之前),它是一个多分区磁盘映像,第一个分区是 Window8,接下来的两个分区是 Linux。我更感兴趣的是接下来的两个 Linux 分区。
有人可以确认一下吗?谢谢。
在 Linux 下安装平面 VMWare 磁盘映像 http://cromoteca.com/en/blog/mountflatvmwarediskimagesunderlinux/
在 Linux 机器上挂载 VMware 虚拟磁盘 (.vmdk) 文件 http://www.commandlinefu.com/commands/view/12554/mount-a-vmware-virtual-disk-.vmdk-file-on-a-linux-box
更新:
vmware-mount
看起来很有希望,但我还不能让它发挥作用:
$ vmware-mount -p Win81.vmdk
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Nr Start Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
1 2048 78643200 BIOS 7 HPFS/NTFS
2 78645248 6039552 BIOS 83 Linux
3 84684800 41144320 BIOS 83 Linux
% vmware-mount Win81.vmdk 1 /mnt/tmp1/
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Failed to mount partition 1 of disk 'Win81.vmdk' on '/mnt/tmp1/': Insufficient permissions to perform this operation
% vmware-mount -L
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
No mounted disks.
$ vmware-mount | head -3
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
VMware DiskMount Utility version 6.0.0, build-2496824
Usage: vmware-mount diskPath [partition num] mountPoint
注意,第二和第三条命令直接作为 运行root
,但我得到了“权限不足,无法执行此操作“?
答案1
您也可以使用 qemu:
为了.vdi
sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi
如果尚未安装,您可以安装它们(在 Ubuntu 上是这个命令)
sudo apt install qemu-utils
然后挂载它
mount /dev/nbd1p1 /mnt
为了.vmdk
sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk
注意我使用这个选项-r
是因为VMDK 版本 3 必须是只读能够被 qemu 安装
然后我把它挂载起来
mount /dev/nbd1p1 /mnt
我使用,nbd1
因为nbd0
有时会给出“挂载:特殊设备 /dev/nbd0p1 不存在”
对于 .ova
tar -tf image.ova
tar -xvf image.ova
上述操作将提取.vmdk
磁盘然后挂载它。
我的配置:
Ubuntu: 16.04.3 LTS Kernel: 4.4.0-112-generic Package: qemu-utils version: 1:2.5+dfsg-5ubuntu10.22 Vmdk: 3 but should be any
答案2
答案3
安装 affuse,然后用它挂载文件:
affuse /path/file.vmdk /mnt/vmdk
检查扇区大小
fdisk -l /mnt/vmdk/file.vmdk.raw
# example
Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000da525
Device Boot Start End Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 * 2048 41943039 41940992 20G 83 Linux
将扇区大小与起始扇区相乘。例如,它将是 2048*512
echo 2048*512 | bc
1048576
使用该偏移量进行安装
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
磁盘现在应该已安装并在 /mnt/vmdisk 上可读