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.
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
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