Last Updated: February 25, 2016
·
1.434K
· phsym

Mount a partition from a raw Virtual Machine disk file

May be usefull for anyone working with virtualization, for example if you want to mount a template image with multiple partitions locally to modify it, push some configurations, etc ...

For example, let's call our image file FooBar-disk1.raw

fdisk -l FooBar-disk1.raw

Disk FooBar-disk1.raw: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders, total 629145600 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
Disk identifier: 0x00000000

Device Boot                      Start         End      Blocks   Id  System
FooBar-disk1.raw1   *          63    12611024     6305481   83  Linux
FooBar-disk1.raw2        12611025    25222049     6305512+  83  Linux
FooBar-disk1.raw3        25222050   629137529   301957740    5  Extended
FooBar-disk1.raw5        25222113    29447144     2112516   83  Linux
(...)

In order to mount a partition, we have to find its start sector, multiply it with the size of a sector (here it's 512 bytes).

Then we can mount the partition, using its start address as an offset in the mount command :

To mount partition 1 on /mnt:

mount -o offset=$((63*512)) FooBar-disk1.raw /mnt

To mount partition 2 on /mnt:

mount -o offset=$((12611025*512)) FooBar-disk1.raw /mnt