Come creare un’immagine ISO del CD di Linux
Il comando mkisofs in Linux viene utilizzato per creare file system scrivibili su dispositivi CD-ROM. L’utilità cdrecord masterizzerà effettivamente il disco. Il comando mkisofs prepara i file da masterizzare sul supporto.
Mkisofs crea un file iso, che è il file immagine (archivio) del disco ottico.
Questo tutorial spiega lo strumento mkisofs in Linux per creare un’immagine ISO.
Utilizzando Mkisofs
Secondo la pagina di manuale a comando mkisofs
"The mkisofs command creates a hybrid ISO9660/JOLIET/HFS filesystem with optional Rock Ridge attributes."
"mkisofs takes a snapshot of a given directory tree, and generates a binary image which will correspond to an ISO9660 or HFS filesystem when written to a block device."
Il file system ISO9660 ha alcune limitazioni
• I nomi dei file devono essere in formato 8.3, il che significa che il nome del file può contenere un massimo di 8 caratteri con un’estensione di 3 caratteri utilizzando solo lettere maiuscole, numeri e caratteri di sottolineatura.
• La profondità massima della directory è 8.
• I nomi dei file non possono contenere spazi. È consentito un massimo di un punto nel nome del file. Le directory non devono contenere punti.
Durante la creazione di un file iso9660, i nomi dei file verranno mappati come segue
• i nomi dei file vengono troncati a 8 caratteri.
• tutti i punti nei nomi dei file tranne l’ultimo sono tradotti con caratteri di sottolineatura.
• La versione del nome file viene aggiunta al nome file come ;n.
• Ad esempio, “initrd-latest.img” verrà mappato su “initrd_l.img”.
In RRIP (Rock Ridge Interchange Protocol) l’estensione lo consente
• Nomi di file più lunghi (fino a 255 byte) e meno restrizioni sui caratteri consentiti (supporto minuscolo, ecc.)
• Modalità file in stile UNIX, ID utente e ID gruppo e timestamp file
• Supporto per collegamenti simbolici e file di dispositivo
• Gerarchia di directory più profonda (più di 8 livelli)
• Archiviazione efficiente di file sparsi
(Da Wikipedia)
Per impostazione predefinita, il comando mkisofs esegue il dump dell’output su STDOUT. Il nome del file di output può essere dato con l’opzione -o. Un semplice esempio di utilizzo di mkisofs:
$ mkisofs -o bootiso.iso /boot
INFO: UTF-8 character encoding detected by locale settings.
Assuming UTF-8 encoded filenames on source filesystem,
use -input-charset to override.
mkisofs: Symlink /boot/grub/menu.lst ignored - continuing.
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 4096
Path table size(bytes): 38
Max brk space used 19000
5078 extents written (9 MB)
Come elencare il contenuto del file ISO
Il contenuto di un file ISO può essere elencato utilizzando isoinfo
ed estratto utilizzando p7zip
.
Il seguente comando elencherà il contenuto di un file ISO.
$ isoinfo -l -i bootiso.iso
Il seguente comando estrarrà i file in “extracted_folder” dal file “bootiso.iso”.
$ 7z x -o extracted_folder bootiso.iso
Monta il file ISO nella directory
Consente di montare il file ISO in una directory. Esegui il seguente comando:
$ mount -o loop bootiso.iso looped
I contenuti originali della directory /boot sono:
$ ls /boot/
config-2.6.18-238.el5 grub initrd-2.6.18-238.el5.img initrd-latest.img lost+found symvers-2.6.18-238.el5.gz System.map-2.6.18-238.el5 vmlinuz-2.6.18-238.el5
I nomi dei file sono mappati come segue:
$ ls looped/
config_2.el5 grub initrd_2.img initrd_l.img lost_fou symvers_.gz system_m.el5 vmlinuz_.el5 _vmlinuz.hma
I nomi di file in maiuscolo vengono mappati in minuscolo durante la visualizzazione di questo contenuto.
Il -R
option dice a mkisofs di usare il protocollo Rock Ridge. Altre opzioni utili per mkisofs sono:
-L - allow dot files (hidden)
-l - allow full 31 character filenames.
-allow-lowercase - allows lower case characters to appear in iso9660 filenames.
-allow-multidot - allows more than one dot to appear in filenames.
-input-charset - specify a character set.
Ora usando queste opzioni:
$ mkisofs -l -L -input-charset default -allow-lowercase -allow-multidot -o bootiso.iso /boot
mkisofs: The option '-L' is reserved by POSIX.1-2001.
mkisofs: The option '-L' means 'follow all symbolic links'.
mkisofs: Mkisofs-2.02 will introduce POSIX semantics for '-L'.
mkisofs: Use -allow-leading-dots in future to get old mkisofs behavior.
Warning: creating filesystem that does not conform to ISO-9660.
mkisofs: Symlink /boot/grub/menu.lst ignored - continuing.
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 4096
Path table size(bytes): 40
Max brk space used 0
5078 extents written (9 MB)
$ mount -o loop bootiso.iso looped/
$ ls -a looped/
. .. config_2.6.18_238.el5 grub initrd_2.6.18_238.el5.img initrd_latest.img lost_found symvers_2.6.18_238.el5.gz system.map_2.6.18_238.el5 vmlinuz_2.6.18_238.el5 .vmlinuz_2.6.18_238.el5.hmac
In questo tutorial, abbiamo imparato come creare un’immagine ISO in Linux. Se hai domande o feedback, sentiti libero di lasciare un commento.