====== Mount Partitions in Disk Image ======
* [[#losetup_partscan]]: If you have util-linux v2.21 or higher (for example, Ubuntu 16.04).
* [[#partprobe]]: If you have a recent kernel, and pass loop.max_part=63 on boot (if loop is built-in) or to modprobe (if loop is a module).
* [[#kpartx]]: ''apt install kpartx''
* [[#losetup_offsetsizelimit]]: AlwaysWorks™
===== losetup partscan =====
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.
* http://stackoverflow.com/a/15200862
==== Mounting ====
- Mount image as loop device
# losetup -P /dev/loop0 rpool.img
- Finish
# ls /dev/loop0* -l
brw-rw---- 1 root disk 7, 0 Mar 26 13:36 /dev/loop0
brw-rw---- 1 root disk 259, 2 Mar 26 13:36 /dev/loop0p1
brw-rw---- 1 root disk 259, 3 Mar 26 13:36 /dev/loop0p9
==== Unmounting ====
- Unload loop device
# losetup -d /dev/loop0
===== partprobe =====
If you have a recent kernel, and pass loop.max_part=63 on boot (if loop is built-in) or to modprobe (if loop is a module).
* https://superuser.com/a/345476
==== Mounting ====
- Mount image as loop device
# losetup /dev/loop0 rpool.img
- Run partprobe
# partprobe /dev/loop0
- Finish
# ls /dev/loop0* -l
brw-rw---- 1 root disk 7, 0 Mar 26 13:23 /dev/loop0
brw-rw---- 1 root disk 259, 0 Mar 26 13:23 /dev/loop0p1
brw-rw---- 1 root disk 259, 1 Mar 26 13:23 /dev/loop0p9
==== Unmounting ====
- Unload loop device
# losetup -d /dev/loop0
===== kpartx =====
* https://nfolamp.wordpress.com/2010/08/16/mounting-raw-image-files-and-kpartx/
==== Mounting ====
- Mount image as loop device
# losetup /dev/loop0 rpool.img
- List partitions in loop
# kpartx -l /dev/loop0
loop0p1 : 0 44019712 /dev/loop0 2048
loop0p9 : 0 16384 /dev/loop0 44021760
- Create device mappings of partitions
# kpartx -av /dev/loop0
add map loop0p1 (252:0): 0 44019712 linear 7:0 2048
add map loop0p9 (252:1): 0 16384 linear 7:0 44021760
- Finish
# ls /dev/mapper/loop0* -l
lrwxrwxrwx 1 root root 7 Mar 26 13:16 loop0p1 -> ../dm-0
lrwxrwxrwx 1 root root 7 Mar 26 13:16 loop0p9 -> ../dm-1
==== Unmounting ====
- Disconnect the device map files using kpartx
# kpartx -dv /dev/loop0
del devmap : loop0p9
del devmap : loop0p1
- Unload loop device
# losetup -d /dev/loop0
===== losetup offset / sizelimit =====
* https://www.suse.com/communities/blog/accessing-file-systems-disk-block-image-files/
==== Mounting ====
- Get partition details
# fdisk -l rpool.img
Disk rpool.img: 21 GiB, 22548578304 bytes, 44040192 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: gpt
Disk identifier: B37248EB-F1D7-DA47-A42D-4C42AF20D328
Device Start End Sectors Size Type
rpool.img1 2048 44021759 44019712 21G Solaris /usr & Apple ZFS
rpool.img9 44021760 44038143 16384 8M Solaris reserved 1
- Setup loop device
# losetup /dev/loop0 rpool.img --offset $((512 * 2048)) --sizelimit $((512 * 44019712))
==== Unmounting ====
- Unload loop device
# losetup -d /dev/loop0
{{tag>disk-image loop kpartx partprobe}}