How to mount one partition from an image file that contains multiple partitions on Linux?
The image file has a partition table, and it contains multiple partitions.
loopback devices might be a possibility.
Related threads:
- http://linux.derkeiler.com/Mailing-Lists/Kernel/2005-01/7183.html
- http://lists.gnu.org/archive/html/grub-devel/2005-01/msg00077.html
- ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loopback/
Solution 1:
You might do it like this, without much hassle:
# kpartx -v -a logging-test.img
add map loop0p1 (251:0): 0 497664 linear /dev/loop0 2048
add map loop0p2 (251:1): 0 66605058 linear /dev/loop0 501758
add map loop0p5 (251:2): 0 66605056 251:1 2
# ls /dev/mapper/
control loop0p1 loop0p2 loop0p5
# mount /dev/mapper/loop0p1 /mnt/test
# mount | grep test
/dev/mapper/loop0p1 on /mnt/test type ext2 (rw)
#
And to remove the loop device after you finished:
# kpartx -v -d logging-test.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
#
Solution 2:
If you have util-linux v2.21 or higher, you can now do this with losetup. Use the -P
(--partscan
) option to read the partition table and create device nodes for each partition:
# losetup --show -f -P test.img
/dev/loop0
# ls /dev/loop0*
/dev/loop0
/dev/loop0p1
/dev/loop0p2
# mount /dev/loop0p1 /mnt/tmp
Solution 3:
Let's say $IMAGE is set to the path to your image file. You could write a small script by using
fdisk -u sectors -l $IMAGE
to get a list of partitions inside the image. And then use a sequence of
mount -o ro,loop,offset=$OFFSET -t auto $IMAGE /media/$DEST
Where offset is calculated means the info from fdisk (start sector * size of a sector in bytes) and $DEST a unique name for each of the partitions.
That's not directly the solution but I hope a pretty good indication on how to realize it. If you make the job once, you've some small nice beginning for some forensic toolkit!