Come montare ISO e altri tipi di file immagine in Linux?

Pubblicato: 2018-09-06

Hai mai avuto bisogno di controllare il contenuto di un file immagine? Forse hai dimenticato quale versione di quella distribuzione Linux fosse. Ci possono essere molte ragioni per ricontrollare un'immagine, ma come si fa senza masterizzarla? Scopriamolo, non è richiesto alcun software aggiuntivo.

Ogni utente Linux esperto di tecnologia dovrebbe avere familiarità con il comando mount . È una parte molto importante dell'amministrazione generale del sistema. Ma molti non sanno che il comando mount è in realtà molto più potente di quanto non sembri a prima vista.

Montaggio di file immagine in Linux

Possiamo montare rapidamente e facilmente, non solo immagini ISO, ma anche immagini di dischi con partizioni.

Rapidamente, ecco un esempio di montaggio di un file ISO.

mount -o loop disk_image.iso /percorso/a/mount/dir

Qui il flag -o serve per passare le opzioni di montaggio e, in questo caso, stiamo dicendo a mount che vogliamo montare l'immagine usando un dispositivo di loopback . Un dispositivo di loopback è un concetto davvero carino sviluppato per assistere nel montaggio dei file di immagine. Un dispositivo di loopback è uno pseudo-dispositivo software che funge da intermediario e consente al sistema di trattare il file come se fosse un dispositivo a blocchi come un'unità CDROM, un disco rigido, ecc. In tal modo, abbiamo molta più flessibilità nella gestione con il file come l'esecuzione di funzioni del filesystem (che presuppongono che vi sia un dispositivo a blocchi sottostante) .

È piuttosto interessante, ma chi usa più gli ISO, giusto? Bene, anche mount può fare un po' di più. Se hai un file immagine di un disco rigido (come ottenuto da dd o qualcosa di simile) , chiamiamolo hdd.img, quindi puoi effettivamente montare anche i filesystem al suo interno. E se sospetti che dobbiamo utilizzare di nuovo un dispositivo di loopback, sei sulla strada giusta.

Ma se provi questo...

mount -o loop hdd.img /path/to/mount/dir

non avrai molta fortuna.

Questo perché la maggior parte dei dischi ha tabelle delle partizioni. CD e DVD in genere non hanno tabelle delle partizioni perché non si adattano ai loro casi d'uso. Quando mount inizia a montare un volume, si aspetta di incontrare un filesystem, non una tabella delle partizioni.

Ciò non significa che non si possa fare, però. Per montare il filesystem, dobbiamo dire a mount dove si trova all'interno del file immagine con un'informazione passata nelle opzioni di montaggio. L'informazione necessaria per il montaggio è l'offset della partizione, ovvero il numero di byte nel file immagine in cui inizia la partizione. Ci sono vari modi per capirlo, ma fdisk fa il lavoro per te.

fdisk -l hdd.img

Supponiamo che fdisk ci dica che il settore di partenza è 100 (questo è puramente un esempio, è altamente improbabile che questo sia corretto nel tuo caso specifico) . Quello che dobbiamo fare ora è prendere quel numero di settore e moltiplicarlo per la dimensione del settore dell'HDD da cui è stata presa l'immagine, questo sarà (molto probabilmente) 512 byte sulle unità più vecchie e forse 4096 (4K) su quelle più recenti, ma dovresti sempre controllarlo quando cloni le unità (magari mettilo nel nome del file per buona misura) . La dimensione del settore è il numero di byte per settore.

Andremo con una dimensione del settore di 512 byte per semplicità e questo ci darebbe un offset di 51.200. Questo offset è il numero di byte nell'immagine in cui inizia il filesystem. Sapendo questo, possiamo dire a mount esattamente dove trovare il filesystem.

mount -o ro,loop,offset=51200 hdd.img /path/to/mount/dir

NOTA: in questo esempio ho aggiunto anche l'opzione ro per mostrare come montare un filesystem in sola lettura. Ciò è particolarmente utile nelle applicazioni forensi in cui non è possibile disturbare l'integrità dei dati per motivi di sicurezza o addirittura legali. Spesso, un file immagine viene creato dal disco utilizzando un adattatore speciale chiamato write-blocker che blocca letteralmente tutti i comandi di scrittura e consente solo i comandi di lettura.

È un bel po' di lavoro con la matematica e tutto il resto, ma ci deve essere un modo più semplice, giusto? Dipende da quanto recente di una distribuzione Linux stai utilizzando, ma qualsiasi cosa degli ultimi cinque anni circa non dovrebbe avere problemi.

Lo strumento lossup serve per configurare i dispositivi di loopback. Potresti chiederti perché vuoi configurare manualmente un dispositivo di loopback quando mount si occupa di tutto ciò per te. Ricordi come mount non voleva montare l'intera immagine del disco a causa di quella fastidiosa tabella delle partizioni? Bene, dato che la tabella delle partizioni è ciò che contiene tutta la matematica su dove si trovano le partizioni (dove fdisk ottiene tutte le sue informazioni) , sarebbe molto più semplice lasciare che il sistema vi faccia riferimento. Possiamo semplicemente creare un dispositivo di loopback per l'intera immagine del disco e quindi dire al sistema di eseguire la scansione delle partizioni sul dispositivo di loopback appena creato.

losetup -f hdd.img

NOTA: il flag -f passato a losetup gli dice semplicemente di creare un dispositivo di loopback con un nome non ancora utilizzato, come /dev/loop1 se /dev/loop0 è già in uso . In alternativa, puoi passare un nome di dispositivo come /dev/loop0 , se quel dispositivo non esiste, losetup lo creerà, se lo fa, lo riassegna al file immagine appena nominato.

Se il comando ha esito positivo, vedrai il dispositivo di loopback appena creato sotto /dev/ . Ora puoi usare

partprobe /dev/loopback0

o

kpartx -u /dev/loopback0

se hai installato partprobe o kpartx , rispettivamente. Tuttavia, parted dovrebbe essere installato sulla maggior parte delle moderne distribuzioni Linux.

Una volta fatto, dovresti vedere qualcosa come /dev/loop0p1 in /dev/ . Questa è la tua partizione, che puoi quindi montare facilmente.

mount /dev/loop0p1 /percorso/a/mount/dir

Come probabilmente noterai, non è richiesto alcun loopback. Questo perché ci siamo già occupati di questo.

Possiamo renderlo ancora più semplice, tuttavia, aggiungendo un singolo flag a losetup .

losetup -f -P hdd.img

Il flag -P che abbiamo usato in realtà dice a losetup di fare in modo che il kernel esegua la scansione della tabella delle partizioni, così possiamo saltare al montaggio della partizione che vogliamo.

Usando quanto sopra, puoi montare una varietà di immagini disco. Non importa se provengono da supporti ottici, chiavi USB, partizionamento MBR o GPT. Il kernel Linux può gestire così tante diverse tabelle di partizione e filesystem che sarà più difficile trovare qualcosa che non supporta.

Certo, potrebbero esserci strumenti che lo rendono molto più semplice, ma dov'è il divertimento in questo? Ho usato queste tecniche nel recupero dei dati e nell'amministrazione generale del sistema e, come qualsiasi tipo di conoscenza, è estremamente preziosa quando necessario.

Facci sapere nei commenti qui sotto se hai dei trucchi che li integrerebbero.

Leggi anche: