在 Linux 下挂载 VMWare 磁盘映像

在 Linux 下挂载 VMWare 磁盘映像

在 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/mo​​unt-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

在我的计算机上,循环设备位于/dev本文提到 /dev/wrapper 和 /dev,因此它可能会对您有所帮助。

另一方面,另一篇文章使用vmware-mount命令来完成相同的操作。

注意:我的系统是 Slackware64-current(大部分),但主要使用基于 gtk 的软件。

答案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 上可读

相关内容