mercoledì 5 marzo 2008

Masterizzare da linea di comando

Maria Susana Diaz | 13:02 |
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;
mkisofs is used for premastering iso9660 filesystems which are used on CDROMs. The output of mkisofs can then be sent to a CDROM writer with a utility such as cdrecord. It has support for many formats, including Rock Ridge, Joliet, and Apple HFS (beta)


# cdrecord: come suggerisce il nome, è il programma che permette di scrivere i dati su cd;
Cdrtools is under constant free and open development since February 1996. The goal for cdrtools development is to
permanently provide a free suite of programs for writing CD/DVD/BD media and succeeding similar products (like e.g. HD-DVD).
Since more than 10 years and differently from the dead forks from this suite, the original software points out that permanent
development to the benefit of the users is the intention of this project.

# cdrdao: usato prevalentemente per i cd audio e la duplicazione, supporta la scrittura in modalità disk-at-once;
Cdrdao records audio or data CD-Rs in disk-at-once (DAO) mode based on a textual description of the CD contents

# cdparanoia (facoltativo): ottimo programma per l'estrazione audio, da cd-audio a file in formato wave;
This is the main distribution site for the Paranoia project libraries (Paranoia II an III) and the audio CD digital audio extraction application cdparanoia. Cdparanoia extracts audio from compact discs directly as data, with no analog step between, and writes the data to a file or pipe in WAV, AIFC, AIFC or raw 16 bit linear PCM.

Se questi programmi non sono già presenti installateli, almeno i primi tre. Evitate come la peste le GUI, non sono altro che front-end grafici dei programmi sopracitati e spesso ne limitano fortemente potenza e flessibilità.

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


fonte: vivalinux


TiPI (Ti Potrebbe Interessare)
LinuxLinks

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti in Twitter, sulla tua bacheca su Facebook, in Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!

LINKEDIN

1 commenti:

Tulis commenti
avatar
Unknown
Admin
6 marzo 2008 alle ore 10:22

potresti fare un accenno al fork di cdrtools nato in seno al debian: cdrkit
tale fork sembra non più manutenuto ma purtroppo molte distro te lo rifilano di default dato che è compatibile con cdrtools come opzioni a linea di comando ed è rilasciato sotto GPL invece che CDDL.

Rispondi