Come posso montare un'immagine del disco?


26

Ho un'immagine del disco myimage.diskche contiene la tabella delle partizioni e una partizione primaria (cioè un filesystem FAT32). Pensalo come un'immagine con penna USB.

Voglio montare la partizione primaria in una directory locale. So come montare un'immagine di partizione usando i programmi di utilità del ciclo ma qui ho l'immagine del disco. La mia ipotesi è che devo montare l'immagine "saltando" la tabella delle partizioni, ma come posso farlo?


7
Vedi anche superuser.com/questions/117136/… Si consiglia di utilizzare semplicemente losetup --partscan --find --show disk.imgseguito damount /dev/loop0p1 /mnt/disk
— Flow

Risposte:


44

Lo strumento kpartx lo rende più semplice. Crea dispositivi loop in / dev / mapper per ogni partizione nella tua immagine. Quindi è possibile montare il dispositivo ad anello che corrisponde alla partizione desiderata senza dover calcolare manualmente l'offset.

Ad esempio, per montare la prima partizione dell'immagine del disco:

kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage

Al termine dell'immagine, rimuovi i dispositivi loop:

umount /mnt/myimage
kpartx -d -v myimage.disk

In alternativa, se si dispone di un kernel recente e si passa loop.max_part = 63 all'avvio (se il ciclo è incorporato) o a modprobe (se il ciclo è un modulo), è possibile farlo in questo modo:

losetup /dev/loop0 myimage.disk
partprobe /dev/loop0             # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage

Al termine del ciclo:

losetup -d /dev/loop0

1
Non hai bisogno di quanto -o loopsopra, /dev/mapper/loop0p1è già un dispositivo a blocchi (un dispositivo mapper sopra un dispositivo loop, non vuoi un altro livello di dispositivo loop sopra quello).
— sch

2
Se non si ottengono dispositivi di partizione ( /dev/loop0p1ecc.) Dopo l'esecuzione losetup, eseguire partprobe /dev/loop0.
— Vladimir Panteleev,

kpartxsembra essere installato di default in Linux Mint 18.
— unfa,

4

Trovato questo:

http://www.andremiller.net/content/mounting-hard-disk-image-including-partitions-using-linux

che sembra esattamente quello che stavo cercando.

Ecco la parte chiave:

mount -o loop,ro,offset=32256 hda.img /mnt/rabbit

dove il valore di offset è in byte. Il modo suggerito per ottenere l'offset è puntare partedsull'immagine, quindi sull'unità B per i byte e prendere il valore iniziale dall'output di stampa. In alternativa, supponendo che tu abbia lo spazio su disco, fai l'ovvio: una volta che hai l'offset e la dimensione, usa solo ddper estrarre ogni partizione in un file separato.


1
Per aver scritto una risposta davvero grandiosa, potresti spiegare qui le parti più importanti? Avere un link è fantastico, ma avere le informazioni qui sarebbe il migliore.
— slhck,

1
Ecco la parte chiave:, mount -o loop,ro,offset=32256 hda.img /mnt/rabbitdove il valore di offsetè in byte. Il modo suggerito per ottenere l'offset è di puntare in modo diviso sull'immagine, quindi unit Bper i byte e prendere il startvalore printdall'output. In alternativa, supponendo che tu abbia lo spazio su disco, fai l'ovvio: una volta che hai l'offset e la dimensione, usa solo ddper estrarre ogni partizione in un file separato.
— un CVn,

Sì, scusa per essere troppo basso. Come ha sottolineato Michael, la parte rilevante è, ovviamente, la mountriga che contiene l' offsetopzione.
— Emiliano,

2
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}

1
Sebbene ciò possa rispondere alla domanda, sarebbe una risposta migliore se tu potessi fornire qualche spiegazione sul perché lo faccia.
— David Post

2

Al giorno d'oggi puoi minimizzare il tuo lavoro usando udisks. Soluzione di ArchWiki: udisks - Mount loop devices

Per montare facilmente immagini ISO, utilizzare il seguente comando:

udisksctl loop-setup -r -f image.iso

Questo creerà un dispositivo ad anello e mostrerà l'immagine ISO pronta per il montaggio. Una volta smontato, il dispositivo loop verrà terminato da udev.

-r lì per l'opzione di sola lettura.


Questo è fantastico, grazie per le informazioni. Pazzo come questa sia la prima volta in assoluto in cui ho trovato un riferimento udisksctl.
— Oxwivi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.