User Tools

Site Tools


doc:appunti:linux:sa:loop_mount

Mountare una partizione dall'immagine di un disco

Normalmente il montaggio dell'immagine di un disco avviene con il comando:

mount -o loop file.img /mnt

Se l'immagine contiene delle partizioni (ad esempio è l'immagine di un intero disco oppure di una memoria flash USB con delle partizioni al suo interno) il comando non funziona.

Metodo difficile

Bisogna scoprire a quale offset del file inizia la partizione. La prima cosa da fare è vedere la tavola delle partizioni:

sfdisk -l -uS usbdisk.img 
Disk usbdisk.img: cannot get geometry

Disk usbdisk.img: 509 cylinders, 255 heads, 63 sectors/track
Warning: The partition table looks like it was made
  for C/H/S=*/16/63 (instead of 509/255/63).
For this listing I'll assume that geometry.
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
usbdisk.img1            63   8187983    8187921   c  W95 FAT32 (LBA)
usbdisk.img2             0         -          0   0  Empty
usbdisk.img3             0         -          0   0  Empty
usbdisk.img4             0         -          0   0  Empty

La prima partizione inizia al settore 63, ciascun settore è di 512 byte, pertanto l'offset della prima partizione è pari a 63 * 512 = 32256. Il montaggio può essere fatto quindi con:

mount -o loop,offset=32256 usbdisk.img /mnt

Metodo facile

Bisogna che il modulo kernel loop sia caricato con il parametro max_part uguale o maggiore del numero di partizioni del device (purtroppo è zero per Debian):

modprobe -r loop
modprobe loop max_part=4

Quindi si monta il device in loop e si monta la partizione interessata:

losetup /dev/loop0 /home/user/file.img
mount /dev/loop0p1 /mnt

Per smontare il device:

umount /mnt
losetup -d /dev/loop0
doc/appunti/linux/sa/loop_mount.txt · Last modified: 2013/07/01 15:15 by niccolo