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.
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.
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.
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.
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:
dd if=/dev/zero of="empty_file" bs=1024k count=650
shell> /sbin/mke2fs -b 2048 empty_file
empty_file is not a block special device.
Proceed anyway? (y,n) y
mount -t ext2 -o loop=/dev/loop1 empty_file /mnt
cdrecord
su empty_file (che ora non è più vuoto) come se
fosse un'immagine ISO-9660Se 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).
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.gzftp://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.
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.
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.)
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.
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
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... :-).
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.
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/.
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.
Il giornale tedesco "c't" pubblicò una lista di suggerimenti circa i CD-R vergini nel numero di novembre 1996:
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.
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."
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
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.
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.