Avanti Indietro Indice

3. "If in smoke you turn I shall not cease to fiddle while you burn." ("Se ti trasformi in fumo non smetterò di gingillarmi mentre bruci.") [L'imperatore Nerone mentre bruciava i suoi CD classici [64 d.C.]. Non aveva capito niente.]

Di solito la masterizzazione di un CD sotto Linux viene fatta in due fasi:

È anche possibile combinare i due passi in uno solo con una pipe, ma non è consigliato perché è poco affidabile. Vedi sotto.

3.1 Determinazione del dispositivo scsi a cui è collegato il masterizzatore

[Nota: lo schema corrente per la denominazione del dispositivo scsi sotto Linux è complicata senza motivo, e non sufficientemente affidabile. Il fatto che io lo descriva in grande dettaglio non deve essere male interpretato come conferma di questo schema. Chi usa un masterizzatore ATAPI può provare ad usare "cdrecord -scanbus" per individuare il dispositivo esatto e saltare il resto di questa sezione.]

Dopo aver seguito tutte le fasi del secondo capitolo il vostro sistema dovrebbe essere in grado di masterizzare i CD. Potete usare questa sezione come prova che tutto funziona come dovrebbe.

Date il comando dmesg; dovrebbe riportare i messaggi del kernel di Linux, compresi quelli che vengono stampati durante l'avvio del sistema (una limitazione: solo gli ultimi 200) e contengono alcune informazioni sul masterizzatore connesso al bus SCSI.

Un semplice esempio:

  Vendor: YAMAHA  Model: CDR100       Rev: 1.11
  Type:   WORM                        ANSI SCSI revision: 02
Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0

Questa macchina ha 4 dispositivi SCSI (non lo potete vedere, quindi ve lo dico io) con degli id SCSI da 0 a 3. Il masterizzatore è il quarto dispositivo SCSI generico fisicamente presente e quindi è connesso a /dev/sgd (il quarto, con il conto che inizia con la lettera a). In questo caso il comando

cdwrite  --eject  --device /dev/sgd

apre il carrello ed è una prova del funzionamento corretto del dispositivo. Un esempio più complicato è:

scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB)
scsi1 : Adaptec 1542
scsi : 2 hosts.

  Vendor: HP      Model: C4324/C4325  Rev: 1.20
  Type:   CD-ROM                      ANSI SCSI revision: 02
Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0

  Vendor: IBM     Model: DPES-31080   Rev: S31Q
  Type:   Direct-Access               ANSI SCSI revision: 02
Detected scsi disk sda at scsi1, channel 0, id 0, lun 0

scsi : detected 1 SCSI cdrom 1 SCSI disk total.
SCSI device sda: hdwr sector= 512 bytes.

In questo esempio due controller SCSI gestiscono ciascuno un dispositivo. Che spreco! (possono gestire fino a sette dispositivi ciascuno) Non è la mia configurazione quindi smettete di chiedere se ho troppi soldi... comunque per a titolo esemplificativo questa configurazione è semplicemente eccellente. :-)

Nell'esempio qui sopra il masterizzatore ha id SCSI di 2, ma è associato con il primo dispositivo SCSI generico /dev/sga perché è il primo dispositivo SCSI fisicamente presente che Linux ha rivelato. Questo dovrebbe chiarificare il fatto che l'id SCSI di un dispositivo non ha niente a che fare con il dispositivo generico associato.

Sono rimaste due domande: cosa succede se si prende il dispositivo sbagliato? Se non specificate l'opzione "--<MANUFACTURER>" e non scrivete nessun dato sul dispositivo, di solito viene stampato un messaggio di avvertimento e non succede niente di male:

bash> cdwrite  --eject  --device /dev/sgb

Unknown CD-Writer; if this model is compatible with any
supported type, please use the appropriate command line
flag.

Manufacturer:  IBM
Model:         DPES-31080
Revision:      S31Q

In questo caso il dispositivo /dev/sbg è un hard disk SCSI (della IBM).

Se scrivete dei dati sul dispositivo sbagliato, potete sovrascriverne il contenuto originale e probabilmente causare danni irrecuperabili al vostro sistema. State attenti, mi è già successo.

3.2 Raccogliere il software

Di solito questa fase occupa più tempo di quanto ci si aspetti. Ricordatevi che i file mancanti non possono essere aggiunti una volta che il CD è stato scritto. :-)

Tenete anche a mente che una certa quantità di spazio sul CD viene usata per immagazzinare le informazioni del filesystem iso9660 (di solito alcuni MB).

3.3 Immagazzinare i dati su un CD

Il termine iso9660 si riferisce al formato in cui i dati sono organizzati sul CD; per essere più precisi, è il filesystem del CD.

Naturalmente l'aspetto dei file immagazzinati in questo formato è unificato dal kernel di Linux come per tutti gli altri filesystem, quindi se si monta un CD nell'albero delle directory, non si riesce a distinguere i suoi file da altri file... tranne che per il fatto che non sono scrivibili... nemmeno da root :-) (questo meccanismo si chiama filesystem virtuale, in breve VFS).

Le caratteristiche del filesystem iso9660 non sono molto numerose paragonate a quelle del filesystem extended-2 che viene normalmente usato sotto Linux. D'altra parte, il CD è scrivibile solo una volta, ed alcune di queste caratteristiche non hanno senso. Le limitazioni del filesystem iso9660 sono:

3.4 La creazione di un filesystem iso9660

Prima di poter usare un qualsiasi mezzo di immagazzinamento (floppy disk, hard disk o CD) bisogna crearci un filesystem (nella terminologia DOS: formattarlo). Questo filesystem è responsabile per l'organizzazione e l'incorporamento dei file che dovrebbero essere immagazzinati nel mezzo.

Beh, un CD scrivibile lo è una sola volta, quindi se vi scrivessimo un filesystem vuoto verrebbe formattato - ma rimarrebbe completamente vuoto per sempre. :-)

Quello che ci serve quindi è uno strumento che crei il filesystem mentre copia i file sul CD. Questo strumento si chiama mkisofs, ed ecco un esempio di come si usa:

mkisofs  -r   -o cd_image   collezione_privata/
              `---------'   `-----------------'
                   |               |
     su cui scrive l'output   directory che prende come input

L'opzione '-r' imposta i permessi di tutti i file in modo che siano leggibili a tutti sul CD ed abilita le estensioni Rock Ridge. Di solito è questo che si vuol fare, e questa opzione è raccomandata finché non si è certi di quello che si sta facendo (suggerimento: senza '-r' il punto di mount prende i permessi di collezione privata!).

Se usate un kernel di Linux precedente al 2.0.31 dovreste usare l'opzione '-K' per evitare un bug nel codice del filesystem, e vi serve la versione modificata di mkisofs. Questa opzione è equivalente all'opzione '-P' di cdwrite; consultate la pagina man di mkisofs per altri dettagli. Chi usa una versione più recente di Linux non se ne deve preoccupare.

mkisofs prova a far corrispondere i nomi dei file al formato 8.3 usato dal DOS per assicurare la massima compatibilità possibile. In caso di conflitti sui nomi (diversi file possono avere lo stesso nome 8.3) si usano dei numeri, e le informazioni sul nome del file scelto vengono stampate attraverso lo STDERR (di solito lo schermo).

NON VI SPAVENTATE:

Sotto Linux non vedrete mai questi nomi di 8.3 caratteri perché Linux usa le estensioni Rock Ridge che contengono le informazioni originali sul file (i permessi, il nome ecc.).

Ora vi potrete chiedere perché l'output di mkisofs non viene mandato direttamente al dispositivo di scrittura: ci sono due ragioni per questo:

Dato che la temporizzazione del masterizzatore è un punto critico, non gli mandiamo dati direttamente da mkisofs (ricordatevi che Linux non è un sistema operativo real-time e la temporizzazione dei task può non essere perfetta); invece è raccomandato immagazzinare l'output di mkisofs in un file separato dell'hard disk, che diventa quindi un'immagine 1:1 dell'ultimo CD e viene veramente scritto sul CD in un secondo tempo usando cdwrite.

L'immagine 1:1 viene immagazzinata in un enorme file, quindi vi serve spazio libero per la dimensione di tutto il software che volete masterizzare, ed è questo il lato negativo della cosa.

Si può pensare di creare una partizione extra apposta, e scrivere l'immagine in quella partizione invece che in un file. Io voto contro questa strategia perché se scrivete sulla partizione sbagliata (per un errore di digitazione), potete perdere completamente il sistema. Inoltre è uno spreco di spazio disco perché l'immagine è temporanea, e può essere cancellata dopo aver masterizzato il CD.

3.5 Provare l'immagine del CD

Linux ha la capacità di montare file come se fossero partizioni di disco, e questa è una caratteristica utile per controllare se la struttura delle directory dell'immagine del CD è a posto. Per montare il file cd_image creato sopra nella directory /cdrom date il comando

mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom

Ora potete ispezionare i file sotto /cdrom - sono esattamente come sarebbero su un CD reale. Per smontare l'immagine basta fare umount /cdrom. Attenzione: se non avete usato l'opzione '-K' di mkisofs l'ultimo file di /cdrom potrebbe non essere completamente leggibile.

Nota:

alcune versioni antiche di mount non riescono a gestire i device di loopback. Se ne avete una è ora di aggiornare il vostro sistema.

Alcuni hanno già suggerito di aggiungere in questo HOWTO delle informazioni su come procurarsi le ultime utility di mount: mi rifiuto di farlo. Se la distribuzione di Linux che usate utilizza una versione di mount troppo vecchia, fatelo presente: è un baco. Se la distribuzione di Linux che usate non è facilmente aggiornabile, fatelo presente: è un baco.

Se includessi tutte le informazioni necessarie per risolvere i bachi delle distribuzioni di Linux mal progettate, questo mini-HOWTO sarebbe molto più grande e difficile da leggere.

3.6 Note sui CD registrabili vergini

La rivista di computer tedesca "c't" ha un elenco di suggerimenti sui CD vergini nell'uscita di novembre 1996:

3.7 Masterizzazione dell'immagine su CD

Non c'è molto altro da dire. Prima di farvi vedere l'ultimo comando, fatemi avvisarvi che i masterizzatori devono essere alimentati con un flusso costante di dati perché hanno solo dei buffer di dati molto piccoli, quindi il processo di masterizzazione dell'immagine sul CD non deve essere interrotto, o il risultato sarà un CD corrotto.

Per essere sicuri che niente interrompa il processo, buttate tutti gli utenti fuori del sistema e staccate il cavo ethernet... leggere le avventure del Bastard operator from hell per imparare il giusto stato d'animo per farlo. ;-)

Se siete preparati psicologicamente, vestitevi con una tunica nera, moltiplicate il numero di id SCSI del masterizzatore con la sua revisione SCSI e accendete un numero corrispondente di candele, leggete due versetti delle ASR-FAQ e digitate

cdwrite  --device /dev/sgd  cd_image
o
cdrecord -v speed=2 dev=4,0 cd_image

a seconda di quale software volete usare. Naturalmente dovrete sostituire il device SCSI di esempio con il device a cui è connesso il masterizzatore.

Per favore notate che nessun masterizzatore può riposizionare il suo laser, e quindi continuare al punto originale sul CD quando viene disturbato, quindi qualsiasi forte vibrazione o un urto distruggeranno completamente il CD che state masterizzando.

3.8 Se qualcosa va storto...

ricordatevi che potete sempre usare i CD corrotti come sottobicchieri/. :-)


Avanti Indietro Indice