MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
CD, DVD, supporto, disco, software, audio, audio CD, musica

Come montare un filesystem ISO in GNU/Linux

a cura di masterz3d
15/01/2010 - articolo
Linux & Open Source - Se volete essere sicuri delle vostre immagini ISO e avete un sistema operativo GNU/Linux, questo articolo può essere quello che fa per voi. Pochi semplici comandi testuali per verificare i filesystem ISO che avete creato con utility come mkisofs. E se non vi soddisfano li potete sempre ricreare, partendo dalle directory originarie, permettendovi di risparmiare CD o DVD.

Nota introduttiva: Per montare o smontare le unità di loopback potrà essere necessario anteporre sudo a mount o umount.

Usando il comando mount è possibile montare anche filesystem ISO9660 appena creati con applicazioni come mkisofs. Questo è possibile utilizzando le periferiche virtuali di loopback (chiamate anche "loop devices").

Le loop devices sono nodi speciali che possono essere utilizzati per montare file come se fossero blocchi reali, ad esempio un /dev/sda1 per la prima partizione del primo disco rigido. Risiedono in /dev e vengono utilizzati automaticamente quando in mount è specificata l'opzione loop.

Prendiamo ad esempio un file ISO qualsiasi: feather-0.7.5.iso (Feather Linux).

Isomount_01.png

Possiamo verificare che sia effettivamente un file ISO tramite il programma file.

file <nome_immagine_ISO>

L'output dovrà essere simile a quello in figura:

ISO 9660 CD-ROM filesystem data

Seguito da una eventuale stringa di identificazione e da una dicitura (bootable), se l'unità può essere utilizzata come unità di boot.

Come montare

Una immagine ISO si monta con la seguente riga di comando:

mount -t iso9660 -o ro,loop <immagine_ISO> <mountpoint>

Isomount_02.png

Qui di seguito una breve descrizione dei termini usati nel montaggio:

Volendo è possibile specificare il loop device modificando leggermente la riga:

mount -t iso9660 -o ro,loop=/dev/loop7 <immagine_ISO> <mountpoint>

Con loop=/dev/loop7 specifichiamo di voler usare il device /dev/loop7 per il montaggio del file. Normalmente il kernel usa il primo device di loop disponibile in ordine numerico crescente; con questa piccola variazione è possibile forzare il kernel ad utilizzare una particolare loop device.

Nel caso in cui venga specificata una loop device già in uso mount uscirà con codice d'errore 32, il mount non verrà effettuato, verrà mostrato un messaggio di stolen loop e il mount precedente non verrà modificato.

Verificare i contenuti dell'immagine ISO

Nell'esempio in figura abbiamo montato l'immagine feather-0.7.5.iso nel mountpoint /mnt/hd/1. Possiamo ora fare tutto quello che solitamente facciamo con un disco CD o DVD inserito nell'unità, ovviamente in sola lettura. Qualsiasi tentativo di scrittura, sovrascrittura o modifica di dati all'interno dell'immagine darà un errore di Read-only filesystem.

Leggiamo quindi i contenuti del file ISO appena montato con ls:

Isomount_03.png

Possiamo inoltre leggere le specifiche di montaggio nel file /proc/mounts con il comando cat /proc/mounts:

Loopback.png

L'ultima riga della figura identifica il nostro mount di loopback, visto dal kernel. Da questa riga sappiamo le seguenti cose:

Come smontare

Smontare il file è semplice, è sufficiente lanciare il comando seguente:

umount <mountpoint>

Dove <mountpoint> è il percorso di mount del file ISO. Assicuriamoci che il mountpoint non sia aperto in lettura o in scrittura, ovvero che nessun utente o nessun terminale abbia il mountpoint /mnt/hd/1 o una qualsiasi sottodirectory o un qualsiasi file interno all'immagine aperto in lettura o scrittura. Dovremo quindi risalire di almeno una directory o recarci in una cartella indipendente da essa, come ad esempio /mnt/hd, / o /home.

Nota: ovviamente la scrittura non si applica ai filesystem ISO o ad altri filesystem di sola lettura come squashfs, cramfs o romfs.

In conclusione: le potenzialità del loopback

Usando il loopback è possibile montare non solo filesystem ISO, ma qualsiasi tipo di filesystem che risieda in file, specificando il tipo di filesystem e usando l'opzione loop. La sintassi della riga di comando è esattamente la stessa; basterà sostituire il tipo di filesystem e omettere l'opzione ro se vorremo aprire il filesystem in lettura/scrittura.

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati