Localizzare - Copertina - Colori in bash |
Questo articolo è il primo di una serie di articoli dedicati a come preparare CDROM utilizzando unicamente Linux come piattaforma di preparazione e scrittura fisica dei dati.
Preparare un CDROM dati e/o audio prevede la preparazione dei dati su disco fisso, mediante file contenenti l'immagine di un filesystem (in caso di CDROM dati) o in formato audio (precisamente 16 bit stereo 44100 Hz, senza segno). Successivamente con un programma apposito questi dati impacchettati vengono ``fissati'' su un supporto ottico.
Il processo fisico di scrittura del CD è semplicissimo dal punto di vista dell'operatore, ma comporta un maggior impegno delle risorse della macchina (specialmente i dischi e il bus dati). Più complessa per l'operatore è la preparazione dei dati, specialmente perché in genere ci si ricorda sempre troppo tardi di un file che doveva essere inserito nel CD ormai fatto. :-)
Uno dei vantaggi a masterizzare da Linux è l'enorme disponibilità di software per la preparazione dei dati da inserire nel CD. Questi possono risiedere con tranquillità in più dischi (anche remoti), e messi insieme utilizzando gli strumenti preferiti (ci sono file manager per tutti i gusti; inoltre sotto Linux si può sempre giocare con i link simbolici). Il programma che prende tutti i dati e prepara l'immagine da masterizzare è unico, ben progettato e capace di adattarsi a qualsiasi gusto: potete star certi che i CD fatti sotto Linux saranno visibili anche sotto qualsiasi altro sistema operativo, entro i limiti che voi stessi decidete in fase di preparazione (tipo la lunghezza massima dei nomi dei file, 8+3 o 32 caratteri) o l'uso di estensioni più o meno riconosciute.
Inoltre potete sempre preparare tutto il materiale sotto Linux, e compiere la sola operazione di scrittura sotto altri sistemi operativi (perché il masterizzatore non è supportato da Linux oppure è collegato ad una macchina dove non è installato Linux). I vantaggi in queste operazioni ci sono quasi sempre: alcune funzionalità (anche importanti) spesso non sono presenti nei programmi forniti insieme al masterizzatore (e non sempre ben implementate in altri costosi software commerciali).
Attenti: non pretendete di imparare subito a masterizzare. Bisogna creare un po' di CD di tipo diverso, e arrivare anche a ``bruciarne'' più di qualcuno.
Senza entrare in dettagli troppo tecnici, diciamo che un CDROM è composto di un certo numero di tracce. Una traccia è una sequenza di dati che il laser scrive senza interruzioni, e può essere di tipo dati o di tipo audio. Come si può intuire le tracce dati sono leggibili dal sistema operativo come filesystem contenenti file e directory (ma non solo), mentre le tracce audio sono ascoltabili tranquillamente da un lettore CD audio (anche quello dell'impianto Hi-Fi).
Il numero massimo di tracce presenti su un CDROM è 100, limite abbastanza alto data la capacità del CDROM. Le tracce all'interno del CD possono essere miste, anche se lo standard vuole che solo la prima possa essere di tipo dati (molti lettori infatti impongono questo). Un CDROM dati ha quindi un'unica traccia dati, mentre i CDROM misti hanno la prima traccia dati e le altre tracce audio. I CD di musica hanno solo tracce audio, tante quante sono i brani. Generalmente la traccia dati su un lettore audio ``gira'' senza produrre suono (non viene generato nessun segnale nell'uscita audio).
Un CDROM ``normale'' contiene 650Mb di dati, oppure 74 minuti di audio. Facendo un po' di conti noterete che 1 minuto di audio a 16 bit 44100 Hz stereo occupa circa 10Mb: i conti tornano perché le tracce dati vengono scritte con dei bit ridondanti, usati per la correzione degli errori. Quindi in un CDROM ci stanno al massimo 650Mb di dati oppure 740Mb di audio (o una via intermedia, in caso di CDROM misto).
Come si vede la struttura delle tracce di un CDROM? Usando le utility del
pacchetto cdtool
. Debian 1.3 fornisce la
versione 1.01, la Debian 2.0 (in prossima uscita) la versione 2.1.4. In
questo pacchetto c'è un unico programma eseguibile, cdtool
, e
parecchi link simbolici: cdir
, cdadd
,
cdplay
, cdpause
, cdstop
,
cdeject
e cdvolume
. La pagina man è
cdtool(1)
.
Con il comando cdir
viene elencata la struttura del CDROM
inserito nel dispositivo /dev/cdrom
in minuti e secondi. Le
tracce dati sono evidenziate dalla scritta [DATA]
subito dopo
il tempo, le altre tracce sono audio.
Come appare intuibile, cdplay
lancia l'ascolto delle tracce
audio attraverso l'interfaccia audio (o lo spinotto per le cuffie del
lettore CD), eventualmente da una traccia voluta se si specifica il suo
numero sulla riga di comando; cdstop
, cdpause
e
cdeject
sono ovvi per chi conosce un po' il funzionamento di un
normale impianto CD audio; cdvolume
imposta il volume di uscita
dell'audio e cdadd
serve per creare un database da riempire con
informazioni sul contenuto delle varie tracce, database che sarà utilizzato
da cdir
quando riconoscerà lo stesso CD (mostrando ad esempio i
titoli delle canzoni).
La prima traccia dati è normalmente accessibile dallo stesso dispositivo
del CDROM. Cioè se il proprio lettore (IDE o SCSI) è ad esempio
/dev/cdrom
(ovvero /dev/cdrom
è un link simbolico
al corretto dispositivo del lettore CD), facendo un cat
o
less
di /dev/cdrom
si legge direttamente la
traccia dati. Diventa quindi facile estrarre la traccia dati per scriverla
su un nuovo supporto con il comando (nomedispositivo
può essere /dev/cdrom
o un altro lettore CD):
root@host:~# cat nomedispositivo
> nomefile
Una volta su file, lo si può controllare facendo un mount tramite i
dispositivi di loop:
root@host:~# mount -o loop nomefile
/cdrom
Le tracce audio invece sono accessibili mediante chiamate particolari da dare al dispositivo del lettore CDROM, e a questo va aggiunto che non tutti i dispositivi (specialmente i vecchi lettori EIDE) sono in grado di estrarre correttamente le tracce audio digitali.
Per estrarre le tracce audio digitali si usa il comando
cdda2wav
, che in Debian si trova nell'omonimo pacchetto. Questo
comando permette di salvare le tracce audio in file pronti (o quasi) per
essere masterizzati oppure in formato wav per altri usi. Occhio che
un file estratto da cdda2wav
a qualità CD (massima) occupa
circa 10Mb al minuto.
Attenzione: il fatto che sia tecnicamente possibile estrarre le tracce da un CDROM e riscriverle su un CD vuoto non significa che sia sempre permesso farlo. Controllate che il materiale non sia protetto legalmente contro la copia.
Generalmente si riserva su un disco (preferibilmente SCSI) uno spazio di almeno 700Mb (anche 750Mb in caso di solo audio) dove riversare i file immagine delle tracce, e da lì si dà il comando di masterizzazione una volta completata la raccolta del materiale.
La scrittura di un CDROM è un'operazione critica dal punto di vista dei dati: devono arrivare al masterizzatore con un flusso costante, e se per ritardi vari (elaborazioni complesse, problemi nella fonte dei dati, disco lento, ecc.) il masterizzatore finisce i dati accumulati nel suo buffer interno (oppure subisce una scossa meccanica), l'intera traccia viene bloccata, risultando in una parte filesystem accessibile o parte di brano ascoltabile. Generalmente in questi casi si finisce col buttare il CDROM.
È possibile masterizzare al volo (senza passare per il disco fisso), ma bisogna garantire il flusso di dati necessario al masterizzatore. Leggendo i dati da un altro CD è possibile che polvere o graffi creino pericolosi momenti di stallo. Scrivere da rete è particolarmente pericoloso (il flusso dei dati non è per niente garantito).
Masterizzando a velocità 2x (cioè doppia rispetto alla velocità normale di lettura delle tracce audio) bisogna garantire al masterizzatore circa 300 Kb/s, a 4x diventano 600 Kb/s.
In genere si cerca di evitare che durante la masterizzazione la macchina subisca picchi di carico e si fa in modo che i dati possano arrivare da una fonte affidabile e veloce. Generalmente si usano masterizzatori SCSI appoggiati a dischi fissi SCSI (i dischi EIDE ``pesano'' sulla CPU e rischiano di subire brevi interruzioni) e la macchina non deve svolgere servizi di rete pesanti durante la masterizzazione.
Personalmente ho visto macchine di media potenza masterizzare tranquillamente anche da dischi EIDE a velocità 4x, oppure masterizzare da disco SCSI ma continuare a svolgere servizi di rete: il processo di masterizzazione si porta automaticamente a priorità massima rispetto ad altri processi, e se si sta attenti si possono fare anche altri lavori non pesanti per la macchina (tipo leggersi la posta). Dipende molto anche dalla potenza di calcolo della macchina che si sta usando. L'uso del PLIP però ve lo sconsiglio durante la masterizzazione.
Inoltre è possibile anche ``simulare'' la masterizzazione (modalità dummy): si avvia il normale processo di scrittura del CD, ma con il laser spento. Questo serve a vedere se è configurato il giusto dispositivo, e se la macchina riesce a garantire il giusto flusso di dati al masterizzatore ed eventualmente anche svolgere altri servizi. In caso di ``buffer underrun'' bisogna diminuire la velocità di masterizzazione oppure ridurre il carico della macchina (a volte si stacca fisicamente il cavo di rete buttando fuori eventuali utenti collegati).
Oggi si trovano masterizzatori di tutti i gusti e che si collegano anche ai tostapane: infatti si trovano unità EIDE, SCSI e per porta parallela. I masterizzatori ``storici'' sono quelli SCSI, più affidabili perché si appoggiano su un controller intelligente e abbastanza indipendente dal processore principale del sistema.
I masterizzatori EIDE e paralleli sono un accrocchio per chi non vuole o non può affrontare la spesa di un sistema SCSI. Si appoggiano su controller diffusi praticamente su qualsiasi personal computer, ma sono meno intelligenti, caricano di più il processore principale, e non sono immuni da pericoli dovuti ad interrupt di sistema e probabili ritardi. Dovrebbero funzionare su Linux, ma lo sperimenterò prossimamente (non è facile procurarsi hardware vario su cui fare prove).
Prima di acquistare un masterizzatore, assicuratevi che sia supportato da Linux. Nel CD-WRITING-HOWTO ci sono i puntatori alle pagine con l'hardware supportato e non supportato.
Se pensate di fare più di qualche masterizzazione occasionale oppure tra il vostro lavoro c'è anche la preparazione e il test di parecchi CDROM, valutate bene la possibilità di prendere un sistema SCSI: le prestazioni rispetto ad un sistema EIDE si vedono, specie con Linux e a pieno carico (tipicamente in multitasking). Le applicazioni audio soffrono quando operazioni pesanti coinvolgono unità EIDE, mentre viaggiano senza problemi se sono al lavoro solo unità SCSI.
Un controller SCSI poi è inseribile anche in un sistema EIDE, e si possono usare indistintamente unità EIDE ed unità SCSI (sono però da preferire di queste ultime durante le operazioni di scrittura del CDROM).
A casa ho preso ad inizio anno un controller SCSI Adaptec con un HD da 2Gb, e di recente un masterizzatore Plexwriter. Ho fatto la spesa in due tempi, ed ho preso roba abbastanza solida (o almeno lo spero). Se qualcuno vuole masterizzare seriamente (cioè spesso e comodamente) consiglio di non risparmiare sull'hardware. Il software si trova facilmente e generalmente lo si trova nelle normali distribuzioni Linux; comunque non costa più di qualche scatto telefonico (i driver generalmente allegati al masterizzatore non servono). :-)
Qui vengono in aiuto moltissimi programmi. A meno di avere applicazioni speciali non per PC, da Linux potete fare ogni tipo di CDROM, utilizzando quasi esclusivamente software open source, e per di più facile da reperire.
Nelle varie distribuzioni trovate già quasi tutto, sicuramente in Debian trovate tutto il necessario per sfornare CD appena finita l'installazione.
Sono necessari gli strumenti per preparare le varie tracce,
cat
(in genere è fornito di sistema) e mkisofs
per
le tracce dati, cdda2wav
, sox
e altri per le
tracce audio.
Per scrivere le tracce preparate sul supporto fisico ci vuole il
programma apposito. Attualmente ce ne sono due: cdwrite
e
cdrecord
. Oltre a questi ci sono le varie interfaccie grafiche,
che però alla fin fine si appoggiano su questi comandi base (è più facile
inserire il supporto per un nuovo masterizzatore in cdrecord
e
fare in modo che sia usato anche nell'interfaccia grafica che inserire lo
stesso codice in più pacchetti diversi). L'interfaccia grafica a
mkisofs
e cdrecord
si chiama
xcdroast
.
cdwrite
è il primo programma di masterizzazione sviluppato
sotto Linux. È molto semplice da usare (e pure da compilare!). Purtroppo poi
è stato abbandonato, quindi le nuove funzionalità si trovano tutte su
cdrecord
.
cdrecord
lo trovate già su molte distribuzioni (nella Debian
2.0 è presente la versione 1.6), eventualmente basta prendere i sorgenti, lanciare il
comando ./Gmake.linux
e prelevare l'eseguibile nella directory
cdrecord/OBJ/unknown-linux-cc
(magari mettendolo in
/usr/local/sbin
per comodità).
L'uso dettagliato dei vari programmi lo spiegherò nelle prossime puntate.
Per chi ha fretta e vuole iniziare a fare esperimenti riassumo un po' di
comandi base. La preparazione della traccia dati si fa con
mkisofs
, dove un accenno è giò stato dato nel Pluto Journal di
settembre 1997 (link articolo); ma sarà
sicuramente ripreso presto. La preparazione delle tracce audio la vedremo in
seguito.
I comandi usati in questa sezione sono utilizzabili solo dall'utente root, a meno di impostare opportunatamente i diritti di lettura nel dispositivo del CDROM (però non vale la pena: essendo un'operazione delicata, viene fatta direttamente da root, eventualmente riservando una macchina dove l'accesso a root ce l'hanno più persone fidate).
Vediamo un attimo di provare il masterizzatore SCSI appena comprato. La
prima cosa da fare è collegarlo alla catena SCSI e vedere se i collegamenti
sono a posto. Generalmente lo si verifica all'avvio del sistema, quando
durante la scansione dei dispositivi SCSI appare il masterizzatore
nell'elenco dei dispositivi rilevati. La prova reale che i collegamenti sono
fatti bene e che in linea di massima il dispositivo funziona si ha mettendo
un CD registrato nel masterizzatore e provando a montarlo nel sistema
(tramite /dev/scd0
se è l'unico lettore di CD della catena
SCSI, oppure /dev/scd1
e così via).
Appena certi che il masterizzatore è riconosciuto come unità SCSI e
funziona come lettore bisogna vedere se funziona (è supportato) anche come
masterizzatore, e per le nostre prove usiamo cdrecord
. Vediamo
un attimo la situazione del bus SCSI:
root@host:~# cdrecord -scanbus
L'output sulla mia macchina è:
Cdrecord release 1.6 Copyright (C) 1995-1998 Jörg Schilling scsibus0: 0) * 1) 'SEAGATE ' 'ST52160N ' '0285' Disk 2) * 3) * 4) * 5) * 6) 'PLEXTOR ' 'CD-R PX-R412C ' '1.03' Removable CD-ROM 7) *
Il masterizzatore è il dispositivo 6 del bus 0, quindi il dispositivo da
specificare a cdrecord
(nel formato bus,id,lun) è
0,6,0. Vediamo se il masterizzatore è riconosciuto e
supportato:
root@host:~# cdrecord dev=0,6,0 -v -checkdrive
Cdrecord release 1.6 Copyright (C) 1995-1998 Jörg Schilling
TOC Type: 1 = CD-ROM
scsidev: '0,6,0'
scsibus: 0 target: 6 lun: 0
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities : SYNC LINKED
Vendor_info : 'PLEXTOR '
Identifikation : 'CD-R PX-R412C '
Revision : '1.03'
Device seems to be: Generic mmc CD-R.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : SWABAUDIO
Sembra di sì, quindi se c'è già da qualche parte un'immagine ISO9660 da
scrivere su CD, il comando da dare è:
root@host:~# cdrecord dev=0,6,0 -dummy -v -eject speed=4
nomefile
Per questa volta ho usato l'opzione -dummy. Così facendo l'operazione viene svolta, ma con il laser spento. Questo serve a vedere se il masterizzatore funziona, riesce ad avere il corretto flusso di dati e arriva a completare l'operazione con successo. Le prime volte che masterizzate o quando lo fate in condizioni un po' anomale, provate con questa opzione. Poi appena prendete mano con il sistema lo potete fare la scrittura diretta senza il test con l'opzione -dummy.
Se non avete tempo di aspettare, potete leggere alcune informazioni sul
CD-Writing-HOWTO, che contiene altre URL ai vari programmi per masterizzare.
Il CD-Writing-HOWTO lo trovate già tradotto in italiano nell'area
della documentazione del PLUTO Linux User Group e nei vari mirror:
http://www.pluto.linux.it/ildp
E soprattutto non perdetevi i prossimi articoli del Pluto Journal, dove si parlerà in modo più approfondito dei vari programmi che servono per masterizzare.
CD Writing HOWTO (in italiano, lo trovate tra il materiale Pluto):
http://www.pluto.linux.it/ildp/HOWTO/CD-Writing-HOWTO.html
Home page di cdrecord
(in inglese):
http://www.fokus.gmd.de/nthp/employees/schilling/cdrecord.html
Mailing list (in inglese):
cdwrite@lists.debian.org
(per iscriversi
mandare un messaggio contenente la parola ``subscribe
'' a
cdwrite-request@lists.debian.org
.
Localizzare - Copertina - Colori in bash |