Hardware Copertina PCSpeaker |
Articoli
Sguardo al formato ISO9660
Diamo un'occhiata alle principali caratteristiche del filesystem ISO9660, quello usato principalmente per i CD-ROM dati. Non entrerò nei dettagli, ma descriverò le principali caratteristiche e come un utente medio può giocarci.
Il formato ISO in generale
Intanto il nome ``ISO'' sta ad indicare che parliamo di uno standard, ovvero qualcosa di ben definito e con regole precise per essere più portabile possibile. E in effetti tutte le macchine (computer, ovviamente), o quasi, che posseggono un lettore CD riconoscono il formato ISO9660.
Quindi non solo i PC con dos/windows, e neanche solo le macchine Linux, ma pure macintosh riesce a leggere i CD ISO9660 (oltre a CD con un filesystem proprio, HFS, lo stesso usato per i dischi fissi), e moltissimi altri sistemi (probabilmente tutti).
Generalmente un filesystem ISO9660 non è modificabile al volo, anche se
si trova su un supporto scrivibile, come una partizione di un disco fisso.
Normalmente esistono programmi appositi (in Linux il più usato è
mkisofs
, l'ultima versione ufficiale che conosco è la 1.11) che
prendono un albero di directory e da questo ricavano un unico file in
formato ISO.
Questo è quello che accade nella preparazione di un CD-ROM, ovvero si prepara una directory contenente tutti i file e subdirectory, e lanciando un comando viene creata l'immagine ISO9660 in un file o direttamente nel primo settore di una partizione. Successivamente questa immagine viene fisicamente scritta nel supporto plastico (il CD).
Cose più interessanti: i nomi dei file
Forse non tutti sanno che lo standard ISO prevede fino a 32
caratteri, contenenti un solo `.
' e senza distinzione
maiuscolo/minuscolo. Il fatto che molti CD si presentino comunque in formato
dos (8.3) è colpa del solito blocco psicologico introdotto e non abolito in
tempo utile dal grande Bill Gates.
Tutte le macchine windows95, windowsnt, mac e Linux su cui ho provato un
CD creato da mkisofs -l
(-l
serve appunto per
abilitare l'uso dei nomi lunghi ISO) leggevano correttamente i nomi in
maiuscolo (eccetto Linux che li vedeva minuscoli). Ma pure in un paio di
macchine dos il CD si leggeva bene, ovviamente in formato 8.3 (troncando
semplicemente il nome).
Superare la barriera dei 32 caratteri
Per abbattere una simile barriera sono sufficienti delle estensioni al formato ISO. In Linux (e Unix in generale) esistono le estensioni ``Rock Ridge'', per permettere l'uso di nomi più lunghi di 32 caratteri, estensioni multiple nei nomi, link simbolici, proprietari, permessi, caratteri strani nel nome (vocali accentate o altri simboli), eccetera. Un filesystem ISO9660 con estensioni Rock Ridge non si distingue da un normale filesystem Linux, salvo il fatto di essere in sola lettura.
Un CD-ROM con filesystem ISO9660 e Rock Ridge è perfettamente leggibile
sia sotto Linux, sia con altri sistemi operativi, anche se con il limite di
32 o 8.3 caratteri in questi ultimi. Si crea con
mkisofs -R -l
.
Ma tanto per essere diversa dagli altri, Microsoft si è messa ad inventare delle estensioni sue per i CD, le più famose si chiamano ``Joliet'' (esistono anche le ``Romeo'', e sono limitate a 64 o 128 caratteri, non ricordo rispettivamente quali a 64 e quali a 128).
Creare e giocare con le immagini ISO9660
È sufficiente avere il kernel almeno 2.0.0, un mount
recente
(adeguato al kernel) e mkisofs
. Prepariamo un'area contenente
alcuni Mb di file e directory, quel tanto che basta per avere un po' di
materiale, ma neanche troppo da rendere lenta la creazione dell'immagine o
saturare completamente il disco fisso.
Diamo il comando:
mkisofs -R -l -o file-destinazione dir-sorgente
Dopo un po' otterrete file-destinazione
, di dimensione
di poco superiore allo spazio occupato dai file originali. Per vedere cosa
apparirebbe se l'immagine fosse scritta su CD e montata nel sistema basta il
seguente comando:
mount -o loop=/dev/loop0 file-immagine mount-point -t iso9660
Come mount-point
si può anche usare il solito /cdrom
.
A questo punto potete leggere la man page di mkisofs(8)
e
divertirvi da soli. Se non avete il masterizzatore a portata di mano, potete
mettere l'immagine ISO in un disco con filesystem msdos, e poi spostare
fisicamente il disco in una macchina fornita di masterizzatore e scrivere
direttamente il file-immagine su CD.
Linux e Joliet
Linux non supporta ancora ufficialmente le estensioni Joliet, ma sono in
giro delle patch, create da Gordon Chaffee
<chaffee@bmrc.berkeley.edu>
. Potete trovarle alle URL:
http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html
ftp://ftp.sunet.se/pub/multimedia/Berkeley/linux/joliet/
Le patch contengono il supporto anche per FAT32 e NLS. L'applicazione delle patch è semplice (occhio a prendere quelle per la corretta serie del kernel, 2.0.X o 2.1.X), e per compilarsi correttamente è sufficiente includere almeno il supporto per NLS e alcune codepage (consigliano la ISO8859-1, latin1).
Pagine HTML in CD Joliet
Il grandissimo difetto che hanno molte pagine HTML scritte da gente sotto windows sono le maiuscole. Visto che windows ignora la differenza tra maiuscolo e minuscolo, capita che un file referenziato in una pagina HTML in realtà abbia un nome diverso nel CD. Linux, invece, considera diversi i file che differiscono solo per il maiuscolo di una lettera.
Ma questo si può ovviare con alcune opzioni di mount
. Per
esempio, il filesystem ISO9660 possiede l'opzione check=r
che
permette di convertire in minuscolo i nomi dei file da cercare. Però questa
funziona a metà, ovvero funziona se cerchiamo file in maiuscolo mentre nel
CD è in minuscolo, ma non viceversa, cioè se cerchiamo un file in minuscolo
ma nel CD è scritto in maiuscolo.
Trovando per le mani un CD di questo tipo, ho dovuto mettere le mani nel
kernel per riuscire a navigare tra le pagine. La modifica è abbastanza
semplice, basta applicare questa patch al file
linux/fs/isofs/joliet.c
(cd linux/fs/isofs/joliet.c; patch < joliet.c.diff
)
e ricompilare il kernel o il modulo isofs.o
.
Al mount va data l'opzione ``-o check=r
''; i nomi del
CD si vedranno in minuscolo e se verranno cercati con qualche lettera in
maiuscolo saranno comunque trovati.
Creare CD con estensioni Joliet
È in lavorazione un programma (per Linux) che permette di creare CD
``ibridi'', cioè ISO9660/Joliet/HFS. Si chiama mkhybrid
e
deriva da mkisofs
. Si può trovare a:
C'è da dire che è ancora in fase sperimentale. Quando l'ho provato ho visto che non mi permette di utilizzare in contemporanea le estensioni Rock Ridge e Joliet, mostrando solamente quest'ultime.
Normalmente, per fare CD con nomi lunghi anche fuori da Linux, ho sempre
usato l'opzione ``-l
'' di mkisofs
.
Hardware Copertina PCSpeaker |