Masterizzare con Linux - Micro Howto

Di Prinzio Gianfranco

Legal

This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

Abstract

Il presente Micro-Howto contiene una piccola guida per l'uso dei principali tool a linea di comando per la masterizzazione di CD Dati e Audio con il Sistema Operativo GNU/Linux, con qualche riferimento ad alcuni front-end.

Non vengono presi in considerazione i programmi che non ho mai provato. Se, e quando, li proverò allora saranno inseriti in questa guida. Inoltre si presuppone che i programmi siano già installati, non viene spiegato come compilarli ed installarli. Il lettore dovrà conoscere il sistema di pacchettizazione della propria distribuzione GNU/Linux e provvedere all'installazione dei pacchetti binari o compilare i programmi dai sorgenti ed installarli documentandosi altrove.


Sommario

1. Introduzione
1.1. Revisioni
1.2. Avvertenze
2. Settori di un CD
3. Permessi e device
4. Tool a linea di comando
4.1. dd
4.2. mkisofs
4.3. cdda2wav
4.4. cdparanoia
4.5. cdrecord
4.6. cdrdao
5. Multi Sessione
6. Front-end
6.1. gcombust
6.2. burncenter
7. Riferimenti e Bibliografia

Capitolo 1. Introduzione

Sommario

1.1. Revisioni
1.2. Avvertenze

1.1. Revisioni

Diario delle Revisioni
Revisione 0.5.1 14/08/2003  
Accenno del parametro -paranoia per cdda2wav recente.
Revisione 0.5 07/05/2002  
Inizio supporto per XSLT.
Revisione 0.4.1 19/04/2002  
Modifiche al sezione di cdparanoia.
Revisione 0.4 07/04/2002  
Modifiche stilistiche di impaginazione. Aggiunta le versioni in DocBook Article. Aggiunte le versioni in XML.
Revisione 0.3.5 04/04/2002  
Modifiche alle istruzioni per l'uso di ide-scsi.
Revisione 0.3.4 11/03/2002  
Istruzioni per l'uso di ide-scsi.
Revisione 0.3.3 26/09/2001  
Aggiunta la parte su gcombust.
Revisione 0.3.2 15/09/2001  
Piccole modifiche al capitolo Multisessione.
Revisione 0.3.1 13/09/2001  
Riscritto il documento in DocBook Book.
Revisione 0.3 09/09/2001  
Reimpaginazione. Aggiunta la sezione su burncenter.
Revisione 0.2.1 01/09/2001  
Aggiunti gli avvertimenti. Citazione di psxcopy.
Revisione 0.2 31/08/2001  
Aggiunta la parte sulla copia di CD multisessione.
Revisione 0.1 23/08/2001  
Release iniziale.

1.2. Avvertenze

[Note] Nota

La duplicazione di CD originali è legale solo per farne una copia di riserva. La distribuzione di copie non autorizzate è da ritenersi illegale.

[Warning] Avvertimento

L'autore del presente documento non si assume nessuna responsbilità per l'uso non conforme alle leggi vigenti dei programmi citati. La presente guida e i programmi citati vengono usati a “proprio rischio e pericolo”, l'autore declina ogni responsabilità in caso di danneggiamento hardware e perdita di dati.

Capitolo 2. Settori di un CD

Un CD è formato da settori contigui in una spirale che parte dal centro e si allarga all'esterno. Ogni settore è di 2352 byte, che vengono usati interamente per i CD-Audio, mentre per i CD-Dati ne vengono usati 2048 e gli altri sono per la correzione degli errori (modo 1).

La capacità in byte di un CD si calcola in base alla formula: (f * b * c) * d

dove:
 f = Frequenza di campionamento: 44.100 Hz (44.100 campioni al secondo)
 b = Lunghezza campioni in byte: 2 (16 bit)
 c = Numero canali audio: 2 (stereo)
 d = Durata in secondi: Minuti * 60
Allora un secondo di audio occupa f * b * c = 44.100 * 2 * 2 = 176.400 byte. Un CD da 74 minuti, quindi, è composto da:
  • 176.400 * (74 * 60) = 783.216.000 byte per CD-Audio

  • 783.216.000 / 2.352 = 333.000 settori

  • 333.000 * 2.048 = 681.984.000 byte (650 MB) per CD-Dati

mentre un CD da 80 minuti:
  • 176.400 * (80 * 60) = 846.720.000 byte

  • 846.720.000 / 2.352 = 360.000 settori

  • 360.000 * 2.048 = 737.280.000 byte (703 MB)

Capitolo 3. Permessi e device

Se non si posseggono periferiche SCSI allora occorre usare l'emulazione IDE-SCSI, in quanto per masterizzare con cdrecord o cdrdao sono necessari i device SCSI. Se il supporto per i CD ATAPI è compilato all'interno del kernel allora bisogna passare il parametro opportuno al kernel dal boot-loader (LILO, grub, o quello che si usa). Per LILO:
append="hdb=ide-scsi hdc=ide-scsi"
con questo comando si dice al kernel che le periferiche IDE Primary-Slave (hdb) (di solito il Lettore CD) e Secondary-Master (hdc) (di solito il Mastrizzatore) usano i driver per l'emulazione ide-scsi e non i driver ide-cd (ricordarsi di rilanciare lilo dopo ogni modifica del file /etc/lilo.conf). Ora bisogna caricare il modulo:
# insmod ide-scsi
Se i driver SCSI sono compilati come moduli, allora si caricano anche questi:
# insmod scsi_mod
# insmod sr_mod
# insmod sg
In questo modo si potrà accedere alle periferiche con i device /dev/scd0 (/dev/sg0) per il Lettore CD e /dev/scd1 (/dev/sg1) per il Masterizzatore. Risulta utile fare dei link simbolici a tali device:
# ln -sf /dev/scd0 /dev/cdrom
# ln -sf /dev/scd1 /dev/cdrw
supponendo che il primo dispositivo sia il CD-ROM ed il secondo il CDRW. Inoltre bisongerà modificare il file /etc/fstab, sostituendo le occorrenze di /dev/hdb con /dev/cdrom e /dev/hdc con /dev/cdrw.

L'uso di IDE-SCSI per il CD-ROM non è strettamente necessario, a meno che non si intenda usare cdrdao o xcdroast-0.98. Nel resto di questo documento si presumerà che esistano i link /dev/cdrom e /dev/cdrw che puntano rispettivamente a /dev/scd0 e /dev/scd1 e che si abbiano dispositivi SCSI o si usi l'emulazione IDE-SCSI.

Normalmente solo l'utente root può masterizzare. Per permettere ad un utente normale di usare il masterizzatore si devono fare alcune modifiche ai permessi dei device e dei programmi.

Innanzitutto si deve creare un gruppo al quale aggiungere tutti gli utenti che avranno accesso al masterizzatore:
# addgroup cdrw
# adduser pippo cdrw
in questo modo l'utente pippo appartiene al gruppo cdrw. Ora si deve modificare il gruppo ed i permessi dei device e dei programmi:
# chgrp cdrw /dev/sg[0-1]
# chmod 664 /dev/sg[0-1]
# chgrp cdrw `which cdrecord` `which cdrdao`
# chmod 4750 `which cdrecord` `which cdrdao`
in questo modo solo gli utenti appartenenti al gruppo cdrw potranno eseguire cdrecord e cdrdao. Tali programmi hanno settato il bit SUID, in tale modo chi li esegue è come se fosse root.

Capitolo 4. Tool a linea di comando

Sommario

4.1. dd
4.2. mkisofs
4.3. cdda2wav
4.4. cdparanoia
4.5. cdrecord
4.6. cdrdao
Per masterizzare dei CD Audio o Dati sotto GNU/Linux si usano principalmente i seguenti programmi (a linea di comando):
  • dd: per estrarre l'immagine ISO dal CD;

  • mkisofs: per la creazione di immagini ISO dei CD-Dati;

  • cdda2wav: per l'estrazione delle tracce WAV (CD-DA) per CD-Audio (cd-ripper);

  • cdparanoia: come cdda2wav, ma orientato alla correzione degli errori;

  • cdrecord: per scrivere le immagini ISO o le tracce WAV sui CD;

  • cdrdao: per estrarre, scrivere, copiare i CD in modalità DAO (sia Audio che Dati).

4.1. dd

Tale programma, standard nei sistemi Unix-like, serve anche per estrarre su HD l'immaggine ISO dei CD-Dati. Il suo uso è molto semplice:
# dd if=origine of=destinazione bs=blocksize
e, per il nostro scopo, si usa:
# dd if=/dev/cdrom of=immagine.iso bs=2048
Il file immagine.iso, contenete l'immagine del CD, può essere montato per controllare il contenuto, per estravi dei file, ecc.
# mount immagine.iso /mnt/iso -t iso9660 -o loop

4.2. mkisofs

Copyright by Yggdrasil Computing, Incorporated

Per creare una immagine ISO a partire dal conenuto di una directory sull'HD si usa mkisofs:
# mkisofs -J -r -V "Etichetta" -o immagine.iso path
in questo modo tutte le sotto-directory ed i file contenuti in path appariranno nella radice dell'immagine ISO. Si possono anche ricombinare i file e le directory in modo che appaiano in posizioni diverse o con nomi diversi:
# mkisofs -J -r -graft-points -o immagine.iso \
	foo/bar=/dir/primo foo/beer/=/secondo/
dove l'espressione “foo/bar=/dir/primo” significa: prendi il file /dir/primo e chiamalo foo/bar nell'immagine ISO, se la directory foo non esiste creala. Per tale scopo i programmi gcombust e gtoaster sono molto comodi.

I parametri usati sono per creare una immagine compatibile con i nomi lunghi di Win95 (Joilet) (-J) e per usare l'estensione per i nomi lunghi ed i permessi Unix (Rock Ridge) (-r). Si può anche usare il parametro per la generazione dei file TRANS.TBL in ogni directory (-T) per la traduzione dei nomi lunghi nello standard ISO.

4.3. cdda2wav

Copyright (c) 1998 Heiko Eissfeldt hiko@colossus.escape.de

Per estrarre le tracce audio in file WAV si può usare cdda2wav:
# cdda2wav dev=bus,id,lun --alltraks
# cdda2wav dev=/dev/cdrom --alltraks
estraggono ogni traccia, rispettivamente, del dispositivo SCSI (bus,id,lun) o del device /dev/cdrom in file WAV separati.
# cdda2wav dev=0,0,0 cddb=0 --alltraks
Estrae le tracce singolarmente cercando i nomi tramite server cddbp. Si possono usare i parametri cddbp-server e cddbp-port per scegliere il server e la porta da usare, che di default sono “freedb.freedb.org” e “8880” rispettivamente. Usando cddb=1 verrà scelto la prima occorrenza trovata invece di chiedere all'utente quale scegliere (se vi sono più occorrenze). Dalla versione 2.0 (si raccomanda almeno la 2.01a13) di cdda2wav è stato aggiunto il supporto per le librerie di cdparanoia, in modo da poter usare le caratteristiche di estrazione accurata. Basta aggiungere il parametro -paranoia alla linea di comando:
# cdda2wav dev=0,0,0 --alltraks -paranoia

4.4. cdparanoia

Copyright (c) Monty monty@xiph.org

Un altro programma di estrazione (ripping) di tracce audio (CD-DA) è cdparanoia che offre, rispetto a cdda2wav, un miglior supporto per la correzione degli errori, per una estrazione possibilmente perfetta. Naturalmente settando al massimo l'accuratezza (paranoia-mode) si avrà una estrazione più lenta.
# cdparanoia    -d /dev/cdrom -B
# cdparanoia -z -d /dev/cdrom -B
# cdparanoia -Y -d /dev/cdrom -B
# cdparanoia -Z -d /dev/cdrom -B
Il primo (default) estrae le tracce facendo una verifica extra robusta dei dati, della sincronizzazione, gestione errori e ricostruzione dei graffi, il secondo continua a provare fino ad ottenere una estrazione perfetta, il terzo disabilita la verifica dei dati ed il quarto si comporta come cdda2wav facendo una estrazione in “burst-mode”. Come si legge dal README di cdparanoia:
ATAPI drives may be used either with the native IDE cdrom driver, or with
IDE-SCSI host adaptor emulation. Both work, but the SCSI emulation mode works
much better for CDDA extraction. Cdparanoia may also be able to identify and
use unusual drives that report 'CDDA incapable' in native ATAPI mode.
che, per chi non conosce l'inglese, vuol dire più o meno:
I lettori ATAPI possono essere usati con il driver per cdrom IDE nativo, o
con l'emulazione di adattatore IDE-SCSI. Entrambi funzionano, ma il modo
emulazione SCSI funziona molto meglio per l'estrazione CDDA. Cdparanoia può
anche essere capace di identificare ed usare lettori insoliti che riportino
'inacapace di CDDA' in modo ATAPI nativo.

4.5. cdrecord

Copyright (c) 1995 Joerg Schilling joerg@schily.isdn.cs.tu-berlin.de

Per scrivere fisicamente l'immagine ISO o le tracce WAV sul CD occorre usare cdrecord. Per conoscere le triple (bus,id,lun) del CD-ROM e del CD-R:
# cdrecord -scanbus
 Cdrecord 1.11a06 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jorg Schilling
 Linux sg driver version: 3.1.19
 Using libscg version 'schily-0.5'
 scsibus0:
    0,0,0   0) 'PLEXTOR' 'CD-ROM PX-40TS' '1.12' Removable CD-ROM
    0,1,0   1) *
    0,2,0   2) *
    0,3,0   3) 'YAMAHA' 'CRW8824S' '1.00' Removable CD-ROM
    0,4,0   4) *
    0,5,0   5) *
    0,6,0   6) *
    0,7,0   7) *
Vediamo degli esempi per Dati e Audio:
# cdrecord dev=0,3,0 speed=8 -eject immagine.iso
per scrivere CD-Dati a partire dall'imagine ISO,
# cdrecord dev=0,3,0 speed=4 -audio -pad -eject -swab *.wav
per scrivere il CD-Audio in modalità TAO (Track At Once),
# cdrecord dev=0,3,0 speed=4 -eject -pad -audio -dao -swab *.wav
per scrivere il CD-Audio in modalità DAO (Disck At Once).

Per effettuare una simulazione si aggiunge il parametro -dummy.

è anche possibile creare un CD-Dati al volo combinando, tramite pipe, mkisofs e cdrecord:
# mkisofs -r -J -q -print-size /opt/archive
# mkisofs -r -J /opt/archive | \
	cdrecord dev=0,3,0 speed=4 -tsize=XXXs -
dove XXX è il numero si settori restituito dal primo comando. Questo parametro è necessario in quanto alcuni masterizzatori si rifiutano di bruciare una immagine se non ne conoscono preventivamente la dimensione. Per copiare un CD al volo:
 # SIZE=`isosize -x /dev/cdrom`; \
	dd if=/dev/cdrom of=- bs=2048 | cdrecord dev=0,3,0 speed=4 -tsize=$SIZEs -
dove isosize è un'utilty contenuta nel pacchetto sg_utils prelevabile da http://www.torque.net/sg, oppure (come indicato su CD-Writing HOWTO):
# cdrecord dev=0,3,0 speed=4 -isosize /dev/cdrom
Per cancellare un CD-RW:
# cdrecord dev=0,3,0 speed=8 blank=fast
# cdrecord dev=0,3,0 speed=8 blank=all
rispettivamente per il solo TOC o per tutto il CD.

4.6. cdrdao

Copyright (c) Andreas Mueller andreas@daneb.de

Il programma cdrdao è usato per la copia di CD e la creazione di CD (soprattutto Audio) in modalità DAO. è simile, per principio, a CDRWin per Windows. Usa un file per il TOC (Table of Content) che contiene la descrizione del CD (tracce audio, CD-Text, immagini ISO, ecc.). Per conoscere le triple (bus,id,lun) del CD-ROM e del CD-R:
# cdrdao scanbus
 Cdrdao version 1.1.5 - (C) Andreas Mueller andreas@daneb.de
   SCSI interface library - (C) Joerg Schilling
   L-EC encoding library - (C) Heiko Eissfeldt
   Paranoia DAE library - (C) Monty

 Check http://cdrdao.sourceforge.net/drives.html #dt for current driver tables.

 Using libscg version 'schily-0.5'

 0,0,0: PLEXTOR, CD-ROM PX-40TS, 1.12
 0,3,0: YAMAHA, CRW8824S, 1.00
Per estrarre un immagine da un CD:
# cdrdao read-cd --device 0,0,0 --datafile immagine.bin immagine.toc
crea il file immagine.bin contenente i dati o l'audio ed il file immagine.toc contenente la descrizione del contenuto del .bin, simili ai file .cue/.bin di CDRWin, che è in grado di leggere. Al posto delle triple (bus,id,lun) si possono usare i device SCSI generici /dev/sg0, /dev/sg1. Per velocizzare la scrittura dei comandi, si possono mettere i parametri principali nel file di configurazione ~/.cdrdao, per esempio
 write_device: "/dev/sg1"
 write_driver: "generic-mmc:0x10"
 read_device: "/dev/sg0"
 read_driver: "plextor-scan"
 cddb_server_list: "freedb.freedb.org:/~cddb/cddb.cgi"
che da ora in poi supporremo esistente, per risparmiare battute sulla tastiera.

Per l'estrazione dell'audio usa le routine di accuratezza di cdparanoia. Il livello di accuratezza può essere scelto con il parametro --paranoia-mode n dove n è 0...3, dall'estrazione burst alla più accurata (default).

Per scrivere una immagine precedentemente estratta:
# cdrdao write --swap --speed 8 immagine.toc
Per bruciare un'imagine ISO ottenuta con mkisofs si crea il file .toc corrispondente:
 CD_ROM

 TRACK MODE1
 DATAFILE "immagine.iso"
Il file .toc può anche essere realizzato a mano per poter creare delle compilation di tracce audio, ma il modo più comodo è quello di usare il front-end per gnome gcdmaster. Insieme al programma viene fornito uno shell-script d'esempio generate_toc.sh per la generazione di .toc a partire da tracce WAV o da un'immagine ISO, oppure lo script perl wav2dao.pl.

Per la simulazione si aggiunge il parametro --simulate.

Se il masterizzatore non è riconosciuto si può aggiungere il parametro per il tipo di driver da usare, che per i nuovi CD-R è, generalmente --driver generic-mmc o --driver generic-mmc-raw.

Per la copia, oltre ai due passi visti in precedenza (read e write) si può usare:
# cdrdao copy --swap --speed 8 immagine.toc
che copia dal CD 0,0,0 al CD-R 0,3,0 facendo una immagine temporanea cddatapid.bin (oppure dal nome passato con --datafile) che verrà cancellata automaticamente a meno che non si usi il parametro --keepimage. Per la copia al volo, senza passare per l'HD, si aggiunge il parametro --on-the-fly. Eventualmente, per ridurre rischi di “buffer underrun” si possono usare i parametri --fast-toc e --paranoia-mode 0. Per cancellare un CD-RW:
# cdrdao blank --speed 8 --blank-mode minimal
# cdrdao blank --speed 8 --blank-mode all
rispettivamente per il solo TOC o per tutto il CD.

Si possono creare CD-Text aggiungeno i titoli al .toc, in questo caso si dovrà usare il parametro --driver generic-mmc:0x10 o --driver generic-mmc-raw:0x10.

Un esempio di file .toc con CD-Text per tracce audio singole:
 CD_DA

 CD_TEXT {
   LANGUAGE 0 {
     TITLE "Titolo dell'Album"
     PERFORMER "Nome del Cantante"
   }
 }

 // Track 1
 TRACK AUDIO
 NO COPY
 NO PRE_EMPHASIS
 TWO_CHANNEL_AUDIO
 CD_TEXT {
   LANGUAGE 0 {
     TITLE "Titolo della prima canzone"
     PERFORMER "Nome del Cantante"
   }
 }
 FILE "track-01.wav" 0 02:40:40

 // Track 2
 TRACK AUDIO
 NO COPY
 NO PRE_EMPHASIS
 TWO_CHANNEL_AUDIO
 CD_TEXT {
   LANGUAGE 0 {
     TITLE "Titolo della seconda canzone"
     PERFORMER "Nome del Cantante"
   }
 }
 FILE "track-02.wav" 0 03:20:61
 ...
Un esempio per un immagine audio ottenuta con:
# cdrdao read-cd --datafile audio.bin audio.toc
aggiungendo le informazioni CD-Text a mano o con gcdmaster o tramite CDDB:
# cdrdao read-cd --with-cddb --datafile audio.bin audio.toc
 CD_DA

 CD_TEXT {
   LANGUAGE 0 {
     TITLE "Titolo dell'Album"
     PERFORMER "Nome del Cantante"
   }
 }

 // Track 1
 TRACK AUDIO
 NO COPY
 NO PRE_EMPHASIS
 TWO_CHANNEL_AUDIO
 CD_TEXT {
   LANGUAGE 0 {
     TITLE "Titolo della prima canzone"
     PERFORMER "Nome del Cantante"
   }
 }
 FILE "audio.bin" 0 02:40:40

 // Track 2
 TRACK AUDIO
 NO COPY
 NO PRE_EMPHASIS
 TWO_CHANNEL_AUDIO
 CD_TEXT {
   LANGUAGE 0 {
     TITLE "Titolo della seconda canzone"
     PERFORMER "Nome del Cantante"
   }
 }
 FILE "audio.bin" 02:40:40 03:20:61
 ...

Per degli screenshot su come usare gcdmaster consultare http://cdrdao.sourceforge.net/gcdmaster/screenshots.html

All'interno dei sorgenti di cdrdao viene fornito, nella directory contrib, il programma psxcopy per fare una copia di backup dei CD per PSX.

Capitolo 5. Multi Sessione

Normalmente un CD viene chiuso alla fine della sessione e non è più possibile aggiungere dati. Ma utilizzando la modalità SAO (Session At Once), detta “multisessione” è possibile aggiungere ulteriori sessioni alla fine. Tale modalità viene detta anche CD-ROM XA mode 2. Viene sprecato dello spazio tra una sessione e l'altra, quindi lo spazio totale disponibile di un CD multisessione è inferiore a quello di un CD monosessione. Tra la prima e la seconda sessione sono sprecati 11400 settori, mentre tra le altre 6900, più eventuali settori per l'allinamento.

Per scrivere un CD in multisessione si devono usare le opzioni appropriate con cdrecord (-multi) e mkisofs (-C, -M). Per la prima sessione si usa mkisofs normalmente
# mkisofs -r -J -T -o immagine1.iso path1
per cdrecord:
# cdrecord dev=0,3,0 speed=8 -multi -pad immagine1.iso
Quando si deve aggiungere una nuova sessione alle precedenti, tenendo il CD nel masterizzatore (/dev/cdrw), si deve prima usare:
# cdrecord dev=0,3,0 -msinfo
che restituisce una coppia di numeri m,n da usare con mkisofs:
# mkisofs -r -J -C m,n -M /dev/cdrw -o immagine2.iso path2
oppure, in un unico comando
# mkisofs -r -J -C `cdrecord dev=0,3,0 -msinfo` -M /dev/cdrw \
	-o immagine2.iso path2
Per bruciare la nuova sessione
# cdrecord dev=0,3,0 speed=8 -multi -pad immagine2.iso
se vogliamo lasciare aperto il CD,
# cdrecord dev=0,3,0 speed=8 -pad immagine2.iso
se vogliamo chiuderlo. I due numeri m,n indicano rispettivamente il numero del primo settore dell'ultima sessione e il numero del primo settore della prossima, tenendo presente che sono compresi i settori sprecati (11400 per la prima sessione e 6900 per le altre). Per copiare un CD Multisessione, in modo semplice e veloce, si può procedere come segue:
  • si monta il CD
    # mount /dev/cdrom /cdrom -t iso9660
  • si crea l'immagine ISO a partire dal CD
    # mkisofs -v -r -J -V"Etichetta" -o immagine.iso /cdrom
  • si brucia l'immagine
    # cdrecord -v dev=0,3,0 speed=8 -eject immagine.iso
In questo modo si crea un CD monosessione con tutte le sessioni del CD originale.

Se, invece, si vuole preservare la struttura Multisessione del CD originale, allora si devono estrarre le singole sessioni singolarmente e poi bruciarle. Tale procedimento è più complicato ed è stato provato da me poche volte, quindi non so se è affidabile al 100%.

Per conoscere la struttura del CD si può usare cdda2wav:
# cdda2wav -J -D 0,0,0
 Type: ROM, Vendor 'PLEXTOR' Model 'CD-ROM PX-40TS' Revision '1.12' no MMC
 724992 bytes buffer memory requested, 4 buffers, 75 sectors
 #Cdda2wav version 1.11a06_linux_2.4.7-ac11_i686_i686 real time 
 sched. soundcard support
 DATAtrack recorded      copy-permitted tracktype
      1- 2 uninterrupted             no      data
 Table of Contents: total tracks:2, (total time 68:47.41)
   1.[25:21.06],  2.[43:24.35],

 Table of Contents: starting sectors
   1.(       0),  2.(  114081), lead-out(  309416)
 CDINDEX discid: T3PoIBeLb2R_7Kg7mKJ_sCtsNtg-
 CDDB discid: 0x0d101d02
 CD-Text: not detected
 CD-Extra: not detected
 This disk has no audio tracks
tale output ci dice che il CD è formato da 2 sessioni. La prima parte dal settore 0, la seconda dal settore 114081. Al posto di cdda2wav si può usare cdrecord :
# cdrecord dev=0,0,0 -toc
 Cdrecord 1.11a06 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jorg Schilling
 scsidev: '0,0,0'
 scsibus: 0 target: 0 lun: 0
 Linux sg driver version: 3.1.19
 Using libscg version 'schily-0.5'
 Device type    : Removable CD-ROM
 Version        : 2
 Response Format: 2
 Capabilities   : SYNC LINKED 
 Vendor_info    : 'PLEXTOR '
 Identifikation : 'CD-ROM PX-40TS  '
 Revision       : '1.12'
 Device seems to be: Generic CD-ROM.
 Using generic SCSI-2 CD driver (scsi2_cd).
 Driver flags   : 
 Supported modes: 
 first: 1 last 2
 track:   1 lba:         0 (        0) 00:02:00 adr: 1 control: 4 mode: 1
 track:   2 lba:    114081 (   456324) 25:23:06 adr: 1 control: 4 mode: 1
 track:lout lba:    309416 (  1237664) 68:47:41 adr: 1 control: 4 mode: -1
Usano il programma isoinfo contenuto nel pacchetto cdrtools (che contiene a sua volta mkisofs, cdda2wav, cdrecord) possiamo conoscere in dettaglio la dimensione in settori di ciascuna sessione:
# isoinfo -d -i /dev/cdrom
 CD-ROM is in ISO 9660 format
 System id: LINUX
 Volume id: Sessione 1
 Volume set id: 
 Publisher id: 
 Data preparer id: 
 Application id: 
 Copyright File id: 
 Abstract File id: 
 Bibliographic File id: 
 Volume set size is: 1
 Volume set seqence number is: 1
 Logical block size is: 2048
 Volume size is: 102681
 Joliet with UCS level 3 found
 Rock Ridge signatures version 1 found
la riga che ci interessa è quella contenente “Volume size is”, nel nostro caso contiene 102681. Sappiamo é così la dimensione in settori della prima sessione. Per la seconda:
# isoinfo -d -T 114081 -i /dev/cdrom
usando il parametro -T, per indicare dove inizia la seconda sessione, otteniamo la dimensione 195335. Per estrarre le due sessioni:
# dd if=/dev/cdrom of=immagine1.iso bs=2048 count=102681
# dd if=/dev/cdrom of=immagine2.iso bs=2048 skip=114081 count=195335
e per bruciarle:
# cdrecord -v dev=0,3,0 speed=8 -multi immagine1.iso
# cdrecord -v dev=0,3,0 speed=8 immagine2.iso
Lo stesso discorso, visto per l'uso di cdrecord, vale se per bruciare il CD usiamo cdrdao aggiungendo il parametro --multi. Per ottenere le informazioni sull'ultima sessione (per mkisofs)
# cdrdao msinfo
Per usare cdrdao si devono scrivere i file .toc, per la prima sessione:
 CD_ROM_XA

 TRACK MODE1
 DATAFILE "immagine1.iso"
estratta con dd, oppure si può usare direttamente cdrdao per estrarre l'immagine e creare il .toc :
# cdrdao read-cd --session 1 --datafile immagine1.iso immagine1.toc
che produce il seguente .toc:
 CD_ROM

 // Track 1
 TRACK MODE1
 NO COPY
 DATAFILE "immagine1.iso" 22:49:06 // length in bytes: 210290688
in questo caso si deve modificare la prima linea, da CD_ROM a CD_ROM_XA. Si brucia il CD:
# cdrdao write --multi --speed 8 immagine1.toc
si crea l'immagine della seconda sessione come nel caso di cdrecord, il file .toc analogo al precedente per la seconda sessione:
 CD_ROM_XA

 TRACK MODE1
 DATAFILE "immagine2.iso"
oppure, come visto prima:
# cdrdao read-cd --session 2 --datafile immagine2.iso immagine1.toc
che produce:
 CD_ROM

 // Track 1
 TRACK MODE1
 NO COPY
 DATAFILE "immagine2.iso" 43:24:35 // length in bytes: 400046080
Si brucia la seconda sessione
# cdrdao write --multi --speed 8 immagine2.toc
per mantenere il CD aperto
# cdrdao write --speed 8 immagine2.toc
per chiudere il CD.

Come si può notare, l'intestazione per un file .toc per CD-Dati monosessione è CD_ROM, mentre per uno multisessione deve essere CD_ROM_XA, perciò, come detto, se il file .toc viene creato con cdrdao , estraendo l'immagine, si dovrà procedere alla modifica.

Capitolo 6. Front-end

Sommario

6.1. gcombust
6.2. burncenter
Esistono vari front-end, sia per console che per le interfacce grafiche, di tali programmi. I seguenti sono i miei preferiti (NB: non uso KDE):
  • gcombust: front-end per GTK+ per copiare, creare CD-Dati, creare CD-Audio, il mio preferito per CD-Dati;

  • gcdmaster: front-end di cdrdao per gnome, il mio preferito per CD-Audio;

  • ECLiPt Roaster (eroaster): tipo gcombust, ma scritto in python (gnome-python);

  • Gnome Toaster (gtoaster): per la copia, creazione di cd-dati, cd-audio (WAV e MP3), tutto on-the-fly con d'n'd (gnome);

  • grip: front-end per vari ripper con supporto per l'encoding in MP3 (GTK+).

Un front-end per console che ho provato è burncenter.

Ne esistono molti altri, per una lista consultare http://freshmeat.net.

6.1. gcombust

Copyright (c) Jonas Munsin jmunsin@iki.fi

Front-end, per GTK+, dei noti mkisofs, cdrecord, cdda2wav, cdparanoia e cdlabelgen (programma di generazione di copertine per CD).

Il programma è suddiviso in vari notebook:
Opzioni

Si possono scegliere le opzioni per mkisofs per la creazione del filesystem ISO, il nome dell'immagine ISO, l'immagine del floppy per creare un CD avviabile, ecc..

File Dati

Si possono aggiungere i file e le directory da inserire nel CD-Dati, eventualmente rinminadoli in modo che appaiano con nomi e percorsi diversi. L'elenco si può salvare per un utilizzo successivo. Si può anche calcolare lo spazio necessario.

File Audio

Si aggiungono le tracce audio scegliendo i file WAV, eventualmente estratti cliccando il bottone Scarica il CD.

Masterizza

In questa parte si decide che tipo di masterizzazione effettuare: compilation Dati al volo o da immagine, copia al volo di CD-Dati, CD-Audio o copia di un CD-Audio (non una copia bit a bit, ma traccia per traccia TAO). Inoltre sono presenti le opzioni per il masterizzatore: device, velocità, ecc.

Output

Qui vengono visualizzati i messaggi dei programmi, a line di comando, che sono usati (mkisofs, cdrecord, ecc.).

Verifica

è possibile controllare che il CD-Dati appena masterizzato sia corretto.

6.2. burncenter

Si tratta di un front-end per console a mkisofs, cdrecord, cdda2wav e mpg123. è formato da uno script principale che visualizza un menù testuale: crea CD mono-sessione, crea CD multi-sessione, crea CD Audio, copia CD Dati, copia CD Audio, ecc. Tale script ne richiama altri, ognuno dei quali si occupa di una operazione specifica.

L'installazione (# sh install) è basata sulla richiesta di alcune informazioni (device del CDROM e del CDR, dir. temporanea, ecc.), in base alle quali viene generato lo script principale (burncenter). Lo script “burncenter” viene copiato in /usr/bin, gli altri in /usr/share/burncenter, a meno di modificare il file “install.2.in” (come preferisco, mettendo /usr/local/bin, /usr/local/share/burncenter).

Capitolo 7. Riferimenti e Bibliografia

I programmi citati si possono trovare ai seguenti indirizzi: Bibliografia: