File img
Introduzione
I file .img non sono immagini fotografiche o disegni, ma si tratta di immagini disco. Contengono i dati e la struttura del dispositivo che li memorizzava: floppy, hard disk, CD, DVD, penne USB...
Creare file .img
Con il programma dd si possono creare file img a partire da vari dispositivi o anche dal contenuto vuoto.
- Immagine di un floppy
# dd if=/dev/fd0 of=floppy.img
- Immagine di un hard disk
# dd if=/dev/sda of=disco.img
- Immagine vuota da 10 MB
# dd if=/dev/zero of=file.img bs=1k count=10000
Scrivere l'immagine su un floppy reale
# dd if=floppy.img of=/dev/fd0
Esplorare il contenuto di un file img
# mount floppy.img /mnt/somedirectory/
Metodo per kernel < 3.x
Creare il device di loop
# modprobe loop # losetup /dev/loop0 file.img
Montare il file per esplorarne il contenuto
# mount /dev/loop0 /punto_di_mount
Smontare il device virtuale e rimuovere il loop
# umount /dev/loop0 # losetup -d /dev/loop0
Gestione delle partizioni
Se il file .img contiene al suo interno delle partizioni sarà necessario montarlo con degli accorgimenti particolari. Per prima cosa occorrerà reperire alcune informazioni sulle partizioni contenute.
# fdisk -ul /dev/loop0
Disk /dev/loop0: 4001 MB, 4001292288 bytes 255 heads, 63 sectors/track, 486 cylinders, total 7815024 sectors Units = sectors of 1 * 512 = 512 bytes Disk identifier: 0×557e557e Device Boot Start End Blocks Id System /dev/loop0p1 * 63 7775459 3887698+ 83 Linux /dev/loop0p2 7775460 7807589 16065 c W95 FAT32 (LBA)
Dato che 1 settore = 512 bytes, per montare la prima partizione che inizia al settore 63 (63 x 512 = 32256) dovremo usare il comando:
# mount /dev/loop0 /punto_di_mount -o ro,loop,offset=32256
Se volessi invece montare la seconda partizione dovrei usare il comando (512 x 7775460 = 3981035520):
# mount /dev/loop0 /punto_di_mount -o ro,loop,offset=3981035520
Per formattare una partizione di un file img può essere usato il seguente comando
# mkfs."tipo_di_fs" /dev/loop0
Metodo alternativo
Installare il pacchetto multipath-tools ed usare il tool kpartx
# losetup /dev/loop0 file.img
# /usr/bin/kpartx -l /dev/loop0 loop0p1 : 0 32768 /dev/loop0 2048 loop0p2 : 0 7739392 /dev/loop0 34816
# /usr/bin/kpartx -a -v /dev/loop0 add map loop0p1 (254:0): 0 32768 linear /dev/loop0 2048 add map loop0p2 (254:1): 0 7739392 linear /dev/loop0 34816
Con questi comandi il sistema creerà automaticamente dei nuovi device per ogni partizione riconosciuta sarà possibile montarle come normali filesystem.
Nel caso in esempio /dev/dm-0 e /dev/dm-1
# mount /dev/dm-0 /mnt/img0 # mount /dev/dm-0 /mnt/img1
(/mnt/img0 e img1 sono mountpoint ipotetici)