Masterizzare da linea di comando
1. Configurazione
Tutte le maggiori distribuzioni prevedono nell'installazione base o
contengono nei cd aggiuntivi tutto quello di cui necessitate per
masterizzare:
mkisofs: serve per creare l'immagine ISO di un cd dati;
cdrecord: come suggerisce il nome, è il programma che permette di scrivere i dati su cd;
cdrdao: usato prevalentemente per i cd audio e la duplicazione, supporta la scrittura in modalità disk-at-once;
cdparanoia (facoltativo): ottimo programma per l'estrazione audio, da cd-audio a file in formato wave;
Se questi programmi non sono già presenti installateli, almeno i primi
tre.
Se volete una GUI vi consiglio K3b
o Brasero
per l'uso generico, mentre se avete particolari esigenze
per l'audio provate Gnome Cd Master.
L'uso di tali programmi va oltre gli scopi di questa guida,
visto che qui impareremo a fare tutto dalla console.
NOTA: chi ha installato un kernel 2.6.x può saltare
il resto di questa sezione. Infatti usando versioni aggiornate di cdrecord e cdrdao
è sufficiente indicare il nome del device, in quanto l'emulazione SCSI non è più necessaria.
Vi consiglio di creare un link simbolico, denominato cdrecorder all'interno della directory
/dev/, che punti al device fisico del vostro masterizzatore (es. ln -s /dev/hdX /dev/cdrecorder,
dove ovviamente alla X dovete sostituire la lettera adeguata).
In questo modo cdrdao farà riferimento in modo automatico a tale link, senza necessità di specificare
esplicitamente il device da linea di comando.
Per quanto riguarda cdrecord invece è possibile:
specificare il device da linea di comando: cdrecord dev=/dev/cdrecorder [opzioni]
modificare nel file di configurazione /etc/cdrecord/cdrecord (il path può cambiare a
seconda della distribuzione) la variabile CDR_DEVICE.
Ora alcune premesse: in Linux tutti i masterizzatori EIDE devono essere
configurati per funzionare in emulazione SCSI, in quanto
solo questi ultimi sono supportati nativamente. Verificare se il
proprio masterizzatore è configurato correttamente è molto semplice:
dalla console digitate "cdrecord -scanbus", se ottenete un output
simile a questo siete già a cavallo.
Cdrecord 1.9 (i586-slackware-linux-gnu) Copyright (C) 1995-2000 Jörg Schilling
Linux sg driver version: 3.1.17
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'LG ' 'DVD-ROM DRD8120B' '1.04' Removable CD-ROM
0,1,0 1) 'ATAPI ' 'CD-R/RW 4X4X32 ' '3.LS' Removable CD-ROM
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Cdrecord ha trovato le periferiche SCSI installate nel vostro sistema e
ve ne fornisce gli indirizzi (scsibus, target e lun); nel mio caso
ho un lettore DVD all'indirizzo 0,0,0 ed un masterizzatore (un misero
4x4x32, sigh...) su 0,1,0.
E se non viene rilevato alcun dispositivo? Innanzi tutto
bisogna accertarsi che nella configurazione del proprio kernel
siano inclusi i seguenti moduli:
supporto per il filesystem ISO-9660 (il filesystem dei cd-rom)
ed eventualmente per le estensioni MS Joliet (per la compatibilità con
i
sistemi Microsoft di Zio Bill). Si trovano sotto la voce "File
Systems". Entrambi sono già presenti nel 99.9% dei casi;
SCSI generic support e SCSI CD-ROM support, nel menu "SCSI support";
SCSI emulation support, alla voce ATA/IDE/MFM/RLL support--> IDE, ATA and ATAPI block devices;
Se non ci sono dovete ricompilare il kernel.
E' andata? Bene! Adesso dovete passare al vostro
kernel nuovo fiammante alcuni parametri per dirgli che il vostro
masterizzatore EIDE d'ora
in poi funzionerà in emulazione SCSI. Vi consiglio di fare la stessa
cosa anche per il lettore CD-ROM, se volete usare l'utilissima
opzione "copy" di cdrdao.
Come? E' sufficiente editare il file di configurazione di lilo in
/etc/lilo.conf aggiungendo la seguente riga nella sezione relativa al
kernel che caricate di solito:
append="hdc=ide-scsi hdd=ide-scsi"
ATTENZIONE: nell'esempio sopra riportato ho dato per scontato che il
lettore CD-ROM sia configurato come master sul secondo canale IDE
ed il masterizzatore come slave sul medesimo canale. Se così non fosse
tenete presente che in Linux i device IDE vengono identificati nel
seguente modo: hda= device master sul primo IDE, hdb= device slave sul
primo IDE, hdc= device master sul secondo IDE e hdd= device slave
sul secondo IDE. Se la vostra macchina è configurata in modo diverso
modificate di conseguenza l'esempio precedente.
Alla fine dovreste ottenere qualcosa del genere:
[...]
image=/boot/vmlinuz
label=slackware
root=/dev/hdb5
initrd=/boot/initrd.img
append="hdc=ide-scsi hdd=ide-scsi"
read-only
[...]
Ora ci resta solo una cosa da fare prima di cominciare a bruciare un
po' di cd: in /dev, la directory che indicizza tutti i device del
sistema, ci sono ancora due link simbolici che puntano ai vecchi
dispositivi EIDE. Di solito si chiamano /dev/cdrom per il lettore e
/dev/cdrom2 per il masterizzatore. Eliminiamoli con un bel "rm
/dev/cdrom ; rm /dev/cdrom2".
Ora ricreiamo i collegamenti corretti. Per sapere a che dispositivo
SCSI sono stati associati cdrom e masterizzatore diamo di
nuovo "cdrecord -scanbus". Se, come nell'esempio precedente,
l'indirizzo del CD-ROM è 0,0,0 questo sarà associato a /dev/scd0, se
l'indirizzo è 0,1,0 sarà /dev/scd1 e così via.
Per aggiungere i link portiamoci all'interno della directory /dev e
impartiamo il comando "ln -s scd0 cdrom ; ln -s scd1 cdrom2", stando
attenti ad indicare i device corretti.
Per vedere se tutto funziona montate un cd dati nel lettore (mount -t iso9660 /dev/cdrom /mnt) e provate a leggerlo.
In alternativa scrivete "eject cdrom": se il cassetto del lettore viene espulso il link simbolico è a posto.
2. Comandi
Arrivati a questo punto il vostro sistema dovrebbe essere configurato
correttamente. Possiamo dunque concentrarci sui comandi da impartire
e sulle loro principali opzioni. Per ulteriori approfondimenti fate
riferimento alle relative pagine man.
mkisofs
E' l'abbreviazione di "make ISO filesystem". Come già anticipato, serve
per scrivere sul disco rigido l'immagine ISO del cd da duplicare.
Ricordo che l'immagine non è altro che una copia speculare del disco
originale, viene salvata su un unico file e mantiene intatte le
caratteristiche del filesystem ISO9660.
La sintassi è la seguente:
# mkisofs [opzioni] -o file_di_destinazione /percorso_origine
Le principali opzioni sono:
- -b
specifica il percorso e il nome dell'immagine di avvio (se il cd deve essere bootabile);
- -c
specifica il percorso e il nome del file di catalogo; deve esserci se si sta usando l'opzione -b. Potete usare come path
quello indicato nell'opzione -b e come nome del file "boot.catalog";
- -l
consente l'utilizzo di nomi di file lunghi fino a 31
caratteri. Questa opzione "raggira" lo standard ISO che vorrebbe nomi
in formato 8+3. Non usatela se il disco deve girare in Dos;
- - J
usa le estensioni Joliet. Utile se il cd vi serve in WindowsNT o 95 (e superiori);
- -o
specifica il nome del file sul quale verrà scritta l'immagine;
- -C
inizio_sessione_precedente,inizio_sessione: richiesta
per creare l'immagine della seconda sessione o successiva di un cd
multisessione;
i due valori si possono ottenere con il comando "cdrecord -msinfo". Deve essere usata congiuntamente all'opzione -M;
- -M
specifica il path o il device della precedente sessione (ad esempio -M 0,1,0);
- -R
usa le estensioni RockRidge. Serve per mantenere i permessi sui file;
- -T
genera il file TRANS.TBL; se usate le estensioni 8+3 questo file tiene traccia dei nomi originali in formato lungo;
- -V
assegna l'etichetta di volume. In Windows sarà il nome
del disco in Esplora risorse. So per esperienza che alcune copie di
backup ;-)
di programmi Microsoft non vengono eseguite da cd se non si specifica
l'etichetta di volume originale;
- -v
modalità prolissa;
Per chi fosse interessato vi sono inoltre numerose opzioni per creare dischi in HFS, il filesystem usato dai MacIntosh.
Esempi:
# mkisofs -J -l -V "etichetta" -o immagine.img /directory_sorgente (ad es. /dev/cdrom)
Scrive l'immagine ISO su immagine.img, nella directory corrente, con estensioni MS Joliet e supporto per nomi di file lunghi.
# mkisofs -R -l -V "etichetta" -o immagine.img /directory_sorgente
Come sopra, ma con estensioni RockRidge.
# mkisofs -l -b /percorso_immagine_di_boot/immagine.bin -c
/percorso_immagine_di_boot/boot.catalog -V "etichetta" -o immagine.img
/directory_sorgente
Con questo comando puoi fare l'immagine per un cd di boot, ad esempio
quello di una distribuzione. Devi prima copiare sull'hard disk il
contenuto dell'intero cd-rom e poi dare il suddetto comando
specificando nel path della sorgente la directory in cui hai copiato i
file.
Tricks:
# mount -t iso9660 -o loop immagine.img /mnt
Con questo comando puoi montare l'immagine come se si trattasse di un
cd-rom, così da avere una sorta di "anteprima" del cd che verrà
scritto. Ricorda che l'immagine non è modificabile, perciò se trovi
qualcosa che non va devi ricrearla. Prima della scrittura l'immagine
deve essere smontata.
# dd if=/dev/cdrom of=immagine.img
Questo è un metodo alternativo veloce per creare un'immagine ISO. Se non avete esigenze particolari usatelo.
cdrecord
E' il comando che da inizio al processo di scrittura. Purtroppo
supporta solo la modalità track-at-once e, a quanto ne so, la modalità
disk-at-once è ancora sperimentale e funziona solo su alcuni modelli di
masterizzatori, ad esempio i Plextor.
La sintassi è abbastanza semplice:
cdrecord [opzioni generali] dev=device [opzioni traccia] immagine
Ovviamente in dev= devi indicare l'indirizzo SCSI del masterizzatore, ad esempio dev=0,1,0.
Le principali opzioni generali sono:
- -v
modalità prolissa, consiglio di abilitarla;
- blank=tipo
cancella un cd-rw. I parametri più usati sono: blank=all che cancella l'intero disco e blank=fast che esegue una cancellazione
veloce;
- -force
forza la scrittura anche se vengono riscontrati errori. E' utile se si deve cancellare un cd riscrivibile che non ne
vuole sapere altrimenti.
- -dummy
simula l'intero processo di scrittura, ma senza accendere il laser. Da usare per le prime prove, a meno che non vogliate una
simpatica collezione di sottobicchieri :-)
- -dao
modalità disk-at-once, sperimentale;
- -multi
scrivi una sessione di un cd multisessione, il cd non viene finalizzato ed è possibile aggiungere ulteriori sessioni in seguito;
- -msinfo
visualizza le informazioni sulle sessioni di un cd multisessione;
- -toc
visualizza la table of content del cd;
- -fix
finalizza il disco senza ulteriori modifiche;
- -nofix
non finalizza al termine della scrittura;
- -eject
espelle il disco alla fine del processo;
- speed=n
specifica la velocità di scrittura;
- -scanbus
fornisce gli indirizzi dei device SCSI;
- -pad
utile per masterizzare file .wav in formato cd-audio;
Le opzioni traccia più importanti sono:
- -data
scrive le tracce dati in formato CD-ROM mode 1, è abilitata di default se non vengono immesse altre opzioni;
- -audio
scrive le tracce audio (.wav o .au, non gli mp3) in formato CD-DA, il formato dei normali cd-audio;
Esempi:
# cdrecord -v -eject speed=4 dev=0,1,0 -data immagine.img
Scrive l'immagine dati alla velocità di 4x in modalità prolissa ed espelle il disco al termine del processo.
# cdrecord -v -eject speed=4 dev=0,1,0 -pad -audio track*.wav
Scrive i file track1.wav, track2.wav... in formato CD-DA.
# cdrecord -v -eject speed=4 dev=0,1,0 -data -multi immagine.img
Scrive l'immagine dati lasciando aperta la sessione.
Tricks:
# mkisofs -R /directory_sorgente | cdrecord -v fs=6m speed=2 dev=0,1,0 -
Invece di creare l'immagine su disco passa direttamente l'output di
mkisofs a cdrecord. Fate alcune prove abilitando l'opzione -dummy.
# cdrecord -v -eject speed=4 dev=0,0,0 -data /dev/cdrom
Esegue la copia al volo del cd nel lettore.
cdrdao
Questo è un ottimo programma che ingloba le funzioni dei due comandi
visti in precedenza. E' in grado di creare immagini, pur non
raggiungendo il grado di raffinatezza di mkisofs, e di scriverle.
Faccio notare che le immagini create da cdrdao possono essere scritte
su cd
solo da cdrdao stesso.
Ma la caratteristica che rende questo programma insostituibile,
sopratutto per quanto riguarda la duplicazione di cd-audio, è la
possibilità
di scrivere in modalità disk-at-once. Senza soffermarmi in dettagli
tecnici vi dico solo che questo permette, ad esempio, di masterizzare
cd musicali privi della pausa di 2 secondi fra una traccia e l'altra.
Avete mai provato ad ascoltare un concerto live nel quale un medley
viene interrotto da due secondi di silenzio? Se sì, concorderete
senz'altro con me quando dico che il fatto di poter eliminare le pause
è
una gran figata.
Tra l'altro il disk-at-once garantisce anche una maggiore sicurezza che la qualità audio del cd masterizzato sia buona.
La sintassi è questa:
# cdrdao [comando] [opzioni] file-toc
I comandi sono:
- show-toc
visualizza un sommario di quello che verrà scritto sul cd;
- read-toc
analizza il cd origine e crea un file-toc che ne contiene la table of content. Per specificare il nome del file usare l'opzione
--datafile nomefile. Non crea un immagine dati o audio;
- read-cd
crea l'immagine del cd e la relativa table of contents. Il nome del file immagine è "data.bin" se non viene data l'opzione
--datafile;
- read-cddb
cerca il nome del artista e dell'album su un server cd database (CDDB). Le informazioni ricevute verrano scritte nel cd-text,
se supportato dal proprio masterizzatore. Dovete essere connessi ad Internet per usare questa opzione;
- disk-info
mostra informazioni sul cd-r inserito. Se il cd ha una sessione aperta fornisce anche il settore di inizio della sessione
precedente e quello disponibile per scrivere la sessione successiva;
- msinfo
simile alla precedente, visualizza le informazioni necessarie per creare dischi multisessione con mkisofs;
- unlock
prova a sbloccare il cassetto del masterizzatore
dopo una scrittura fallita. Se non riesci ad espellere il cd prova
questa opzione;
- simulate
simula il processo di scrittura senza accendere il laser;
- write
scrive il cd basandosi sulle specifiche del file-toc;
- copy
esegue tutti i passi necessari per la copia di un cd.
L'opzione --datafile permette di assegnare il nome al file immagine;
se si specifica anche l'opzione --on-the-fly l'immagine non viene
scritta sul disco rigido ma i dati vengono passati in pipe dal lettore
al masterizzatore (copia al volo);
Opzioni principali:
- --device [bus, id, lun]
stabilisce l'indirizzo SCSI del masterizzatore. Se preferite potete indicare il device (es. /dev/cdrom2).
- --source-device
come sopra ma usato per indicare il device sorgente. Omettetelo se fate leggere i cd al masterizzatore, cosa
che comunque vi sconsiglio;
- --driver
da usare se avete un masterizzatore per cui siano
disponibili driver specifici. Al momento sono supportati alcuni modelli
prodotti
da Plextor, Sony, Teac, Yamaha, Ricoh, Toshiba. Consultate la lista di
compatibilità per maggiori informazioni (solitamente in /usr/share/doc/
cdrdao-"versione"/README);
- --source-driver
come sopra ma per il device sorgente, se non c'è un driver apposito usate "generic-mmc";
- --speed [n]
imposta la velocità di scrittura, di default è la massima possibile;
- --multi
la sessione non viene chiusa; è dunque possibile aggiungere altri dati, ad esempio per creare un cd-extra;
- --eject
espelle il cassetto al termine della scrittura;
- --keepimage
se il cd viene copiato con l'opzione copy non cancella l'immagine dal disco dopo la scrittura;
- -v
modalità prolissa;
Esempi:
# cdrdao read-toc --device 0,0,0 --driver generic-mmc lista.toc Scrive
nel file lista.toc la tabella dei contenuti del cd. E' visualizzabile
con qualunque editor e indica il numero di tracce, la loro durata e gli
spazi di silenzio da inserire tra una canzone e la successiva.
# cdrdao read-cd --device 0,0,0 --driver generic-mmc lista.toc
Scrive la tabella dei contenuti in lista.toc e crea l'immagine del cd in data.bin.
# cdrdao write --device 0,1,0 --driver generic-mmc --speed 4 --eject lista.toc
Masterizza l'immagine creata precedentemente alla velocità di 4x ed espelle il cd al termine del processo.
# cdrdao copy --device 0,1,0 --driver generic-mmc --source-device 0,0,0 --source-driver generic-mmc --speed 4
--eject
Copia il cd originale leggendolo dal cd-rom. Potete anche inserire l'opzione --on-the-fly per eseguire una copia al volo.
Tricks:
Da qui
potete scaricare uno script che vi consente di eseguire la copia di un
cd. Modificate il file col vostro editor
preferito specificando i device corretti, gli eventuali driver e la
velocità di scrittura. Potete tenere lo script nella vostra home e
lanciarlo con
"./copiacd" oppure spostarlo in /usr/bin o /usr/local/bin (occhio ai
permessi!) ed eseguirlo semplicemente con "copiacd".
3. Tabella riassuntiva
Nella seguente tabella sono elencati tutti i principali comandi per
masterizzare i più disparati tipi di cd, anche quelli della Playstation!
Copia cd dati
|
creazione dell'immagine ISO (es. con estensioni RockRidge)
| mkisofs -r -o dati.img /directory_dati/
|
controllo del contenuto dell'immagine
| mount -t iso9660 -o loop dati.img /mnt/
|
scrittura
| cdrecord -v -eject speed=4 dev=0,1,0 -data dati.img |
Copia al volo
|
lettura da /dev/cdrom e scrittura immediata
| cdrecord -v -eject speed=4 dev=0,6,0 -data /dev/cdrom |
copia al volo tramite pipe
|
mkisofs -R /directory_sorgente | cdrecord -v fs=6m speed=2 dev=0,1,0 - |
| Copia cd audio (con cdparanoia) |
scaricamento delle tracce audio in un unico file cdda.wav
| cdparanoia -s 1-
|
| creazione della Table Of Contents | cdrdao read-toc --device 0,0,0 --driver generic-mmc --datafile cdda.wav lista.toc |
| scrittura in modalità disk-at-once | cdrdao write --device 0,1,0 --driver generic-mmc --speed 4 --eject lista.toc |
Copia cd audio
|
| creazione della Table Of Contents e scaricamento tracce | cdrdao read-cd --device 0,0,0 --driver generic-mmc lista.toc |
| scrittura in disk-at-once mode | cdrdao write --device 0,1,0 --driver generic-mmc --speed 4 --eject lista.toc |
Copia cd PlayStation
|
| scaricamento ignorante del cd | cdrdao read-cd --device 0,0,0 --driver generic-mmc --read-raw lista.toc |
| scrittura in modalità disk-at-once | cdrdao write --device 0,1,0 --driver generic-mmc --speed 4 --eject lista.toc |
cd misti audio+dati
|
Una volta preparata l'immagine ISO e le tracce audio, scrive i dati e, in coda, le tracce audio in track-at-once
| cdrecord -v speed=4 dev=0,1,0 -eject -data dati.img -audio track*.wav |
cd multisessione
|
creata l'immagine dati, scrittura della prima sessione
| cdrecord -v speed=4 dev=0,1,0 -eject -multi -data dati1.img
| preparazione della N-esima immagine ISO
| mkisofs -r -o datiN.img -C `cdrecord dev=0,1,0 -msinfo` -M 0,1,0 /directory_datiN/
|
scrittura della N-esima sessione
| cdrecord -v speed=4 dev=0,1,0 -eject -multi -data datiN.img
|
preparata l'ultima immagine, scrittura dell'ultima sessione
| cdrecord -v speed=4 dev=0,1,0 -eject -data datiM.img |
cd-extra (audio+dati in sessioni separate)
|
preparate le tracce audio, scrittura della prima sessione audio
| cdrecord -v -speed=4 dev=0,1,0 -multi -audio track*.wav
|
preparazione dell'immagine ISO per i dati
| mkdir /tmp/vuota ; mkisofs -r -o vuota.img /tmp/vuota ; mkisofs -r -o dati.raw -C `cdrecord dev=0,1,0 -msinfo` -M vuota.img /directory_dati/
|
scrittura della seconda sessione dati
| cdrecord -v -speed=4 dev=0,1,0 -eject -data dati.img |
|