From time to time you may have a raw disk image that you have made with the dd tool, or something similar. If it’s a backup of a single partition then it can be mounted in Linux using the loopback feature pretty easily, so long as you know the filesystem type, such as ext4, vfat or ntfs for example:
$ sudo mkdir -p /mnt/loop
$ mount -t ntfs -o loop /path_to_disk_image.img /mnt/loop
$ ls -lart /mnt/loop
$ sudo umount /mnt/loop
Usually we can’t mount the whole image, because it may have a partition table and even multiple partitions defined. Fortunately, kpartx can create mapper entries to access those. You first check to see what is in the image with:
$ fdisk -l /path_to_disk_image.img
Disk /path_to_disk_image.img: 49.68 MiB, 52093440 bytes, 101745 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: windows
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/path_to_disk_image.img * 17 101625 101609 49.6M 6 NTFS
Let’s use kpartx to create mapper entries to access the partition:
$ sudo kpartx -av /path_to_disk_image.img
add map loop35p1 (253:9): 0 101609 linear 7:35 17
Then we need somewhere to mount the image partition:
$ sudo mkdir -p /mnt/loop35p1
If you know the filesytem type, specify it with the -t parameter. If you’re not sure, linux may be able to guess it if you use -t auto.
$ sudo mount -t ntfs -o loop /dev/mapper/loop35p1 /mnt/loop35p1/
$ ls -lart /mnt/loop35p1/
Once we have copied out any data we were looking for (or even written to the image if we wanted), then we should unmount and clean up:
$ sudo umount /mnt/loop35p1/
$ sudo kpartx -dv /path_to_disk_image.img
del devmap : loop35p1
loop deleted : /dev/loop35