[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico] [volume] [parte]
Il file system ISO 9660, cioè quello usato per i CD-ROM, ma solitamente anche per i DVD-ROM, è particolare a causa della struttura stessa di questi dischi: 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 e il DVD 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.
Tabella 85.1. Riepilogo dei programmi per la preparazione di CD-ROM e di DVD-ROM. |
Le informazioni contenute in questo capitolo a proposito dei DVD sono molto limitate; in particolare non si considera la possibilità dei DVD-RAM di essere usati praticamente come dei dischi comuni rimovibili. |
Il kernel Linux ha una propria gestione per l'accesso alle unità CD o DVD, che può essere impostata, attraverso un programma apposito. In generale, non c'è alcun bisogno di intervenire sull'impostazione predefinita iniziale, tuttavia può essere interessante conoscere le alternative disponibili, in presenza di situazioni particolari.
Il programma che consente di modificare la configurazione di utilizzo delle unità CD o DVD è setcd:
setcd [opzioni] [file_di_dispositivo] |
Il programma setcd richiede l'indicazione di almeno un'opzione, altrimenti non si ottiene alcuna azione; inoltre, se non viene indicato il file di dispositivo, il programma cerca di utilizzare /dev/cdrom
. Alcune delle opzioni richiedono un argomento numerico, pari a zero o uno, con il quale si intende disabilitare, oppure abilitare una funzionalità.
Tabella 85.2. Alcune opzioni. |
Segue la descrizione di alcuni esempi.
#
setcd -s /dev/hdc
[Invio]
Mostra la situazione attuale della configurazione relativa all'unità che corrisponde al file di dispositivo /dev/hdc
. La situazione iniziale dovrebbe essere quella seguente:
/dev/hdc: Auto close tray: set Auto open tray: cleared Use O_NONBLOCK flag: set Lock tray: set Check CD type: cleared |
Come si vede, risultano disattivate le funzioni di espulsione automatica (opzione -o) e di controllo del tipo di disco (opzione -t).
#
setcd -r /dev/hdc
[Invio]
Imposta la configurazione predefinita secondo la logica di setcd:
/dev/hdc: Auto close tray: set Auto open tray: cleared Use O_NONBLOCK flag: set Lock tray: set Check CD type: set |
#
setcd -l0 /dev/hdc
[Invio]
Fa in modo che si possa espellere manualmente il disco contenuto nell'unità del file di dispositivo /dev/hdc
, in ogni occasione. Tuttavia, si tratta di un'azione sconsigliabile.
/dev/hdc: Lock tray: cleared |
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 consentirne 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.
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.
Il DVD nasce come un tipo particolare di CD in grado di memorizzare molti più dati (intorno ai 4 700 000 000 byte, ovvero 4,3 Gibyte), dal quale si sono sviluppate diverse varianti. Nelle situazioni più comuni si distinguono DVD-R (o DVD-RW) dai DVD+R (o DVD+RW). Il primo tipo (DVD-R o DVD-RW) è quello che ha caratteristiche tecniche inferiori, perché per l'incisione richiede la stessa procedura da usare per un CD, ma è compatibile con la maggior parte dei lettori DVD; il secondo tipo (DVD+R o DVD+RW) è più evoluto ed è più facile la procedura di registrazione.
Fatta questa distinzione tra «DVD-» e «DVD+» è bene chiarire che se lo scopo è quello di archiviare dati da rileggere con lo stesso masterizzatore, conviene decisamente utilizzare dischi «+».
Come si può intendere intuitivamente, quando si fa riferimento a un DVD-ROM, si intende un DVD contenente una traccia dati (che non può essere modificata), così come avviene con i CD-ROM, senza fare distinzioni sulla tecnologia usata nella realizzazione del disco («-» o «+» che sia). |
Creare l'immagine di un CD-ROM o di un DVD-ROM significa predisporre un file in qualità di traccia dati di una sessione del disco che si vuole masterizzare. In generale si tratta di realizzare un file system ISO 9660, probabilmente con qualche estensione.
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.
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 e i DVD-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 dischi vengono letti in un sistema operativo che non è in grado di interpretare tali estensioni, si riescono a vedere solo nomi di file corti.
Il problema dei nomi deve essere tenuto in considerazione nella preparazione di CD-ROM e DVD-ROM. Se questi dischi sono destinati ad ambienti normali, Dos e derivati, occorre organizzare un sistema di nomi corti per essere certi che possano essere letti 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.
Le estensioni Zisofs si sommano a quelle Rock Ridge e sono costituite da una tecnica di compressione sui file, che consente un accesso trasparente ai dati. Si tratta precisamente di un'estensione specifica dei sistemi GNU/Linux, tuttavia è possibile estrarre il contenuto di un CD-ROM o di un DVD-ROM del genere disponendo degli strumenti necessari.
Le estensioni El-Torito permettono di realizzare un CD-ROM o un DVD-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 o il DVD-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.
Le estensioni Joliet nascono dalla Microsoft e servono a consentire la lettura del disco 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 disco che si realizza in qualunque circostanza.
Per la creazione di un file-immagine con file system ISO 9660, si utilizza un programma particolare, in grado di gestire anche le varie estensioni:
mkisofs [opzioni] directory |
mkhybrid [opzioni] directory |
Il programma mkisofs, (1) ovvero mkhybrid, crea il file-immagine 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 o i DVD-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.
Tabella 85.6. Alcune opzioni generali |
Tabella 85.7. Estensioni legate ai dati contenuti |
Tabella 85.8. Estensioni El-Torito, per rendere avviabile il CD-ROM o il DVD-ROM. |
Segue la descrizione di alcuni esempi.
#
mkisofs -r -T -v -o prova.img /home/tizio/elio
[Invio]
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 -r -T -v -o prova.img
\
\-b images/boot.img -c boot/boot.cat `pwd`
[Invio]
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 o del DVD-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
[Invio]
Come nell'esempio precedente, con la differenza che la directory corrente viene ottenuta dalla variabile di ambiente PWD.
#
mkisofs -r -T -J -v -o prova.img /home/tizio/elio
[Invio]
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.
#
mkisofs -r -T -J -v -o prova.img
\
\-b images/boot.img -c boot/boot.cat `pwd`
[Invio]
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 o del DVD-ROM e si crea il file boot/boot.cat
per lo stesso motivo.
#
mkisofs -r -T -J -v -o prova.img
\
\-b images/boot.img -c boot/boot.cat $PWD
[Invio]
Come nell'esempio precedente, con la differenza che la directory corrente viene ottenuta dalla variabile di ambiente PWD.
#
mkisofs -z -r -v -o prova.img /home/tizio/elio
[Invio]
Crea un'immagine ISO 9660 nel file prova.img
di quanto contenuto a partire dalla directory /home/tizio/elio/
, che è stata creata precedentemente per ottenere le estensioni Zisofs.
Prima di arrivare alla realizzazione di un CD-ROM o di un DVD-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 l'innesto 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 esegue il distacco dell'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 o un DVD-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ò innestare il dischetto come se fosse un CD-ROM.
#
mount -t iso9660 /dev/fd0 /mnt/cdrom
[Invio]
Al termine si esegue il distacco del dischetto nel modo solito.
#
umount /mnt/cdrom
[Invio]
L'avvio di un CD-ROM o di un DVD-ROM attraverso la tecnica dell'immagine di un dischetto, specificato con l'opzione -b di mkisofs, può essere anche troppo limitante, soprattutto quando ci sarebbe l'esigenza di utilizzare un kernel Linux molto grande. Per questo, si può usare Isolinux, (2) che offre una tecnica differente.
Per avviare un CD-ROM o un DVD-ROM attraverso Isolinux, si crea normalmente la directory isolinux/
all'inizio della gerarchia che deve servire per realizzare il disco stesso. Al'interno di questa directory si collocano alcuni file, descritti nell'elenco seguente.
La directory isolinux/
può contenere anche tutti gli altri file che possono essere richiesti per l'avvio, in base alla configurazione specificata nel file isolinux.cfg
.
Se la propria distribuzione GNU/Linux organizza un pacchetto per Isolinux (oppure per SYSLINUX, che incorpora Isolinux), il file isolinux.bin
già pronto può trovarsi nella directory /usr/lib/isolinux/
(oppure /usr/lib/syslinux/
): da lì va copiato nella directory isolinux/
già descritta.
Purtroppo, Isolinux non è in grado di funzionare in tutte le situazioni possibili, soprattutto a causa delle differenze che ci sono nei firmware (BIOS) dei vari tipi di elaboratori, pur restando sempre nella stessa architettura i386. Per cercare di capire dove si blocca il sistema di avvio, al posto di usare il file |
A titolo di esempio, viene mostrato come potrebbe essere configurato il file isolinux.cfg
:
|
Quello che si vede è precisamente una riduzione della configurazione usata per nanoLinux La sintassi per la scrittura delle direttive di questo file è abbastanza intuitiva e comunque è compatibile con quella di SYSLINUX.
In questo esempio, si può vedere la direttiva DISPLAY, con la quale viene visualizzato il contenuto del file logo.msg
; questo file si deve trovare, come gli altri, nella directory isolinux/
. Successivamente, nelle direttive KERNEL, viene specificato il nome del file che contiene il kernel, che in questo caso è vmlinuz
(sempre contenuto nella directory isolinux/
).
Senza entrare nel dettaglio della configurazione di Isolinux, che per esempio consente di inserire nel file usato con la direttiva DISPLAY anche un riferimento a un'immagine da usare come un logo, conviene vedere come va usato mkisofs:
#
cd directory_iniziale_gerarchia
Si suppone che la directory corrente sia quella iniziale, a partire dalla quale si articola la struttura che si vuole tradurre nel CD-ROM o nel DVD-ROM:
#
mkisofs -R -o /tmp/cdrom.img -b isolinux/isolinux.bin
\
\-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
In questo caso, per comodità, si utilizza sempre la directory isolinux/
per inserire il file boot.cat
.
In modo simile a Isolinux, anche GRUB consente l'avvio da CD o da DVD, attraverso il programma contenuto in stage2_eltorito
. In questo caso, serve solo il file stage2_eltorito
e non c'è bisogno di uno stage1
e nemmeno di file intermedi.
Quello che serve per realizzare un CD o un DVD avviabile con GRUB è la solita struttura /boot/grub/
, all'interno della quale si trova il file stage2_eltorito
e il file menu.lst
, più altri file eventuali che fossero richiamati dalla configurazione prevista. Molto probabilmente, il kernel del sistema da avviare si colloca nella directory /boot/
, ma questo non è indispensabile e basta che il file menu.lst
sia stato predisposto nel modo appropriato a questo riguardo.
Nel file di configurazione, per fare riferimento al CD o al DVD, non si può usare la voce (hdn) consueta: al suo posto si deve indicare (cd). L'esempio seguente mostra il contenuto di un file menu.lst
, completo ma essenziale:
|
Una volta sistemati i file di GRUB, basta creare il file-immagine del CD o del DVD, in modo analogo a come si procede con Isolinux:
#
cd directory_iniziale_gerarchia
Si suppone che la directory corrente sia quella iniziale, a partire dalla quale si articola la struttura che si vuole tradurre nel CD-ROM o nel DVD-ROM:
#
mkisofs -R -o /tmp/cdrom.img -b boot/grub/stage2_eltorito
\
\-c boot/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
In questo caso, per comodità, si utilizza sempre la directory boot/
per inserire il file boot.cat
.
Per giungere alla realizzazione di un proprio CD o DVD, occorre un'unità per la masterizzazione e il software adatto per trasferire un'immagine ISO 9660 nel disco 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 o il DVD che può essere realizzato in casa è un CD-R o un DVD-R/DVD+R, ovvero un Compact disk recordable o un Digital video disk recordable, oppure un CD-RW o un DVD-RW/DVD+RW, ovvero un Compact disk rewritable o un Digital video disk rewritable.
Teoricamente, il programma adatto per incidere un CD-ROM, dovrebbe essere capace di fare altrettanto con un DVD-ROM, ma in pratica, spesso non è così (si ricordi soprattutto che i DVD «+» richiedono una modalità di registrazione differente e ciò richiede di fatto strumenti specifici).
Il masterizzatore di tipo SCSI richiede che il kernel sia stato predisposto opportunamente, includendo in particolare la gestione generica delle unità SCSI. Oltre a questo, naturalmente, 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 corrisponde semplicemente a zero).
Per utilizzare un masterizzatore collegato attraverso l'interfaccia ATA/ATAPI, 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/DVD-ROM ATA/ATAPI e attivare l'emulazione SCSI. Inoltre, dal momento che il kernel Linux non è in grado di distinguere la presenza di un masterizzatore ATAPI, occorre dare l'opzione seguente in fase di avvio (dove hdx rappresenta la x-esima unità ATA):
hdx=ide-scsi |
Utilizzando un kernel predisposto in questo modo, le unità CD-ROM o DVD-ROM risultano accessibili dai dispositivi /dev/sr*
oppure /dev/scd*
e non più attraverso quelli corrispondenti ai dispositivi ATA. 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. |
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 flusso di dati verso il masterizzatore deve essere costante e si deve mantenere alla velocità di registrazione del masterizzatore stesso;
il masterizzatore non deve essere interessato da vibrazioni;
prima della registrazione, il CD deve essere pulito perfettamente.
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, è meno importante il problema della pulizia, salvo il caso del CD-RW che deve rimanere pulito per consentire il riutilizzo successivo in registrazione.
I programmi usati per incidere un CD, richiedono di specificare le coordinate SCSI necessarie a individuare il masterizzatore. Queste coordinate possono essere lette all'interno del file virtuale /proc/scsi/scsi
. Per esempio si può vedere qualcosa come il listato seguente:
|
In questo caso, si vede la presenza di un masterizzatore nell'unità di controllo 0, canale 0, ID 6, LUN 0. Per programmi come Cdrecord e Cdrdao, il canale non conta e le coordinate si esprimerebbero con la stringa 0,6,0.
Cdrecord, (3) 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 (-).(4)
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.
Tabella 85.13. Alcune opzioni generali. Le opzioni generali vanno indicate prima della specificazione delle coordinate necessarie a raggiungere l'unità di registrazione.
|
Tabella 85.14. 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.
|
Segue la descrizione di alcuni esempi.
#
cdrecord -scanbus
[Invio]
Scandisce le unità SCSI, reali o emulate, elencando ciò che trova.
#
cdrecord -v speed=1 dev=0,2,0 -data traccia.img
[Invio]
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
[Invio]
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
[Invio]
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
[Invio]
Ripristina rapidamente un CD-RW.
Cdrdao (5) è 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 fa 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. |
Tabella 85.15. Alcuni comandi.
|
Tabella 85.16. Alcune opzioni.
|
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:
|
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).
Segue la descrizione di alcuni esempi di utilizzo.
#
cdrdao write -v 2 --speed 1 --device 0,2,0 elenco.toc
[Invio]
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
[Invio]
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
[Invio]
Come nell'esempio precedente, con l'indicazione del tipo di masterizzatore, corrispondente a un modello ATAPI standard, con emulazione SCSI.
All'inizio del capitolo è stato spiegato brevemente cosa si intende per sessioni e per tracce. Indipendentemente dalla possibilità tecnica di realizzare un disco contenente più di una traccia per sessione e più di una sessione per disco, è poi il contesto che consente o meno di utilizzare queste tecniche.
Un CD o un DVD contenente dei dati (CD-ROM o DVD-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 in un CD-ROM una sessione contenente diverse immagini di dati, in altrettante tracce, ma poi diventa impossibile innestarle. 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 innesta il CD, si accede in pratica solo alla prima delle due:
#
cdrecord dev=0,3,0 -data uno.img due.img
[Invio]
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 innesta 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, da inserire nella prima traccia (della prima sessione):
#
mkisofs -r -o uno.img /home/tizio/uno
[Invio]
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
[Invio]
A questo punto si può verificare la collocazione della sessione:
#
cdrecord dev=0,0,0 -msinfo
[Invio]
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 mkisofs (oppure mkhybrid) per generare l'immagine dell'aggiunta che si vuole generare:
#
mkisofs -r -C `cdrecord dev=1,0,0 -msinfo` -M uno.img
\
\-o due.img /home/tizio/prova_1
[Invio]
Come si vede, mkisofs 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
[Invio]
Volendo si può controllare ancora la posizione dell'ultima sessione:
#
cdrecord dev=0,0,0 -msinfo
[Invio]
17794,24996 |
Per innestare 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
[Invio]
La realizzazione di un DVD-ROM richiede normalmente l'uso di strumenti differenti rispetto a quelli utili per i CD-ROM, perché il DVD offre possibilità in più rispetto al CD-ROM tradizionale, anche se i concetti fondamentali rimangono.
Dvdrecord, (6) è una derivazione di Cdrecord, realizzata in modo particolare per l'incisione di DVD-R e DVD-RW. Si compone dell'eseguibile dvdrecord che utilizza diverse opzioni nello stesso modo di cdrecord:
dvdrecord [opzioni_generali] dev=dispositivo [opzioni_di_traccia] traccia... |
L'esempio seguente mostra la procedura per cancellare un DVD-RW comune, in modo rapido, utilizzando un masterizzatore ATAPI che risulta avere le coordinate SCSI 0,0,0:
#
dvdrecord -v -dao blank=fast driver=mmc-mdvd speed=2 dev=0,0,0
[Invio]
Per procedere all'incisione partendo da un file-immagine (in questo caso si tratta del file immagine.iso
), si può usare un comando simile a quello seguente:
#
dvdrecord -v -dao -overburn driver=mmc-mdvd speed=2 dev=0,0,0 immagine.iso
[Invio]
Si osservi che la velocità specificata con l'opzione speed va considerata nel contesto del DVD, pertanto il flusso di dati che si ottiene è di gran lunga maggiore rispetto allo stesso valore usato per incidere un CD-ROM.
Growisofs, (7) è il programma principale del pacchetto DVD+rw-tools, che, nonostante il nome, è rivolto sia a DVD+R/DVD+RW, sia a DVD-R/DVD-RW:
growisofs [opzioni_generali] {-Z|-M} file_di_dispositivo opzioni_di_mkisofs |
Il modello sintattico mostrato non è abbastanza chiaro e si rende necessario osservare gli esempi per comprendere il senso generale.
Il nome Growisofs deriva dal fatto che originariamente il suo scopo era di pilotare correttamente il programma mkisofs per consentire l'aggiunta di dati a un file system ISO 9660 su un'unità di memorizzazione che lo consente. Attualmente, Growisofs gestisce in modo trasparente diverse tecniche che consentono in pratica di aggiungere dati a un DVD-ROM.
La differenza fondamentale di Growisofs (e degli altri programmi del pacchetto DVD+rw-tools) rispetto a Cdrecord e ai suoi derivati, sta nel fatto che l'unità del masterizzatore viene individuata attraverso il file di dispositivo, per esempio |
Prima di passare agli esempi di utilizzo di Growisofs conviene conoscere l'uso delle opzioni principali specifiche di questo programma, ricordando che alla fine della riga di comando si inseriscono le opzioni e gli argomenti da dare a mkisofs, ammesso che non si intenda fornire un file-immagine già pronto per la masterizzazione.
Tabella 85.20. Alcune opzioni specifiche di Growisofs.
|
Segue la descrizione di alcuni esempi di utilizzo del programma; si osservi che dopo l'opzione -Z o -M, appaiono opzioni e argomenti di mkisofs.
#
growisofs -dvd-compat -Z /dev/sr0=/tmp/immagine.iso
[Invio]
Copia il file-immagine /tmp/immagine.iso
in un DVD±R o DVD±RW, collocato nell'unità corrispondente al file di dispositivo /dev/sr0
, come prima e unica sessione.
#
growisofs -Z /dev/sr0 -R -J /home/tizio/dati
[Invio]
Copia il contenuto della directory /home/tizio/dati/
in un DVD±R o DVD±RW, come prima sessione, a cui potrebbero essere aggiunte successivamente altre sessioni. Attraverso le opzioni di mkisofs si richiede di utilizzare le estensioni Rock Ridge e Joliet.
#
growisofs -M /dev/sr0 -R -J /home/tizio/dati
[Invio]
Copia il contenuto della directory /home/tizio/appunti/
in una sessione successiva di un DVD±R o DVD±RW; le opzioni di mkisofs che riguardano le estensioni al formato ISO 9660 devono essere le stesse usate nelle sessioni preesistenti.
#
growisofs -Z /dev/sr0=/dev/zero
[Invio]
Cancella completamente il contenuto di un DVD±RW inserito nell'unità corrispondente al file di dispositivo /dev/sr0
. La cancellazione avviene perché si utilizza quanto si ottiene dalla lettura del file di dispositivo /dev/zero
.
Il pacchetto DVD+rw-tools include anche un altro programma che può rivelarsi molto importante: DVD+rw-format. Come si può osservare, nella descrizione fatta di Growisofs mancano delle opzioni specifiche per la «cancellazione» di un DVD±RW e in effetti non c'è alcun bisogno di fare questo, salvo quando si vuole utilizzare Growisofs in modo non interattivo all'interno di uno script.
Quando si utilizza Growisofs all'interno di uno script, con l'opzione -Z, se il disco fornito risulta contenere già un file system ISO 9660, il procedimento viene interrotto, perché non c'è modo di dare all'utente il tempo di rinunciare all'operazione. |
Il programma DVD+rw-format serve a compiere delle operazioni piuttosto «misteriose», simili all'inizializzazione di un disco comune:
dvd+rw-format [-force[=full]] [-blank[=full]] file_di_dispositivo |
Il programma DVD+rw-format consente di conoscere e di modificare la modalità, che può essere sequenziale o restricted overwrite (il secondo caso riguarda solo i DVD-RW). Per leggere la modalità, basta usare il programma senza opzioni:
#
dvd+rw-tools /dev/sr0
[Invio]
In questo modo si legge la situazione del disco contenuto nell'unità corrispondente al file di dispositivo /dev/sr0
. Ecco cosa si potrebbe ottenere:
* DVD±RW format utility by <appro@fy.chalmers.se>, version 4.9. * 4.7GB DVD-RW media in Restricted Overwrite mode detected. - media is already formatted, lead-out is currently at 183200 KB which is 4.0% of total capacity. - you have the option to re-run dvd+rw-format with: -force[=full] to enforce new format or mode transition and wipe the data; -blank[=full] to change to Sequential mode. |
In situazioni difficili, con DVD-RW che non vogliono saperne di funzionare, si è rivelato utile agire con la sequenza di comandi seguente, dove comunque il punto numero due è facoltativo:
#
dvd+rw-tools -force=full /dev/sr0
[Invio]
#
growisofs -Z /dev/sr0=/dev/zero
[Invio]
#
growisofs -Z /dev/sr0=immagine.iso
[Invio]
In pratica, nell'ultimo passaggio viene copiato un file-immagine già pronto. L'errore osservato che nel modo appena mostrato è stato possibile risolvere si è manifestato così:
#
growisofs -Z /dev/sr0=immagine.iso
[Invio]
/dev/sr1: "Current Write Speed" is 1.0x1385KBps. :-[ WRITE@LBA=0h failed with SK=5h/ASC=30h/ACQ=05h]: Wrong medium type :-( media is not formatted or unsupported. :-( write failed: Wrong medium type |
Per concludere è il caso di annotare che il programma growisofs potrebbe risiedere nel file system con i permessi «SUID-root», in modo che ogni utente possa accedere all'unità di scrittura DVD senza difficoltà. Teoricamente, il programma dovrebbe essere in grado di usare tali privilegi solo per la registrazione del disco, tornando ai privilegi originali nel momento in cui deve accedere ai dati da memorizzare.
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 innestarlo, 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. Per la precisione dovrebbe trovarsi nella directory /usr/lib/xcdroast*/bin/
:
#
/usr/lib/xcdroast*/bin/isosize /dev/cdrom
[Invio]
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`
[Invio]
In questo caso si suppone che isosize sia accessibile attraverso l'elenco dei percorsi di ricerca per gli eseguibili, della variabile di ambiente PATH.
La verifica del successo o meno nella registrazione di un CD-ROM o di un DVD-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 o per DVD-ROM in corrispondenza del dispositivo /dev/hdc
, si potrebbe procedere come segue:
#
cat /dev/hdc > /dev/null 2> /tmp/errori.txt
[Invio]
Se tutto va bene, alla fine si ottiene un file /tmp/errori.txt
vuoto. Altrimenti il file riporta una segnalazione del tipo seguente:
|
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, sia 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 o il DVD-ROM è difettoso, altrimenti gli errori segnalati sullo schermo sono ignorabili. Inoltre, è il caso di ricordare che prima di iniziare il controllo di un altro disco, è necessario cancellare il file di destinazione dello standard error.
#
rm /tmp/errori.txt ; cat /dev/hdc > /dev/null 2> /tmp/errori.txt
[Invio]
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`
[Invio]
Un CD o un DVD può essere masterizzato anche utilizzando per la traccia dati un file system differente dal solito ISO 9660. Evidentemente, qualunque cosa sia, alla fine è possibile solo l'accesso in lettura. In questo senso è da considerare la possibilità di utilizzare i CD o un DVD 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.
È importante considerare che un CD o un DVD contenente tracce audio, non può essere innestato: l'ascolto richiede programmi appositi, così come l'estrazione delle tracce. |
Jeff Tranter, CDROM HOWTO
<http://www.linux.org/docs/ldp/howto/HOWTO-INDEX/howtos.html>
Winfried Trümper, CD-writing HOWTO
<http://www.linux.org/docs/ldp/howto/HOWTO-INDEX/howtos.html>
What is DVD?
Appunti di informatica libera 2006.01.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>, <daniele·giacomini (ad) poste·it>
4) 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.
7) DVD+rw-tools GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome cd_cd_rom_dvd_rom_e_file_nbsp_system_iso_9660.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico]