Avanti Indietro Indice

4. Caro Winfried,...

In altre parole questa è la sezione di solito chiamata "frequently asked questions with answers". Se hai dei problemi con il tuo partner, i tuoi bambini o il cane puoi inserirli nella sezione, sempre che abbiano a che fare con la scrittura di CD-R o anche solo se si tratta di situazioni divertenti.

4.1 Quanto è sensibile il processo di scrittura?

Prova. Usa l'opzione -dummy per effettuare una simulazione con cdrecord. Fai quello che vuoi e osserva se il processo viene interrotto o meno.

Se alimenti cdrecord direttamente da mkisofs tieni presente che processi che occupano molto il disco come l'aggiornamento del database locate mettono in pericolo il flusso di dati e quindi la salute del tuo CD; meglio controllare che non vengano lanciati dal cron o anacron mentre stai masterizzando.

4.2 La frammentazione ha un cattivo impatto sul flusso?

Di solito è così bassa che il suo impatto non è visibile. Comunque è piuttosto facile costruire casi patologici di frammentazione, che abbassino il trasferimento degli hard disk sotto i 100 kbyte/secondo. Basta non farlo. :-)

Sì, i file sull'hard disk vengono frammentati durante gli anni. Più questo accade velocemente più il filesystem si riempie. Lascia sempre un 10% o 20% di spazio libero e non dovresti avere problemi nella scrittura di CD.

Se non ne sei sicuro dai un'occhiata ai messaggi stampati al boot, la percentuale di frammentazione è stampata mentre vengono controllati i filesystem. Puoi controllare questo valore con il comando molto rischioso:

shell> e2fsck -n  /dev/sda5        # '-n' is important!
[robaccia-lascia perdere]
/dev/sda5: 73/12288 files (12.3% non-contiguous)

In questo esempio la frammentazione è molto alta - ma ci sono solo 73 file molto piccoli su questo filesystem (usati in /tmp) quindi il valore non è allarmante.

Vi è un'utility in fase sperimentale chiamata e2defrag per deframmantare filesystem extended-2. La versione corrente non funziona ancora abbastanza bene per essere usata anche solo in ambienti privati. Se vuoi veramente deframmentare il tuo filesystem, crea una copia di backup (meglio due), fai pratica nel ripristino dei dati e crea un nuovo filesystem (distruggendo il vecchio) e ripristina i dati. In due parole questa è la tecnica più sicura.

4.3 Posso tenere un'immagine su un filesystem UMSDOS?

Certo. L'unico filesystem che non è abbastanza veloce per masterizzare è il network filesystem (NFS).

Anch'io usavo UMSDOS per condividere lo spazio su disco fra Linux e DOS/Win su un PC (486/66) dedicato alla masterizzazione.

4.4 Non c'è qualche modo per aggirare le limitazioni ISO-9660?

Sì. Puoi mettere su un CD qualsiasi filesystem vuoi. Ma altri sistemi operativi diversi da Linux non saranno in grado di usarlo.

Ecco un esempio passo a passo:

Se vuoi aggiungere un CD come questo in /etc/fstab ne devi disabilitare il controllo, cioè per esempio:

/dev/cdrom  /cdrom  ext2  defaults,ro  0 0

Il primo 0 significa che il disco non deve essere incluso nei dump, il secondo (importante) indica di non controllare la presenza di errori al boot (fsck troverebbe degli errori sul CD).

4.5 Come copio le tracce da CD Audio?

Ci sono parecchi pacchetti software. Il più nuovo si chiama "cdparanoia" e puoi scaricarlo da:

http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia/index.html

Oppure puoi usare una combinazione di "cdda2wav" e "sox", disponibili presso sunsite e i suoi mirror:

ftp://sunsite.unc.edu/pub/Linux/apps/sound/cdrom/cdda2wav0.71.src.tar.gz

ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-cb3.tar.gz

Con cdda2wav puoi copiare un intervallo specifico (oppure un'intera traccia) da un CD Audio e convertire il risultato in un file .wav. sox al contrario riconverte i file .wav nel formato cdda tipico dei CD audio dimodoché possano essere scritti su un CD-R con cdrecord. Di solito non è necessario usare sox perché le nuove versioni di cdrecord hanno già il supporto per i file .au e .wav.

4.6 Come controllo la presenza di periferiche SCSI dopo il boot?

Il file drivers/scsi/scsi.c contiene queste righe:

/*
 * Usage: echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
 * with  "0 1 2 3" replaced by your "Host Channel Id Lun".
 * Consider this feature BETA.
 *     CAUTION: This is not for hotplugging your peripherals. As
 *     SCSI was not designed for this you could damage your
 *     hardware !
 * However perhaps it is legal to switch on an
 * already connected device. It is perhaps not
 * guaranteed this device doesn't corrupt an ongoing data transfer.
 */

(NDT: In pratica il comando "aggiunge" al sistema una nuova periferica indicata dalle coordinate HA, CH, ID, LUN. Occhio, però! Primo: questa funzione è ancora una beta; Secondo: SCSI non è USB e quindi non è una buona idea collegare delle periferiche "a caldo". L'ho visto fare con successo, ma non è una garanzia... Questa funzione è stata ideata per aggiungere periferiche già collegate e anche in questo caso non è sicura al 100%)

Tieni presente che dovrebbe essere usata solo per aggiungere periferiche alla fine della catena. Se la inserisci nel mezzo rompi le scatole al meccanismo di assegnazione dei nomi (directory /dev) e potresti distruggere tutti i tuoi dati.

4.7 È possibile creare una copia 1:1 di un CD di dati?

Sì. Tieni presente però che qualsiasi errore di lettura dell'originale (per polvere o graffi) si ripercuoterà in una copia difettosa.

(NDT: spiacente ma non è vero. CD che presentano incongruenze fra "user data" e Error Correction Codes/Error Detection Codes non possono essere replicati esattamente (qualcuno ha detto Playstation?) in quanto il firmware del lettore corregge automaticamente questi "errori". In pratica non è possibile leggere/scrivere quello che si vuole sul CD ma 280 byte di ogni settore devono essere una funzione dei 2048 di dati. Si tratta di 4 byte per l'individuazione degli errori e 276 byte per la loro correzione. Se non hai capito niente di questo dai un'occhiata alle specifiche SCSI-2 e tanti auguri).

Primo caso: hai un masterizzatore e un lettore CD-ROM separato. Se impartisci il comando

cdrecord -v dev=0,6,0 speed=2 -isosize /dev/scd0

puoi estrarre un flusso di dati dal lettore /dev/scd0 e scriverlo direttamente tramite il masterizzatore che ha ID=3 a velocità 2X. (NDT: in questo caso si effettua una copia di "cooked data", cioè si copia solo l'area di dati utente in ogni settore. L'altro caso possibile è la copia di "raw data" in cui vengono copiate dal CD le seguenti aree:

)

Secondo caso: non hai un lettore CD-ROM separato. Mi sa che devi usare il masterizzatore per creare l'immagine del CD-ROM:

dd if=/dev/scd0 of=cdimage

Questo comando legge il contenuto del CD dalla periferica corrispondente a /dev/scd0 e lo scrive nel file "cdimage". Il contenuto di questo file è identico a quello generato da mkisofs, quindi è possibile procedere come descritto precedentemente nel capitolo (cioè usare il file cdimage come input per cdrecord). Se ti interessa avere un indice dell'avanzamento del processo e altre cosucce carine da vedersi puoi usare sdd di Jörg Schilling.

Se si presentano errori installa una versione recente di cdrecord che contiene lo strumento "readcd" (presente nella directory misc/). Dà gli stessi risultati di dd, ma ripete la lettura del settore più volte in caso di errori. (NDT: per chi usa cdrdao è disponibile un'opzione 'read-cd' che legge il contenuto del disco e ne salva la struttura in un file (la Table Of Contents) che verrà poi utilizzato nel processo di scrittura per replicare la struttura del CD originale.)

4.8 Linux può leggere i CD-ROM Joliet?

Sì. I kernel più nuovi (2.0.36 e oltre) hanno il suppporto per il formato Joliet. Ricordati di usare le parole chiave iso9660 e joliet (che poi è solo un'estensione) nel file /etc/fstab. Per maggiori dettagli, visita la pagina http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html.

4.9 Come posso leggere/montare CD-ROM con il masterizzatore?

Allo stesso modo che con il lettore. Niente trucchi. Tieni presente che devi usare le periferiche scd (SCSI CDROM) per montare i CD-ROM in lettura anche se possiedi un CD-ROM ATAPI (ricorda che hai configurato le tue periferiche ATAPI con l'emulazione SCSI). Per esempio nel file /etc/fstab potresti mettere:

/dev/scd0  /cdrom  iso9660  ro,user,noauto  0  0

4.10 E per far stare ancora più dati su di un CD-R?

Usa bzip2 invece di gzip o pkzip. Ti fa risparmiare fino al 30% di spazio per file più grandi di 100KB. Scaricatelo all'indirizzo

http://www.muraroa.demon.co.uk/

Invece di masterizzare un vero CD audio puoi convertire i file .wav in .mp3 e piazzarli su un CD ISO9660 come normalissimi file. Generalmente la compressione MPEG III ha un'efficienza di 1:10. Ovviamente lo stereo non può leggere dei file... questo è il rovescio della medaglia. Però potresti sempre usare l'hard-disk per la prossima festa; con 18GB puoi avere a disposizione 3000-4000 titoli (NDT: e non dimenticarti di invitarmi! :).

Un compressore MPEG III è disponibile presso:

http://www.stud.ifi.uio.no/~larsi/other/8hz-mp3-cheng.tar.gz

Un riproduttore MPEG-III è disponibile presso:

http://homepages.uni-tuebingen.de/student/michael.hipp/mpg123/

Per la voce campionata potresti ridurne le dimensioni usando la "GSM lossy speech compression":

ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/

http://kbs.cs.tu-berlin.de/~jutta/toast.html

(NDT: per chi quando ha letto il titolo della sezione ha subito pensato a un buon vecchio e sano oversize (della serie: scrivi finché c'è plastica) ho buone notizie: in generale i driver non sono schizzinosi quindi se il masterizzatore è fisicamente in grado di effettuare oversize non ci sono problemi. Che io sappia i driver che lo permettono sono : Teac-CDR50/55, generic-mmc di cdrdao e generic-mmc di cdrecord. Non ho altre informazioni, perciò datevi da fare, potreste essere ricordati come dei pionieri dalle generazioni future... :-).

4.11 Come creo dei CD di boot?

Devi avere un floppy da 1.44 MB bootabile. Creane l'esatta immagine con il comando

dd if=/dev/fd0 of=boot.img bs=18k

Piazza l'immagine nella directory che contiene la tua collezione di file (o anche in una sottodirectory, fai tu...). Passa a mkisofs il nome del file con l'opzione '-b' e in più usa '-c'. Per maggiori informazioni leggiti il file README.eltorito nella distribuzione di mkisofs.

Un'applicazione interessante per un CD di boot personalizzato è un ambiente DOS o Windows a prova di virus. Così puoi risparmiare i soldi per un hard-disk (se hai una rete e usi samba per rendere disponibili dei file utente su un fileserver). Cioè, questo si può fare in teoria ma non ne ho mai sentito parlare in pratica.

Alcuni dettagli sull CD-ROM di boot della RedHat li trovi presso: http://www.channel1.com/users/rodsmith/rhjol-technical.html.

4.12 Ci sarà pure un modo di rendere i CD-ROM scrivibili in qualche modo...

Sì. C'è un filesystem di overlay per Linux che puoi montare al di sopra del CD-ROM e che intercetta tutte le operazioni di scrittura. I file nuovi e quelli modificati sono memorizzati da qualche altra parte, ma all'utente sembra proprio di averli modificati. Per maggiori informazioni dai un'occhiata a: http://home.att.net/~artnaseef/ovlfs/ovlfs.html.

Se non ne hai abbastanza devi solo aspettare che Linux supporti il filesystem UDF, oppure rimboccati le maniche e dai una mano: http://trylinux.com/projects/udf/.

4.13 È possibile usare più masterizzatori allo stesso tempo?

Si. Comunque finora è stato testato solo con due masterizzatori. Inoltre ti serve o una versione recente del Kernel (2.2.10 al momento in cui scrivo) oppure una patch per avere più buffer nel driver SCSI generico ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha; funziona per versioni sino alla 2.2.5.

4.14 Quale supporto è il migliore?

Il giornale tedesco "c't" pubblicò una lista di suggerimenti circa i CD-R vergini nel numero di novembre 1996:

4.15 E a proposito di Solaris, *BSD, AIX, HP-UX, ecc.?

Solo il cap.2 è specifico per Linux. Puoi applicare i capitoli 3 e 4 anche ad altri sistemi operativi. Guarda i file README.NetBSD, README.aix, README.hpux, README.next, README.solaris, README.sunos, README.vms o README.xxxBSD dalla distribuzione di cdrecord.

4.16 Dove posso mantenere permanentemente la configurazione locale?

Hai due possibilità. Usare il file di configurazione per cdrecord oppure uno shell-wrapper come quello indicato qui sotto. Questo script per la shell legge un file di configurazione, nel quale sono indicate le opzioni e i parametri per cdrecord riga per riga. I nomi sono esattamente gli stessi che sulla riga di comando, ma senza essere preceduti da -. I commenti sono possibili. Esempio:

# be verbose
v
# set the speed of the writer
speed=2
# the device-coordinates in the form BUS,ID,LUN
dev=0,6,0

I file di configurazione per lo script sono all'interno di /etc/cdrecord e devono essere indicati nella riga di comando. Esempio: se vuoi riferirti alla configurazione /etc/cdrecord/mywriter.cfg, allora devi impartire il comando "cdrecord.sh mywriter.cfg -audio track1...". Ogni parametro dopo mywrite.cfg è passato a cdrecord.

#! /bin/bash

CFGDIR="/etc/cdrecord"

CFG="$1"
shift
ARGS_LEFT="$@"

if [ ! -f "$CFGDIR/$CFG" ]
then
    echo "Configuration file $CFGDIR/$CFG not found. Exiting."
    exit 1
fi

while read LINE
do
    case $LINE in
        \#*|"") continue;;
    esac
    old_IFS="$IFS"
    IFS="$IFS="
    set -- $LINE
    IFS="$old_IFS"
    O_NAME="$1"
    O_VALUE=""
    while shift
    do
        case $1 in
            "") continue;;
        esac
        O_VALUE="$1"
    done

    if [ -z "$O_VALUE" ]
    then
        O_CDRECORD="$O_CDRECORD -$O_NAME "
        continue
    fi
    O_CDRECORD="$O_CDRECORD $O_NAME=$O_VALUE "
    
done < "$CFGDIR/$CFG"

set -x    #DEBUG
exec cdrecord $O_CDRECORD $ARGS_LEFT
echo "Execution of cdrecord failed."

4.17 Come faccio a leggere le informazioni del CD?

Da qualche parte dopo i primi 32k sul CD vi è un blocco contenente le informazioni sul CD. Puoi estrarre queste informazioni con questo script:

#! /bin/bash

RD=/dev/cdrom
for i in 32768,7   32776,32 32808,32 32958,128 33086,128 33214,128 \
         33342,128 33470,32 33581,16 33598,16  33615,16  33632,16
do
    old_IFS="$IFS"
    IFS=","
    set -- $i
    IFS="$old_IFS"
    OFFSET=$1
    LENGTH=$2
    echo "*`dd if=$RD bs=1 skip=$OFFSET count=$LENGTH   2> /dev/null`#"
done

4.18 E a proposito dei riscrivibili?

Per riscrivere un supporto CD-RW specifica il parametro blank=fast a cdrecord. Tutto qui. Dai un'occhiata alla pagina man di cdrecord per maggiori dettagli su questo parametro.

4.19 Come creo un CD multisessione?

Per prima cosa l'immagine per un CD multisessione deve essere formattata con il filesystem ISO9660 e le estensioni RockRidge. In più devi usare l'opzione -multi di cdrecord se vuoi ancora aggingere nuove sessioni. Quindi, almeno per la prima devi usare l'opzione -multi.

Le immagini per la seconda e successive sessioni sono un poco più difficili da generare. Mkisofs deve sapere dove inizia lo spazio libero sul CD. ti puoi procurare questa informazione con l'opzione -msinfo di cdrecord (ecco un esempio).

shell> NEXT_TRACK='cdrecord -msinfo dev=0,6,0'
shell>: echo $NEXT_TRACK
shell> mkisofs -R -o cd_image2 -C $NEXT_TRACK -M /dev/scd5
          private_collection/ \

Per maggiori informazioni leggi il file README.multi incluso nella distribuzione di cdrecord.


Avanti Indietro Indice