Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 123

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>CD-Writing HOWTO: Scrittura dei CD-R</TITLE>
 <LINK HREF="CD-Writing-HOWTO-4.html" REL=next>
 <LINK HREF="CD-Writing-HOWTO-2.html" REL=previous>
 <LINK HREF="CD-Writing-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="CD-Writing-HOWTO-4.html">Avanti</A>
<A HREF="CD-Writing-HOWTO-2.html">Indietro</A>
<A HREF="CD-Writing-HOWTO.html#toc3">Indice</A>
<HR>
<H2><A NAME="s3">3. Scrittura dei CD-R</A></H2>

<P>
<BLOCKQUOTE>
<I>"Se anche ti trasformi in fumo non credo smetter&ograve; di divertirmi 
mentre bruci."</I>
(Imperatore romano Nerone mentre bruciava i suoi CD classici, 64A.C. 
Non aveva capito molto.)
</BLOCKQUOTE>
<P>
<P>La scrittura dei CD-R si fa in 2 passi sotto Linux:
<P>
<UL>
<LI> impacchettare i dati desiderati (file, musica o entrambi) in un
file con formato speciale usando le utility mkisofs/mkhfs</LI>
<LI> scrivere questo file su CD-R usando <CODE>cdrecord</CODE></LI>
</UL>
<P>Questo capitolo descrive i passi per la creazione di CD audio e dati in
maggior dettaglio.
<P>
<P>
<H2><A NAME="ss3.1">3.1 Scrivere CD-ROM (solo dati)</A>
</H2>

<P>Attenzione, mettere insieme il software di solito &egrave; una cosa pi&ugrave; 
lunga di quanto uno non si aspetti. Stai attento perch&eacute; file mancanti
non possone essere aggiunti una volta scritto e finalizzato il CD.
<P>
<P>Tieni sempre in mente che una parte dello spazio libero del CD deve
essere usato per mantenere le informazioni del filesystem ISO9660.
Di solito questo occupa non molti megabyte: per dare un'idea diciamo
che 620MB di dati ci stanno di sicuro su un CD-R da 650MB,
<P>
<P>
<P>
<H3>Creare un'immagine del successivo CD-ROM</H3>

<P>Prima di usare qualsiasi supporto (tipo floppy, hard-disk o CD) questo
deve avere un filesystem (in lingua DOS: essere formattato). Il filesystem
&egrave; responsabile di organizzare e incorporare i file che dovrebbero essere
scritti sul supporto.
<P>Le solite utility per creare filesystem su partizioni dell'hard disk scrivono 
su di esse un filesystem vuoto, che viene poi montato e riempito con dei
file quando servono all'utente.
Allora, un CD-R &egrave; scrivibile una sola volta, giusto? Possiamo scriverci
sopra un filesystem vuoto, quindi formattarlo, ma poi resterebbe vuoto 
a vita. Questo &egrave; vero anche per i CD-RW visto che non si possono cambiare
settori arbitrari, ma bisogna cancellare l'intero contenuto.
<P>Dunque, quello che ci serve &egrave; un aggeggio che crei un filesystem mentre
copiamo i file sul CD. L'utility si chiama <CODE>mkisofs</CODE>. Un uso tipico &egrave;
simile a questo:
<P>
<BLOCKQUOTE><CODE>
<PRE>
mkisofs  -r   -o cd_image   private_collection/
              `---------'   `-----------------'
                   |               |
             file immagine   directory sorgente
</PRE>
</CODE></BLOCKQUOTE>
<P>L'opzione '-r' imposta i permessi dei file perch&eacute; siano leggibili da
tutti sul CD e attiva le estensioni Rock Ridge. Questo &egrave; quello che si
vuole di solito e l'uso dell'opzione &egrave; raccomandato a meno di non
sapere esattamente quello si sta facendo (Attento: senza '-r' il punto di montaggio
si becca i permessi di <CODE>private_collection!</CODE>).
<P><CODE>mkisofs</CODE> cercher&agrave; di mappare tutti i nomi di file nel formato 8.3 usato dal 
DOS per assicurare la massima compatibilit&agrave;. In caso di conflitti per i nomi
(file diversi hanno lo stesso nome 8.3), vengono usati dei numeri nei nomi
e informazioni a proposito del nome scelto sono stampate sullo STDERR (che poi
&egrave; lo schermo, di solito).
Niente panico: sotto Linux non vedrete mai questi nomi in formato 8.3 perch&eacute;
Linux usa le estensioni Rock Ridge che contengono le informazioni dei file originali 
(permessi, nome ecc.).
<P>Magari ora ti stai chiedendo perch&eacute; diavolo non spedire l'output di
<CODE>mkisofs</CODE> direttamente al masterizzatore. Per 3 ottimi motivi:
<P>
<UL>
<LI><CODE>mkisofs</CODE> non sa certo come pilotare i masterizzatori.</LI>
<LI>A volte &egrave; utile testare l'immagine prima di scriverla.</LI>
<LI>Su macchine lente non sarebbe sicuro (v. sezione 4.).</LI>
</UL>
<P>Il metodo per scrivere CD-R in un unico passo verr&agrave; descritto pi&ugrave; avanti.
<P>Si potrebbe anche pensare di creare una partizione extra per fare tutto 
questo e scrivere l'immagine sulla partizione invece che su un file.
Non sono d'accordo su questa strategia perche se per caso scrivi sulla 
partizione sbagliata (perch&eacute; hai scritto male il comando), puoi anche 
perdere l'intero sistema Linux (insomma: a me &egrave; successo). In pi&ugrave; &egrave; uno spreco di spazio su disco
perch&eacute; l'immagine del CD &egrave; un dato temporaneo che pu&ograve; essere cancellato
dopo aver scritto il CD. Comunque, usare partizioni grezze ti 
risparmierebbe il tempo di cancellare file di 650MB.
(Se hai spazio su disco sufficiente una partizione extra ti permette
di risparmiare il tempo di cancellazione dell'immagine.)
<P>
<P>
<H3>Testare l'immagine del CD</H3>

<P>Linux ha la possibilit&agrave; di montare file come se fossero partizioni.
Questa capacit&agrave; &egrave; utilissima per controllare che la disposizione delle
directory e i permessi sull'immagine siano ottimali. Anche se i dischi non costano molto
il processo di scrittura &egrave; comunque abbastanza lungo e se non altro potresti
evitare di perdere tempo con un veloce test.
<P>Per montare il file <CODE>cd_image</CODE> creato prima sulla directory <CODE>/cdrom</CODE> 
impartisci il comando
<P>
<BLOCKQUOTE><CODE>
<PRE>
mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom
</PRE>
</CODE></BLOCKQUOTE>
<P>Ora puoi ispezionare i file sotto <CODE>/cdrom</CODE> - essi appaiono esattamente come
se fossero su un vero e proprio CD. Per smontare l'immagine del CD basta 
dire <CODE>umount /cdrom</CODE>. (ATTENZIONE: Se usi kernel di Linux pi&ugrave; vecchi della v. 2.0.31 l'ultimo file
su /cdrom potrebbe non essere completamente leggibile. Usa kernel pi&ugrave; recenti
come la v. 2.0.36. L'opzione -pad di cdrecord si applica ai soli CD audio; per poterla
usare anche con mkisofs &egrave; necessario una patch, la cui utilit&agrave; &egrave; pi&ugrave; o meno
quella di applicare un upgrade a un kernel senza bug.)
<P>Nota:
<BLOCKQUOTE>
alcune antiche versioni di <CODE>mount</CODE> non sono in grado di usare
i device loopback. Se hai ancora una versione cos&igrave; vecchia
forse &egrave; ora di aggiornare il sistema.<P>
<P>Parecchia gente ha gi&agrave; chiesto di inserire in questo HOWTO 
informazioni su come procurarsi le pi&ugrave; recenti utility mount.
Io rifiuto sempre. Se la tua distribuzione Linux ha una 
versione troppo vecchia di <CODE>mount</CODE>: riportalo come un bug. Se
la tua distribuzione di Linux non &egrave; facilmente aggiornabile:
riportalo come un bug.
<P>Se avessi incluso tutte le informazioni necessarie per aggirare
i bug in distribuzioni Linux mal progettate questo HOWTO sarebbe
stato mooolto pi&ugrave; lungo e difficile da leggere.
</BLOCKQUOTE>
<P>
<P>
<H3>Scrittura dell'immagine sul CD</H3>

<P>Non c'&egrave; pi&ugrave; molto da fare. Se non hai gi&agrave; provato a farlo &egrave; ora di dare
il comando
<P>
<BLOCKQUOTE><CODE>
<PRE>
cdrecord -scanbus
</PRE>
</CODE></BLOCKQUOTE>
<P>Questo ti indicher&agrave; a quali periferiche SCSI &egrave; collegato il tuo masterizzatore.
Tutti gli altri metodi per individuare le informazioni cos&igrave; gentilmente
stampate da cdrecord sono stati rimossi da questo HOWTO (specialmente
lo schema di denominazione per periferiche SCSI generiche, in qualche modo
pericoloso).
<P>Prima di mostrarti l'ultimo comando, lascia che ti avverta di una cosa:
i masterizzatori hanno bisogno di essere alimentati con un flusso di 
dati costante in quanto hanno solo dei piccoli buffer per i dati.
Dunque il processo di scrittura del CD non deve essere interrotto
oppure ti risulter&agrave; un CD inusabile. &Egrave; facile interrompere il processo 
di scrittura cancellando un grosso file. Per esempio, mettiamo il caso
che tu voglia cancellare un file di 650MB: il kernel deve aggiornare
informazioni per circa 650.000 blochhi sull'hard-disk (mettendo il caso 
che tu abbia una dimensione di blocco pari a 1KByte per il tuo filesystem).
Questa operazione ha bisogno di un po' di tempo ed &egrave; facile che rallenti
l'attivit&agrave; del disco abbastanza perch&eacute; il flusso di dati si interrompa
per alcuni secondi.
Comunque, leggere la posta, navigare sul web o persino compilare un kernel
generalmente non interrompono il processo su macchine moderne.
(NDT: in generale, se avete un po' di cognizione, non fatevi troppi problemi ad usare la macchina. Vi faccio il mio esempio: io ho un sistema SCSI e durante una copia diretta, posto di aver assegnato un buffer di 20MB al processo di scrittura, il mio k6-2 350MHZ non viene usato per pi&ugrave; del 3%. Capite come ci&ograve; non costituisca un grosso sforzo per la macchina.)
<P>Tieni presente che nessun masterizzatore pu&ograve; riposizionare il laser e
riprendere da una posizione precisa sul CD se viene disturbato. Quindi anche
forti vibrazioni oppure shock meccanici probabilmente distruggeranno il CD
in fase di scrittura.
<P>OK, se sei mentalmente preparato, indossa una tunica nera, moltiplica
l'ID SCSI del masterizzatore per la sua revisione ANSI e accendi tante
candele quant'&egrave; il risultato, recita 2 versi dell'ASR-FAQ (newsgroup alt.sysadmin.recovery) 
e infine scrivi:
<P>
<BLOCKQUOTE><CODE>
<PRE>
shell&gt; SCSI_BUS=0   # dalla lista 1 "scsibus0:"
shell&gt; SCSI_ID=6    # dalla lista 1 "TOSHIBA XM-3401"
shell&gt; SCSI_LUN=0
shell&gt; cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
                   -data  cd_image

# come sopra ma pi&ugrave; in breve:
shell&gt; cdrecord -v speed=2 dev=0,6,0  -data  cd_image
</PRE>
</CODE></BLOCKQUOTE>
<P>Per una maggiore comprensibilit&agrave; la coordinate del masterizzatore sono
memorizzate in 3 variabili d'ambiente chiamate SCSI_BUS, SCSI_ID, SCSI_LUN.
L'opzione -data non &egrave; obbligatoria ma viene impostata per rendere la riga di 
comando comparabile a quella usata per scrivere CD audio.
<P>Se vuoi usare cdrecord per riscrivere un CD-RW devi usare
l'opzione "blank=..." per cancellare il vecchio contenuto. Fatti un favore,
leggi la pagina man per maggiori informazioni su come svuotare un CD-RW.
<P>In tempi in cui tutti escluso me (escludete pure anche me NDT) hanno a
casa una macchina a 400 MHZ si pu&ograve; in genere passare l'output di mkisofs
direttamente a cdrecord:
<P>
<BLOCKQUOTE><CODE>
<PRE>
shell&gt; IMG_SIZE=`mkisofs -R -q -print-size private_collection/  2>&amp;1 \
  | sed -e "s/.* = //"`
shell&gt; echo $IMG_SIZE
shell&gt; [ "0$IMG_SIZE" -ne 0 ] &amp;&amp; mkisofs -r  private_collection/  \
|cdrecord  speed=2  dev=0,6,0
            tsize=${IMG_SIZE}s  -data  -
#     non dimenticare la s --^         ^-- leggi i dati da STDIN
</PRE>
</CODE></BLOCKQUOTE>
<P>Il primo comando &egrave; un'esecuzione mirata a determinare la dimensione dell'immagine
(&egrave; necessaria la versione di mkisofs della distribuzione di cdrecord perch&eacute;
questo funzioni). Pu&ograve; darsi che il tuo masterizzatore non richieda di conoscere
la dimensione dell'immagine da scrivere, in tal caso &egrave; possibile saltare questo passo.
La dimensione stampata deve essere passata come parametro tsize a cdrecord
(&egrave; mantenuta nella variabile d'ambiente IMG_SIZE). Il secondo comando &egrave; una sequenza
di cdrecord e mkisofs accoppiati con una pipe.
<P>
<P>
<H2><A NAME="ss3.2">3.2 Scrittura di CD audio</A>
</H2>

<P>
<P>La procedura per i CD audio &egrave; molto simile ai passi descritti sopra.
Le due differenza principali sono che i CD audio consistono di tracce
che sono organizzate in immagini separate. Quindi se vuoi avere dieci
tracce su un CD devi anche preparare dieci immagini.
(NDT: con cdrdao non &egrave; necessaria la creazione di file immagine multipli) L'altra differenza
&egrave; che il formato delle immagini non &egrave; ISO-9660 (o un altro filesystem a scelta)
ma &egrave; "campionamenti a 16 bit stereo in formato PCM a 44100 campionamenti/sec (44.1kHz)".
<P>Una utility per convertire i tuoi file audio nel formato richiesto &egrave; sox.
Il suo utilizzo &egrave; immediato
<P>
<BLOCKQUOTE><CODE>
<PRE>
shell&gt; sox  killing-my-software.wav  killing-my-software.cdr
</PRE>
</CODE></BLOCKQUOTE>
<P>Questo comando converte la canzone killing-my-software dal formato WAV al
formato CDR-audio. Dai un'occhiata alla pagina man di sox per maggiori dettagli
a proposito dei formati e delle estensioni per i nomi di file che sox riconosce.
Siccome la conversione ha bisogno di molto spazio su disco &egrave; stata implementata
in cdrecord la capacit&agrave; di scrivere formati WAV e AU senza bisogno di conversione
manuale, a patto che i file sonori abbiano estensione .wav o .au (e ovviamente
siano in qualit&agrave; "stereo, 16 bit, 44.1kHz").
<P>Cdrecord scrive le immagini come tracce audio, se l'opzione -audio &egrave;
specificata. Le altre opzioni sono identiche a quelle usate per scrivere CD
di dati (a meno di esigenze particolari). Ecco tre esempi che effettuano la stessa 
operazione, ma leggono le tracce da formati di file sonori diversi:
<P>
<BLOCKQUOTE><CODE>
<PRE>
shell&gt; cdrecord -v speed=2 dev=0,6,0  -audio  track1.cdr track2.cdr...
shell&gt; cdrecord -v speed=2 dev=0,6,0  -audio  track1.wav track2.wav...
shell&gt; cdrecord -v speed=2 dev=0,6,0  -audio  track1.au  track2.au...
</PRE>
</CODE></BLOCKQUOTE>
<P>Un caso speciale &egrave; rappresentato dai file MPEG Layer 3 che possono essere convertiti
nel formato richiesto con il comando "mpg123 -cdr -s track1.mp3 > track1.cdr".
L'opzione -cdr assicura che la traccia sia codificata nel modo corretto (vedi sopra).
La conversione da WAV a MPEG
pu&ograve; essere fatta con LAME per i file WAV (estrarre le tracce da
un CD audio con cdda2wav e codificarle in MP3 con LAME). Per creare un
CD audio da un insieme di file MP3 &egrave; possibile usare la seguente sequenza di 
comandi:
<P>
<BLOCKQUOTE><CODE>
<PRE>
for I in *.mp3
do
    mpg123 -cdr -s $I | cdrecord -audio -pad -swab -nofix -
done
cdrecord -fix
</PRE>
</CODE></BLOCKQUOTE>
<P>In dipendenza della velocit&agrave; della tua macchina pu&ograve; essere necessario
abbassare la velocit&agrave; di scrittura a "speed=1" (opzione di cdrecord). Se
usi "speed=4" significa che la macchina deve essere in grado di riprodurre 
file MP3 a velocit&agrave; quadrupla. mpg123 ha bisogno di molto tempo di CPU!
Se non sei sicuro prova prima una simulazione con -dummy (mantiene il laser spento).
Al momento i CD prodotti avranno 2 secondi di pausa fra la tracce audio.
Se il tuo masterizzatore supporta la scrittura in modalit&agrave; "disc-at-once" (DAO),
puoi provare le nuove versioni di cdrecord per sbarazzarti delle pause.
<P>
<H3>DAO</H3>

<P>Se vuoi evitare le pause fra le tracce audio &egrave; necessario usare la modalit&agrave; di
scrittura disk-at-once e non la track-at-once prima descritta. Il supporto per
il DAO attualmente &egrave; pi&ugrave; avanzato in cdrdao. Dai un'occhiata alla sua homepage
per maggiori dettagli.
Utilizzando il parametro read-cd di cdrdao sarai persino in grado di creare
copie 1:1 di CD audio.
<P>
<H2><A NAME="ss3.3">3.3 CD-ROM in modalit&agrave; mista (Mixed Mode)</A>
</H2>

<P>
<P>Non c'&egrave; pi&ugrave; molto da dire. Basta indicare il tipo delle (successive) immagini
con le opzioni -data e -audio
<P>
<BLOCKQUOTE><CODE>
<PRE>
cdrecord  -v dev=0,6,0  -data  cd_image  -audio  track*.cdr
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>
<P>
<HR>
<A HREF="CD-Writing-HOWTO-4.html">Avanti</A>
<A HREF="CD-Writing-HOWTO-2.html">Indietro</A>
<A HREF="CD-Writing-HOWTO.html#toc3">Indice</A>
</BODY>
</HTML>