[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 70.   CD, CD-ROM e file system ISO 9660

Il file system ISO 9660, cioè quello usato per i CD-ROM, è particolare a causa della struttura stessa dei CD: i dati vengono memorizzati in settori su un'unica traccia a spirale che parte dalla zona centrale e si espande verso l'esterno.

In questo senso, il CD assomiglia molto al nastro quando si è in fase di scrittura (i dati possono solo essere aggiunti), mentre in lettura si riesce a ottenere un accesso diretto come si fa con i dischi magnetici. Per questa ragione, lo stesso file system ISO 9660 è organizzato in modo che la scrittura avvenga una volta sola, senza la possibilità di cancellare o modificare dati già inseriti.

Si può fare esperienza con questo file system anche senza dover bruciare dei veri CD-R.

70.1   Caratteristiche di massima di un CD

Il CD è oggi un supporto di memorizzazione pensato per scopi differenti, nato per sostituire i dischi audio analogici di vinile. La sua origine specifica ha poi portato a un'evoluzione piuttosto complessa per consentire l'impiego in altri settori.

Si può immaginare il contenuto di un CD come qualcosa che è suddiviso in sessioni, che a loro volta si suddividono in tracce. Ogni traccia può avere una destinazione differente; per esempio può trattarsi di un brano musicale, di un file system, o un altro tipo di informazione.

In condizioni normali, un CD-ROM si compone di una sola sessione, contenente una sola traccia dati (un file system), mentre un CD musicale si compone di una sola sessione contenente diverse tracce, una per ogni brano musicale.

Ogni sessione contiene un indice generale, noto con la sigla TOC (Table of contents), collocato alla fine delle tracce, che permette di raggiungere l'inizio delle tracce attraverso un accesso diretto. Si fa riferimento alla creazione di questo indice con il termine finalization, oppure fixation.

L'ultima sessione di un CD può essere aperta o chiusa. Una sessione che rimane aperta consente l'aggiunta di una sessione ulteriore, mentre una sessione chiusa non permette di aggiungerne altre.

La registrazione di un CD può avvenire in fasi successive. Teoricamente è possibile definire una sessione e inserirvi una traccia alla volta, inserendo l'indice TOC solo alla fine. Una volta completata la sessione con l'indice, se questa rimane aperta, è possibile aggiungerne altre.

Dopo questa descrizione schematica è necessario comprendere che le sessioni non sono degli scompartimenti stagni, ma rappresentano delle fasi successive nella registrazione di un CD. Teoricamente, le varie sessioni devono risultare concatenate fra loro, in modo tale che la lettura dell'indice TOC finale consenta di conoscere la collocazione di tutte le tracce presenti. In questo senso va considerato anche il fatto che la sequenza di numerazione delle tracce è unica in tutto il CD e non viene azzerata all'inizio di sessioni successive. Pertanto, alla fine, il CD dovrebbe apparire scomposto in tracce e la presenza delle sessioni non dovrebbe modificare l'apparenza del contenuto. Naturalmente, questa è la teoria; in pratica gli apparecchi usati per leggere i CD devono essere in grado di riconoscere le sessioni, altrimenti le informazioni successive alla prima sessione di registrazione diventano inaccessibili. In questo senso è sempre bene evitare di realizzare CD contenenti più di una sessione.

70.2   Creazione dell'immagine di un CD-ROM

Creare l'immagine di un CD-ROM significa predisporre un file in qualità di traccia dati di una sessione del CD che si vuole masterizzare. In generale si tratta di realizzare un file system ISO 9660, probabilmente con qualche estensione.

70.2.1   Estensioni Rock Ridge

Il file system ISO 9660 è predisposto per gestire file il cui nome è organizzato nello stesso modo in cui faceva il Dos: 8.3, ovvero otto caratteri al massimo, seguiti da un punto e da un'estensione di un massimo di tre caratteri.(1)

Dal punto di vista dei sistemi Unix, questo non costituisce solo un problema nella dimensione dei nomi, ma soprattutto nella mancanza di tutti gli altri attributi che può avere un file: i permessi e le proprietà.

I CD-ROM realizzati per gli ambienti Unix sono fatti generalmente utilizzando le estensioni Rock Ridge che alla fine permettono di memorizzare tutti quei dati mancanti, compresa la possibilità di gestire nomi più lunghi, con o senza punti. Quando questi CD-ROM vengono letti in un sistema operativo che non è in grado di interpretare tali estensioni, si riescono a vedere solo nomi di file corti.

Questo particolare deve essere tenuto in considerazione nella preparazione di CD-ROM. Se questi sono destinati ad ambienti normali, Dos e derivati, occorre organizzare un sistema di nomi corti per essere certi che il CD-ROM possa essere letto ovunque nello stesso modo.

Quando si usano delle estensioni per gestire nomi lunghi, è normale che all'interno di ogni directory venga aggiunto un file contenente un elenco di abbinamenti tra i nomi corti che appaiono quando non si dispone delle estensioni e i nomi lunghi corretti. Di solito si tratta del file TRANS.TBL e il suo significato è evidente: translation table, ovvero tabella di conversione.

Anche il numero di livelli di sottodirectory ha un limite nel file system ISO 9660: sono al massimo otto. Le estensioni Rock Ridge permettono di superare tale limite, ma come al solito si pongono delle difficoltà per i sistemi che non sono in grado di gestire tali estensioni.

70.2.2   Estensioni El-Torito

Le estensioni El-Torito permettono di realizzare un CD-ROM «avviabile», purché il firmware (BIOS) dell'elaboratore sia in grado poi di sfruttare effettivamente questa possibilità.

Il metodo consiste nel simulare un dischetto, come se fosse stato inserito nella prima unità. Questo «dischetto» deve contenere naturalmente tutto quello che serve per avviare un sistema in grado di leggere il CD-ROM. In pratica, nel caso delle distribuzioni GNU/Linux, si include l'immagine del dischetto di avvio necessario a iniziare l'installazione della distribuzione stessa. Questo dischetto deve avere un formato normale: 1 200 Kibyte, 1 440 Kibyte o 2 880 Kibyte.

70.2.3   Estensioni Joliet

Le estensioni Joliet nascono dalla Microsoft e servono a consentire la lettura del CD-ROM in un sistema MS-Windows, preservando i nomi lunghi.

Le estensioni Joliet non pongono limiti alla dimensione dei nomi dei file, tuttavia non consentono di distinguerli oltre i primi 64 caratteri.

In generale, salvo problemi nella lunghezza dei nomi dei file, conviene utilizzare anche queste estensioni in modo da permetterne la lettura del CD-ROM che si realizza in qualunque circostanza.

70.2.4   $ mkisofs

mkisofs [opzioni] directory

mkisofs (2) è un programma in grado di generare un file system ISO 9660, utilizzando eventualmente le estensioni Rock Ridge e anche El-Torito, a partire dal contenuto di una directory. In pratica, tutto quello che è contenuto nella directory, comprese le eventuali sottodirectory, viene usato per generare il nuovo file system. Non si tratta di un normale programma di inizializzazione, perché con questo tipo di file system non è possibile inizializzare prima e scrivere i dati dopo: inizializzazione e registrazione sono simultanee.

Se non viene utilizzata l'opzione -o, il risultato viene emesso attraverso lo standard output.

Questo programma non è in grado di registrare i CD-ROM, ma solo di generare un'immagine del risultato finale in un file che poi viene utilizzato dal programma di masterizzazione. In teoria è possibile inviare l'output del programma direttamente al programma di masterizzazione, ma si tratta generalmente di una tecnica sconsigliabile.

Alcune opzioni

-a

Include tutti i file. Se questa opzione non viene utilizzata, i file il cui nome contiene i simboli tilde (~) o # non vengono inclusi, trattandosi normalmente di copie di sicurezza di versioni precedenti.

-f

Utilizzando questa opzione, si fa in modo che i collegamenti simbolici vengano tradotti nel file o nella directory a cui puntano. Ciò è utile quando si prepara un CD-ROM senza le estensioni Rock Ridge. Se questa opzione non viene utilizzata, i collegamenti simbolici sono copiati come tali e di conseguenza si utilizzano le estensioni Rock Ridge.

-m modello

Questa opzione, seguita da un modello realizzato con i caratteri jolly gestiti dalla shell, permette di escludere tutti i file e le directory che corrispondono al modello. Il modello riguarda solo il nome dei file e delle directory, non il percorso necessario a raggiungerli.

-o file

Questa opzione permette di specificare il file di destinazione che dovrà contenere l'immagine del file system generato. Il file indicato può anche essere un dispositivo a blocchi di un'unità a dischi, come un dischetto o una partizione, ma non un CD-ROM. Se questa opzione non viene utilizzata, il risultato viene emesso attraverso lo standard output.

-R

Questa opzione permette di generare un file system ISO 9660 con estensioni Rock Ridge, permettendo così la memorizzazione di tutte le informazioni tipiche dei sistemi Unix.

-r

Questa opzione si comporta in modo analogo a -R con la differenza che la proprietà e i permessi vengono modificati:

  • file e directory risulteranno appartenere all'utente e al gruppo root;

  • tutti i file e le directory otterranno tutti i permessi di lettura;

  • tutti i permessi di scrittura verranno tolti;

  • tutti i file e le directory che risultano avere almeno un permesso di esecuzione, lo otterranno per tutti gli utenti;

  • i permessi particolari: SUID, SGID e Sticky, verranno rimossi.

-T

Utilizzando questa opzione si attiva la creazione del file TRANS.TBL in ogni directory, per contenere la tabella di conversione necessaria a stabilire il nome corretto dei file quando si legge il CD-ROM in un sistema che non è in grado di riconoscere le estensioni Rock Ridge.

-v

Durante il funzionamento, genera più informazioni.

-x directory

Permette di escludere la directory indicata.

-C inizio_ultima_sessione,inizio_prossima_sessione

Questa opzione si usa assieme a -M per la creazione di un'immagine da accodare in una sessione successiva. L'argomento dell'opzione si compone di due parti, separate da una virgola, che sono numeri ottenuti da cdrecord con l'opzione -msinfo, in riferimento a un CD multisessione a cui si vuole accodare l'immagine che si sta per creare.

-M immagine_nella_sessione_precedente

Si usa assieme a -C per creare un'immagine da considerare la continuazione di un'altra, da inserire nella sessione successiva del CD.

Estensioni El-Torito

-b file_immagine_di_avvio

Permette di indicare il file contenente l'immagine di un dischetto da utilizzare per rendere avviabile il CD-ROM con le estensioni El-Torito. Questa opzione si usa assieme a -c.

-c file_catalogo

Questa opzione si usa assieme a -b allo scopo di rendere avviabile il CD-ROM utilizzando le estensioni El-Torito. Si deve indicare il nome di un file. mkisofs lo deve creare o sovrascrivere all'interno della gerarchia che compone l'insieme di ciò che si vuole inserire nel file system ISO 9660. In pratica, questo file serve a contenere delle indicazioni relativamente all'avvio del CD-ROM, definite automaticamente da mkisofs.

È un po' difficile indicare correttamente i file abbinati alle opzioni -b e -c. In pratica è necessario che la directory corrente nel momento della creazione dell'immagine ISO 9660 corrisponda al punto iniziale della gerarchia che si vuole archiviare in questo modo. Così, i percorsi dei file in questione possono essere indicati in modo relativo.

Esempi

mkisofs -r -T -v -o prova.img /home/tizio/elio

Crea un'immagine ISO 9660 nel file prova.img di quanto contenuto a partire dalla directory /home/tizio/elio/. Vengono usate le estensioni Rock Ridge, attraverso l'opzione -r, ma la proprietà e i permessi di file e directory vengono adattati nel modo generalmente più opportuno. Attraverso l'opzione -T si ottiene la creazione del file TRANS.TBL in ogni directory.

mkisofs -a -r -T -v -o prova.img /home/tizio/elio

Come nell'esempio precedente, ma, attraverso l'opzione -a, non vengono esclusi i file il cui nome contiene il simbolo ~ o #.

mkisofs -r -T -v -o prova.img <-'
`->-b images/boot.img -c boot/boot.cat `pwd`

Crea un'immagine ISO 9660 in un file, a partire dalla directory corrente (l'indicazione viene ottenuta attraverso quanto restituito dal comando pwd). Vengono usate le estensioni Rock Ridge, con l'opzione -r, in modo che la proprietà e i permessi di file e directory siano adattati nel modo generalmente più opportuno. Inoltre si utilizza il file images/boot.img per l'avvio del CD-ROM e si crea il file boot/boot.cat per lo stesso motivo.

mkisofs -r -T -v -o prova.img <-'
`->-b images/boot.img -c boot/boot.cat $PWD

Come nell'esempio precedente, con la differenza che la directory corrente viene ottenuta dalla variabile di ambiente PWD.

70.2.5   $ mkhybrid

mkhybrid [opzioni] directory

mkhybrid (3) è un programma derivato da mkisofs, rispetto al quale è in grado di gestire un numero maggiore di varianti del file system ISO 9660, su un solo file system ibrido. Per la precisione, permette di utilizzare anche le estensioni Joliet (Microsoft) e HFS (Apple). Il funzionamento è analogo a quello del suo predecessore; in particolare si aggiungono delle opzioni specifiche per le nuove estensioni.

In generale valgono le opzioni di mkisofs. Qui viene descritta solo l'opzione necessaria a inserire le estensioni Joliet, mentre per quelle HFS è necessario leggere la pagina di manuale mkhybrid(8).

Opzioni relative alle estensioni Joliet

-J

Genera le estensioni Joliet.

Esempi

mkhybrid -r -T -J -v -o prova.img /home/tizio/elio

Crea un'immagine ISO 9660 nel file prova.img di quanto contenuto a partire dalla directory /home/tizio/elio/. Vengono usate le estensioni Rock Ridge, attraverso l'opzione -r, ma la proprietà e i permessi di file e directory vengono adattati nel modo generalmente più opportuno. L'opzione -J aggiunge le estensioni Joliet. Attraverso l'opzione -T si ottiene la creazione del file TRANS.TBL in ogni directory.

mkhybrid -a -r -T -J -v -o prova.img /home/tizio/elio

Come nell'esempio precedente, ma, attraverso l'opzione -a, non vengono esclusi i file il cui nome contiene il simbolo ~ o #.

mkhybrid -r -T -J -v -o prova.img <-'
`->-b images/boot.img -c boot/boot.cat `pwd`

Crea un'immagine ISO 9660 in un file, a partire dalla directory corrente (l'indicazione viene ottenuta attraverso quanto restituito dal comando pwd). Vengono usate le estensioni Rock Ridge, con l'opzione -r, in modo che la proprietà e i permessi di file e directory siano adattati nel modo generalmente più opportuno. L'opzione -J aggiunge le estensioni Joliet. Inoltre si utilizza il file images/boot.img per l'avvio del CD-ROM e si crea il file boot/boot.cat per lo stesso motivo.

mkhybrid -r -T -J -v -o prova.img <-'
`->-b images/boot.img -c boot/boot.cat $PWD

Come nell'esempio precedente, con la differenza che la directory corrente viene ottenuta dalla variabile di ambiente PWD.

70.2.6   Esperimenti con il file system ISO 9660

Prima di arrivare alla realizzazione di un CD-ROM occorre fare qualche esperimento non distruttivo. Si suppone che si tratti dell'utente tizio che ha costruito una struttura a partire dalla directory prova/ discendente dalla propria directory personale.

mkisofs -r -T -v -o ~/prova.img ~/prova[Invio]

In questo modo è stato creato il file prova.img nella directory personale dell'utente. Per verificare il risultato si può eseguire il montaggio dell'immagine appena creata, ma per questo occorre avere i privilegi dell'utente root.

su[Invio]

Password: *******[Invio]

mount -o loop -t iso9660 /home/tizio/prova.img /mnt/cdrom[Invio]

Se tutto va bene, da questo momento l'immagine risulta collegata alla directory /mnt/cdrom/. Al termine si smonta l'immagine nel modo solito.

umount /mnt/cdrom[Invio]

Volendo, un'immagine di un file system ISO 9660 può risiedere in un disco normale, o meglio, un disco normale può essere utilizzato come se fosse un CD-ROM. Quello che si ottiene è sempre un'unità in sola lettura, perché il tipo di file system non consente la modifica.

Supponendo che con l'esempio precedente si fosse ottenuto un file di dimensione inferiore o al massimo uguale a quella di un dischetto, si può riversare tale immagine nel modo seguente:

cp /home/tizio/prova.img /dev/fd0[Invio]

Una volta trasferito si può montare il dischetto come se si fosse un CD-ROM.

mount -t iso9660 /dev/fd0 /mnt/cdrom[Invio]

Al termine si smonta il dischetto nel modo solito.

umount /mnt/cdrom[Invio]

70.3   Masterizzazione

Per giungere alla realizzazione di un proprio CD, occorre un'unità per la masterizzazione e il software adatto per trasferire un'immagine ISO 9660 nel CD vergine. In questa parte viene spiegato il procedimento a grandi linee. Prima di giungere alla masterizzazione vera e propria, ma anche prima di acquistare un masterizzatore, è bene leggere tutta la documentazione disponibile al riguardo, a cominciare da CD-Writing HOWTO di Winfried Trümper.

Il CD che può essere realizzato in casa è un CD-R, ovvero un Compact disk recordable, oppure un CD-RW, ovvero un Compact disk rewritable. Si distingue dai CD industriali per il fatto di utilizzare un sottile strato d'oro o di argento, mentre quelli normali utilizzano uno strato di alluminio.

70.3.1   Masterizzatore SCSI

Il masterizzatore più comune è di tipo SCSI e per questo è necessario che il kernel sia stato predisposto opportunamente (sezione 29.2.11), includendo in particolare la gestione generica delle unità SCSI.

Oltre a questo occorre avere indicato il tipo di unità di controllo SCSI di cui si dispone.

La registrazione di un CD attraverso un'unità SCSI avviene per mezzo di un dispositivo SCSI generico, utilizzando i file di dispositivo /dev/sc*. Questo significa anche che il programma di registrazione richiede l'identificazione dell'unità SCSI attraverso dei modi inconsueti. È necessario determinare di quale unità di controllo SCSI si tratta (probabilmente è l'unica installata), il numero dell'unità SCSI e l'eventuale LUN (se il LUN non viene utilizzato, questo corrisponderà semplicemente a zero).

70.3.2   Masterizzatore ATA/ATAPI

A titolo informativo, vale la pena di annotare cosa si può fare se si vuole utilizzare un masterizzatore collegato attraverso l'interfaccia ATA/ATAPI.

Generalmente occorre abilitare l'emulazione SCSI all'interno della gestione ATAPI. In pratica, oltre alle indicazioni già viste per la masterizzazione utilizzando un'interfaccia SCSI, occorre disabilitare la gestione del lettore CD-ROM ATA/ATAPI e attivare l'emulazione SCSI (sezione 29.2.10). Inoltre, dal momento che il kernel Linux non è in grado di distinguere la presenza di un masterizzatore ATAPI, occorre dare l'opzione

hdx=ide-scsi

in fase di avvio (dove hdx rappresenta la x-esima unità ATA). La cosa è spiegata meglio nella sezione 35.7, a proposito del bus ATA.

Utilizzando un kernel predisposto in questo modo, le unità CD-ROM risulteranno accessibili dai dispositivi /dev/sr* oppure /dev/scd* e non più attraverso quelli corrispondenti ai dispositivi ATA (capitolo 35). Per verificare il riconoscimento di queste unità pseudo-SCSI, si può provare a utilizzare cdrecord con l'opzione -scanbus.

Se un programma per la masterizzazione di un CD ha difficoltà a riconoscere un modello ATAPI con emulazione SCSI, si può provare a indicarlo esplicitamente come un tipo MMC generico. Per esempio, con Cdrdao si può usare l'opzione --driver generic-mmc-raw.

70.3.3   Problemi legati alla masterizzazione

La registrazione di un CD è un'operazione a senso unico senza possibilità di ripensamenti né ritardi. Se qualcosa non va, il CD che si ottiene è inutilizzabile. Vanno tenute a mente alcune regole fondamentali:

Il problema legato al flusso di dati costante è probabilmente il più delicato. Questo generalmente impedisce di utilizzare per altre attività l'elaboratore con cui si esegue la masterizzazione. Anche il problema della vibrazioni non deve essere trascurato; un urto potrebbe rovinare la registrazione, ma nello stesso modo, anche un'intensa attività del disco fisso può produrre delle vibrazioni capaci di interferire con la registrazione del CD.

Per ultimo va considerato anche il problema della pulizia del CD: prima della registrazione è opportuno afferrarlo con cura in modo da non sporcare il lato che deve essere inciso. Una volta registrato, sarà meno importante il problema della pulizia, salvo il caso del CD-RW che deve rimanere pulito per consentire il riutilizzo successivo in registrazione.

70.3.4   Cdrecord

Cdrecord, (4) ovvero l'eseguibile cdrecord, è un programma in grado di registrare CD-R attraverso un gran numero di unità, principalmente SCSI. Per conoscere precisamente quali unità è in grado di gestire conviene consultare la documentazione interna e in particolare la pagina dedicata a questo programma: <http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html>.

cdrecord [opzioni_generali] dev=dispositivo [opzioni_di_traccia] traccia...

Per l'utilizzo di unità SCSI occorre conoscere precisamente le coordinate dell'unità di masterizzazione. L'indirizzo può essere composto nei due modi seguenti:

dev=unità_controllo_scsi,scsi_id,lun

dev=scsi_id,lun

In pratica, il secondo modo può essere utilizzato quando si dispone di un'unica unità di controllo SCSI.

Le tracce sono semplicemente nomi di file da usare durante la registrazione. Se si intende utilizzare lo standard input si deve indicare un trattino singolo (-).(5)

Eventualmente, utilizzando l'opzione -scanbus, è possibile conoscere quali unità di controllo SCSI sono installate, assieme all'indicazione delle unità SCSI collegate e alle loro coordinate. Questa opzione è tanto più utile se si utilizzano unità ATAPI con l'emulazione SCSI.

Alcune opzioni generali

Le opzioni generali vanno indicate prima della specificazione delle coordinate necessarie a raggiungere l'unità di registrazione.


-v

Durante la registrazione emette più informazioni.

-V

Durante la registrazione emette più informazioni legate al trasporto SCSI. L'uso di questa opzione è sconsigliabile in generale, perché genera un rallentamento che potrebbe provocare l'interruzione della registrazione.

-dummy

Permette di eseguire tutte le operazioni in simulazione. In pratica, tutto avviene come nella realtà, tranne per il fatto che il laser rimane spento.

-multi

Lascia aperta la sessione, per consentire l'aggiunta di altre sessioni in seguito. È importante ricordare che non tutti i lettori CD-ROM sono in grado di leggere CD multisessione.

-msinfo

Emette una coppia di numeri che indica la posizione iniziale dell'ultima sessione presente nel CD e la posizione iniziale della prossima sessione che può essere aggiunta.

-nofix

Permette di non concludere una sessione con l'indice TOC. Ciò si usa solitamente per realizzare un CD audio in fasi successive, tenendo conto che un CD audio senza l'indice TOC finale non può essere ascoltato in un apparecchio di riproduzione normale. Si ottiene la creazione dell'indice TOC mancante con l'opzione -fix.

-fix

Permette di concludere una sessione inserendo un indice TOC, quando questa operazione non è già stata fatta automaticamente (fixating). Generalmente, questa opzione non viene utilizzata, perché la creazione dell'indice TOC è implicita, salvo l'uso dell'opzione -nofix.

-eject

Espelle il disco alla fine delle operazioni.

speed=velocità

Permette di definire la velocità di registrazione. Il valore da inserire è un numero intero corrispondente a un multiplo della velocità standard di riproduzione di un CD audio: 175 Kibyte/s. Per fare un esempio, il numero quattro corrisponde a quello che di solito si esprime come «x4» o «4x».

blank={all|fast|session|unclose|altra_opzione}

Permette di cancellare un CD-RW prima di un nuovo riutilizzo. Si utilizza una parola chiave per definire cosa cancellare esattamente. Il minimo è fast, che si limita a sovrascrivere gli indici, consentendo un riutilizzo completo del disco; all cancella tutto; session elimina solo l'ultima sessione unclose riapre l'ultima sessione, consentendo di accodare altre sessioni. Sono disponibili altre parole chiave per situazioni particolari, di cui si trova la descrizione nella pagina di manuale cdrecord(1).

Alcune opzioni di traccia

Le opzioni di traccia possono essere alternate tra i nomi dei file che rappresentano le tracce da registrare. La validità dell'effetto di queste opzioni riguarda le tracce successive, fino a che non si incontrano opzioni contrarie.


-data

Questa opzione è predefinita e permette di specificare che le tracce seguenti contengono dati ISO 9660 o Rock Ridge.

-audio

Indica che le tracce seguenti sono di tipo audio.

-pad

Aggiunge alla fine delle tracce una pausa di circa 15 secondi. Questa opzione può essere utile se il lettore risulta incapace di leggere gli ultimi settori delle tracce.

-bytes=dimensione

Questa opzione permette di specificare la dimensione in byte dell'immagine della traccia successiva. Può essere necessaria tale indicazione quando si tratta di una partizione di un disco, per cui la dimensione reale della traccia è inferiore a quella della partizione stessa. Generalmente si utilizza un'immagine in un file, la cui dimensione coincide con quella della traccia, per cui questa opzione non ha la necessità di essere inserita.

Esempi

cdrecord -scanbus

Scandisce le unità SCSI, reali o emulate, elencando ciò che trova.

cdrecord -v speed=1 dev=0,2,0 -data traccia.img

Esattamente come nell'esempio precedente, indicando esplicitamente di utilizzare la prima unità di controllo SCSI.

cdrecord -v speed=1 dev=2,0 -data traccia.img

Inizia la registrazione a velocità normale del file traccia.img, nell'unità SCSI numero due senza LUN.

cdrecord -v speed=4 dev=3,0 -data traccia.img

Inizia la registrazione a una velocità quadrupla (x4) del file traccia.img, nell'unità SCSI numero tre senza LUN.

cdrecord -v speed=4 dev=3,0 blank=fast

Ripristina rapidamente un CD-RW.

70.3.5   Cdrdao

Cdrdao (6) è un programma per la registrazione di CD, specificando le varie tracce di una sessione attraverso un file di testo, indicato nel modello sintattico come file_toc. A questo file si farà riferimento come «file TOC». Cdrdao si compone in pratica dell'eseguibile cdrdao, che si usa con la sintassi seguente:

cdrdao comando [opzioni] file_toc...

Per l'utilizzo di unità SCSI occorre conoscere precisamente le coordinate dell'unità di masterizzazione. L'indirizzo, che va indicato come argomento delle opzioni --device e --source-device, deve essere composto nel modo seguente, che è compatibile con cdrecord:

unità_controllo_scsi,scsi_id,lun

Cdrdao è particolarmente adatto per la realizzazione di CD audio; tuttavia si vuole mostrare qui solo l'uso utile per ottenere dei CD-ROM.

Alcuni comandi

simulate

Simula la scrittura del CD a laser spento.

write

Richiede la scrittura normale del CD, in base alle specifiche contenute nel file TOC.

Alcune opzioni

--device unità_controllo_scsi,scsi_id,lun

Specifica l'unità SCSI da utilizzare per la scrittura del CD.

--speed n

Permette di definire la velocità di registrazione. I valori comuni possono essere 1, 2, 4 e 8. La scelta dipende dalla velocità massima che può gestire l'unità di masterizzazione e il CD utilizzato.

--buffers n

Permette di specificare la quantità di aree di memoria tampone da allocare per prevenire interruzioni nel flusso dei dati al masterizzatore. Il valore minimo è 10, mentre il valore predefinito è 32.

--eject

L'uso di questa opzione fa in modo che venga espulso il CD al termine della registrazione.

-v n

Questa opzione consente di stabilire il livello di dettaglio che si vuole raggiungere nelle informazioni fornite durante il funzionamento. Valori superiori a due danno una quantità molto grande di informazioni.

--driver nome[:opzioni]

Consente di forzare il riconoscimento del masterizzatore in base alle caratteristiche corrispondenti al nome indicato. Per esempio, il tipo generic-mmc-raw corrisponde al masterizzatore comune di tipo ATAPI con emulazione SCSI.

Esempi di configurazione del file TOC

Per la realizzazione di CD-ROM normali, in cui si registra una sola traccia, il file TOC è molto semplice da definire e non è il caso di approfondirne la sintassi. Viene mostrato solo un esempio standard:

CD_ROM
TRACK MODE1
DATAFILE "traccia_1"

In questo caso si fa riferimento all'immagine traccia_1, contenuta nella directory corrente, probabilmente dove si trova anche il file TOC (gli apici doppi che racchiudono il nome del file sono obbligatori).

Esempi di utilizzo

cdrdao write -v 2 --speed 1 --device 0,2,0 elenco.toc

Inizia la registrazione del CD contenuto nel masterizzatore collegato alla prima unità di controllo SCSI, corrispondente all'unità SCSI numero due, utilizzando le informazioni contenute nel file TOC elenco.toc.

cdrdao write -v 2 --speed 4 --device 0,3,0 elenco.toc

Inizia la registrazione del CD contenuto nel masterizzatore collegato alla prima unità di controllo SCSI, corrispondente all'unità SCSI numero tre, a velocità quadrupla, utilizzando le informazioni contenute nel file TOC elenco.toc.

cdrdao write --driver generic-mmc-raw -v 2 --speed 4 <-'
`->--device 0,3,0 elenco.toc

Come nell'esempio precedente, con l'indicazione del tipo di masterizzatore, corrispondente a un modello ATAPI standard, con emulazione SCSI.

70.4   CD multitraccia e CD multisessione

All'inizio del capitolo è stato spiegato brevemente cosa si intende per sessioni e per tracce. Indipendentemente dalla possibilità tecnica di realizzare un CD contenente più di una traccia per sessione e più di una sessione per CD, è poi il contesto che consente o meno di utilizzare queste tecniche.

70.5   CD-ROM e tracce

Un CD contenente dei dati (CD-ROM) deve utilizzare per questo la prima traccia della prima sessione. Eventualmente, la sessione può contenere anche altre tracce di tipo diverso (di solito tracce audio), che non vanno così a interferire con i dati.

Volendo, è molto facile realizzare una sessione contenente diverse immagini di dati, in altrettante tracce, ma poi diventa impossibile montarle. Per esempio, se si utilizza Cdrecord nel modo seguente, dove i file uno.img e due.img sono due immagini ISO 9660, si ottengono effettivamente due tracce dati, ma quando si monta il CD, si accede in pratica solo alla prima delle due:

cdrecord dev=0,3,0 -data uno.img due.img

70.6   CD-ROM e sessioni

Teoricamente è possibile aggiungere dei dati a un CD-ROM che contiene una sessione aperta, in cui la traccia dati contiene un file system ISO 9660. Per ottenere questo risultato, si crea una seconda immagine ISO 9660 speciale, che viene inserita in una traccia nella sessione successiva. Quando si monta un CD-ROM del genere, se si fa riferimento all'ultima sessione, si dovrebbe riuscire a «vedere» l'insieme dei file system.

In pratica, è bene evitare di agire in questo modo, perché si tratta di un procedimento complesso e il risultato non è sempre assicurato.

Per cercare di mostrare come funziona la cosa, si mostra un esempio che parte dalla creazione della prima immagine, che andrà a inserirsi nella prima traccia (della prima sessione):

mkhybrid -a -r -o uno.img /home/tizio/uno

Con questo comando si genera il file uno.img contenente l'immagine ISO 9660 della directory /home/tizio/uno/.

Si masterizza la prima sessione con la traccia dati corrispondente al file uno.img, utilizzando il masterizzatore collocato nella posizione «0,0,0» (molto probabilmente si tratta di un masterizzatore ATAPI e l'elaboratore non dispone di unità di controllo SCSI vere e proprie):

cdrecord dev=0,0,0 -multi -data uno.img

A questo punto si può verificare la collocazione della sessione:

cdrecord dev=0,0,0 -msinfo

0,17794

Il primo numero rappresenta l'inizio della sessione e il secondo sarebbe la posizione iniziale per la sessione successiva. Questa informazione viene usata da mkhybrid (oppure mkisofs) per generare l'immagine dell'aggiunta che si vuole generare:

mkhybrid -a -r -C `cdrecord dev=1,0,0 -msinfo` -M uno.img -o due.img /home/tizio/prova_1

Come si vede, mkhybrid ha bisogno di conoscere la collocazione della sessione precedente e di quella successiva, ma soprattutto ha bisogno di rileggere l'immagine precedente. Si passa così alla masterizzazione dell'immagine due.img nella seconda sessione:

cdrecord dev=0,0,0 -multi -data due.img

Volendo si può controllare ancora la posizione dell'ultima sessione:

cdrecord dev=0,0,0 -msinfo

17794,24996

Per montare la seconda sessione del CD-ROM, allo scopo di trovare la somma delle due immagini contenute, occorre fare riferimento esplicito alla seconda (ultima) sessione:

mount -o session=1 -t iso9660 /dev/scd0 /mnt/cdrom

70.7   Estrazione della prima traccia dati

Un file system ISO 9660 può trovarsi in un CD-ROM o in un altro tipo di unità di memorizzazione, precisamente nella prima traccia dati. Qualunque sia la situazione, questa traccia dati può avere una dimensione inferiore all'unità di memorizzazione. Trovandosi nella necessità di estrarla, è utile conoscerne tale dimensione.

Se c'è il modo di montarlo, basta utilizzare successivamente il comando df per sapere esattamente il numero di kibibyte (simbolo: Kibyte) contenuti; ma in alternativa si può utilizzare il programma isosize contenuto nel pacchetto di X-CD-Roast (capitolo 341). Per la precisione dovrebbe trovarsi nella directory /usr/lib/xcdroast*/bin/:

/usr/lib/xcdroast*/bin/isosize /dev/cdrom

Il comando mostra in che modo sia possibile determinare la dimensione della prima traccia dati del CD-ROM inserito nel lettore corrispondente al dispositivo /dev/cdrom (quello predefinito). Volendo estrarre la traccia, senza altri dati aggiuntivi, si potrebbe utilizzare dd nel modo seguente:

dd if=/dev/cdrom of=traccia bs=1b count=`isosize /dev/cdrom`

In questo caso si suppone che isosize sia accessibile attraverso l'elenco dei percorsi di ricerca per gli eseguibili, della variabile di ambiente PATH.

70.7.1   Verifica di un CD-ROM appena registrato

La verifica del successo o meno nella registrazione di un CD-ROM può essere fatta in un modo piuttosto semplice: leggendo tutto il contenuto e verificando se con questa operazione si ottengono delle segnalazioni di errore.

Supponendo di disporre di un lettore per CD-ROM in corrispondenza del dispositivo /dev/hdc, si potrebbe procedere come segue:

cat /dev/hdc > /dev/null 2> /tmp/errori.txt

Se tutto va bene, alla fine si ottiene un file /tmp/errori.txt vuoto. Altrimenti il file riporta una segnalazione del tipo seguente:

cat: /dev/hdc: I/O error

Alle volte si possono osservare sullo schermo delle segnalazioni di errore aggiuntive anche quando il file /tmp/errori.txt, o un suo equivalente, risulta vuoto alla fine del test. Dal momento che sia lo standard output che lo standard error del comando sono ridiretti, si tratta di messaggi estranei provenienti dal sistema. A tali messaggi di errore corrispondono poi dei nuovi tentativi; solo se il sistema non riesce in alcun modo a superare gli errori viene coinvolto il comando stesso, che poi lo segnala attraverso lo standard error.

Se si ottiene una segnalazione di errore attraverso lo standard error di un comando di lettura, come cat, il CD-ROM è difettoso, altrimenti gli errori segnalati sullo schermo sono ignorabili. Inoltre, è il caso di ricordare che prima di iniziare il controllo di un altro CD-ROM, è necessario cancellare il file di destinazione dello standard error.

rm /tmp/errori.txt ; cat /dev/hdc > /dev/null 2> /tmp/errori.txt

Tuttavia, si potrebbe fare meglio utilizzando il programma isosize già descritto nella sezione precedente. In questo modo si evitano tentativi di lettura oltre la fine della traccia, che generano normalmente degli errori tali da creare un po' di confusione:

dd if=/dev/cdrom of=/dev/null bs=1b count=`isosize /dev/cdrom`

70.8   CD-ROM con file system differenti

Un CD può essere masterizzato anche utilizzando per la traccia dati un file system differente dal solito ISO 9660. Evidentemente, qualunque cosa sia, alla fine sarà possibile solo l'accesso in lettura. In questo senso è da considerare la possibilità di utilizzare i CD per l'archiviazione di un file singolo (tar+gzip, o qualcosa del genere), senza la necessità di creare l'immagine di un file system vero e proprio.

70.9   Riferimenti

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) In realtà, il file system ISO 9660 sarebbe in grado di gestire nomi di un massimo di 32 caratteri. Il motivo per il quale si mantiene lo standard 8.3 è quello per cui si vuole consentire a qualunque sistema operativo, Dos incluso, di accedere ai suoi dati.

2) Mkisofs   GNU GPL

3) Mkhybrid   GNU GPL

4) Cdrecord   GNU GPL

5) Generalmente, l'utilizzo di una pipeline per generare l'input di un programma di masterizzazione dei CD-R è sconsigliabile. Ciò perché potrebbero verificarsi dei ritardi nel flusso di dati che giunge all'unità di masterizzazione, provocando l'interruzione irreversibile della registrazione stessa.

6) Cdrdao   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome cd_cd_rom_e_file_nbsp_system_iso_9660.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]