====== 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}}