File img

Da GolemWiki.
Jump to navigation Jump to search

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)