Linux – Mount VMWare Disk Images Under Linux

disk-imagelinuxmountUbuntuvmdk

Is it still possible to mount VMWare disk images under Linux?

I found the following two articles, both of them recommend to use kpartx -av diskimage-flat.vmdk. However both the articles are old and, when I try it on my Ubuntu Utopic 14.10, it no longer works any more.

$ sudo kpartx -av MyWin81.vmdk

$ sudo ls /dev/mapper/loop* | wc -l 
ls: cannot access /dev/mapper/loop*: No such file or directory
0

Disclosure: My VMWare disk image IS a flat disk image. Furthermore (before you recommend loop mount), it is a multi-partition disk image, with first partition being Window8 and next two in Linux. It is the next two Linux partitions that I'm more interested to work on.

Can someone confirm please? Thanks.

Mount Flat VMWare Disk Images Under Linux
http://cromoteca.com/en/blog/mountflatvmwarediskimagesunderlinux/

Mount a VMware virtual disk (.vmdk) file on a Linux box
http://www.commandlinefu.com/commands/view/12554/mount-a-vmware-virtual-disk-.vmdk-file-on-a-linux-box

UPDATE:

vmware-mount looks very promising, but I can't get it working yet:

$ 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

NB, the 2nd and 3rd command is run directly as root, yet I get "Insufficient permissions to perform this operation"?

Best Answer

You can also use qemu:

For .vdi

sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi

if they are not installe you can install them (on Ubuntu is this comand)

sudo apt install qemu-utils

and then mount it

mount /dev/nbd1p1 /mnt

For .vmdk

sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk

notice tha I use the option -r that's because VMDK version 3 must be read only to be able to be mounted by qemu

and then I mount it

mount /dev/nbd1p1 /mnt

I use nbd1 because nbd0 sometimes gives 'mount: special device /dev/nbd0p1 does not exist'

For .ova

tar -tf image.ova
tar -xvf image.ova

The above will extract the .vmdk disk and then mount that.

My configuration:

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
Related Question