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.