Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
topics:disk-image-mount-partition [2017/03/26 05:20]
orzfly
topics:disk-image-mount-partition [2017/03/26 05:58]
orzfly
Line 1: Line 1:
 ====== Mount Partitions in Disk Image ====== ====== 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<code>
 +# losetup -P /dev/loop0 rpool.img
 +</code>
 +  - Finish<code>
 +# 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
 +</code>
 +
 +==== Unmounting ====
 +
 +  - Unload loop device<code>
 +# losetup -d /dev/loop0
 +</code>
 +
 +===== 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<code>
 +# losetup /dev/loop0 rpool.img
 +</code>
 +  - Run partprobe<code>
 +# partprobe /dev/loop0
 +</code>
 +  - Finish<code>
 +# 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
 +</code>
 +
 +==== Unmounting ====
 +
 +  - Unload loop device<code>
 +# losetup -d /dev/loop0
 +</code>
  
 ===== kpartx ===== ===== kpartx =====
Line 19: Line 69:
 </code> </code>
   - Finish<code>   - Finish<code>
-# ls /dev/mapper -l +# ls /dev/mapper/loop0* -l
-total 0 +
-crw------- 1 root root 10, 236 Feb  7 17:52 control+
 lrwxrwxrwx 1 root root       7 Mar 26 13:16 loop0p1 -> ../dm-0 lrwxrwxrwx 1 root root       7 Mar 26 13:16 loop0p1 -> ../dm-0
 lrwxrwxrwx 1 root root       7 Mar 26 13:16 loop0p9 -> ../dm-1 lrwxrwxrwx 1 root root       7 Mar 26 13:16 loop0p9 -> ../dm-1
Line 27: Line 75:
  
 ==== Unmounting ==== ==== Unmounting ====
- 
  
   - Disconnect the device map files using kpartx<code>   - Disconnect the device map files using kpartx<code>
Line 38: Line 85:
 </code> </code>
  
-{{tag>disk-image loop kpartx}}+===== losetup offset / sizelimit ===== 
 +  * https://www.suse.com/communities/blog/accessing-file-systems-disk-block-image-files/ 
 +==== Mounting ==== 
 + 
 +  - Get partition details<code> 
 +# 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 
 +</code> 
 +  - Mount partition<code bash> 
 +# losetup /dev/loop0 rpool.img --offset $((512 * 2048)) --sizelimit $((512 * 44019712)) 
 +</code> 
 +==== Unmounting ==== 
 + 
 +  - Unload loop device<code> 
 +# losetup -d /dev/loop0 
 +</code> 
 + 
 +{{tag>disk-image loop kpartx partprobe}}