-
Notifications
You must be signed in to change notification settings - Fork 30
Mounting
To mount a Virtual Hard Disk (VHD) image file you can use vhdimount.
There is support for the following back-ends:
- Dokan library
- fuse
- OSXFuse
To build vhdimount see Building.
To mount a VHD image:
vhdimount image.vhd /mnt/fuse
This will expose a device file that provides the RAW storage media data contained in the VHDI image.
/mnt/fuse/vhdi1
If you get the error:
No sub system to mount VHDI.
That means fuse was not detected when building the vhditools, check if you have fuse-dev installed and if ./configure is able to detect it. The last part of the ./configure output shows you this in an overview.
If your operating system supports loop devices, such as Linux, mount can be used to mount the device file as a loop device:
mount -o loop,ro,offset=${OFFSET} /mnt/fuse/vhdi1 /mnt/file_system
Make sure to define ${OFFSET} to contan the byte offset, relative to the start of the device file, of the start of the file system.
On Mac OS hdiutil can be used to mount the device file:
hdiutil attach -imagekey diskimage-class=CRawDiskImage -nomount /mnt/fuse/vhdi1
By default fuse prevents root access to the mount point when a VHD image is mounted. To enable this functionality first check the fuse documentation.
Make sure the fuse configuration file:
/etc/fuse.conf
Contains:
user_allow_other
Pass "allow_root" to the fuse sub system using the vhdimount -X option:
vhdimount -X allow_root image.vhd /mnt/fuse
To mount a VHD image on Windows:
vhdimount image.vhd x:
At the moment the vhdimount keeps a hold on the console.
This will expose a device file that provides the RAW storage media data contained in the VHDI image.
X:\VHDI1
You can unmount /mnt/fuse using umount:
umount /mnt/fuse
Or fusermount:
fusermount -u /mnt/fuse
At the moment terminate the process running in the console.
First of all make sure to check the output of configure. If you're seeing something like the following output configure was unable to detect an usable fuse.
Building:
...
FUSE support: no
On Mac OS X:
- make sure that you only have OSXFuse installed and not another variant, like MacFuse, besides it.
- try adding the C pre processor flags that set the fuse API version, e.g.
CPPFLAGS=-DFUSE_USE_VERSION=26 ./configure
- if all else fails; file a support issue and attach config.log
On Ubuntu:
fusermount – failed to open /etc/fuse.conf – Permission denied
Make sure you're part of the group fuse:
sudo addgroup <username> fuse
If fusermount keeps complaining it cannot open fuse.conf:
sudo chmod o+r /etc/fuse.conf