La maggior parte dei comandi mount
supportano l'opzione user. Se aggiungete una voce come la seguente in /etc/fstab:
/dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro
allora un utente normale sarà abilitato a montare e smontare il drive con questi comandi:
% mount /mnt/cdrom
% umount /mnt/cdrom
Di default il disco sarà montato con alcune opzioni che aiutano ad aumentare la sicurezza (per esempio i programmi non possono essere eseguiti, i file di dispositivo sono ignorati). Se questo è troppo restrittivo potete usare opzioni aggiuntive (per esempio l'opzione ``exec'' abiliterà l'esecuzione dei programmi). Controllate la pagina man mount(8) per maggiori dettagli.
Un altro metodo è di procurarsi il pacchetto usermount
che
permette a utenti non-root di montare e smontare dispositivi
rimovibili come floppy o CD-ROM, ma restringe l'accesso ad altri
dispositivi (come le partizioni di un hard disk). È disponibile sui
maggiori siti archivio.
Il sito archivio ftp.cdrom.com
contiene il file sorgente mount.c
che permette di montare/smontare (solo) CD-ROM come
utente normale. Si avvia come un eseguibile setuid.
Il disco non può essere smontato se qualche processo sta accedendo al
drive. Questo comprende i processi che hanno la propria directory di
default impostata nel filesystem montato. Se non siete in grado di identificare il
processo che usa il disco, potete usare il comando fuser
, come
indicato nell'esempio seguente.
% umount /cdrom
umount: /dev/hdd: device is busy
% fuser -v /cdrom
USER PID ACCESS COMMAND
/mnt/cdrom tranter 133 ..c.. bash
Su alcuni sistemi avete bisogno di essere root quando avviate il comando
fuser
per vedere i processi degli altri utenti.
Dovrete aggiungere una voce nel file /etc/exports. Gli
utenti su altre macchine saranno quindi in grado di montare il drive.
Si veda la pagina man exports(5)
per dettagli.
Quando installate Linux da zero il metodo più comune è utilizzare un disco di boot. Alcune distribuzioni permettono di avviare un kernel Linux su CD direttamente da DOS.
Se possedete un disco CD-ROM, il BIOS e il drive CD-ROM corretti, ossia
se sono tutti e tre predisposti, potete fare il boot direttamente da CD.
L'ultima versione di mkisofs
supporta la creazione di tali
dischi usando lo standard El Torito per CD avviabili.
Heiko Eissfeldt (
heiko@colossus.escape.de) e Olaf Kindel hanno scritto una utility
che legge dati audio e li salva in file sonori in formato .wav
.
Il pacchetto si chiama cdda2wav.tar.gz
e può essere
reperito su metalab.unc.edu
.
Un'altra utility per estrarre audio digitale è cdparanoia
disponibile a
http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia.
Poiché i drive CD-ROM cambiano molto velocemente, è difficile elencare
quali modelli supportino la lettura di dati digitali. La
cosa migliore che potete fare è procurarvi gli ultimi pacchetti di cdda2wav
o cdparanoia
e leggerne la documentazione.
Per maggiori informazioni su questo argomento, si veda il sito Web http://www.tardis.ed.ac.uk/~psyche/cdda/ e le FAQ di alt.cd-rom elencate nella sezione ``riferimenti''.
Su dischi ISO-9660 senza le estensioni Rock Ridge, occorre aggiungere
l'opzione -noleaf
al comando find
. Si veda la pagina
man find(1) per maggiori dettagli.
(Nella mia esperienza virtualmente tutti i recenti CD di Linux usano le estensioni Rock Ridge, quindi questo problema dovrebbe presentarsi molto raramente.)
Il pacchetto X-CD-Roast per Linux è un front-end grafico per usare registratori di CD. Il pacchetto può essere reperito su metalab.unc.edu in /pub/Linux/utils/disk-management/xcdroast- 0.95.tar.gz
Si veda anche il Linux CD-Writing HOWTO, che si trova su ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/CD-Writing-HOWTO o http://metalab.unc.edu/LDP/HOWTO/CD-Writing-HOWTO.html.
Il CD-ROM è un supporto a sola lettura. Con alcuni kernel vecchi era possibile montare un CD-ROM in lettura/scrittura; i tentativi di scrivere dati sul CD erano semplicemente ignorati. Dalla versione 1.1.33 questo è stato corretto cosicché ora i CD-ROM possono essere montati in sola lettura (per esempio, usando l'opzione -r).
Il driver sbpcd supporta l'espulsione automatica del CD quando viene smontato. In alcuni vecchi kernel questo era il comportamento predefinito. Se chiudete il sistema, un CD montato sarà smontato, causando l'espulsione.
Questa caratteristica è inserita per facilitare il cambio dei dischi. Se il carrello è aperto quando montate o leggete un CD, verrà chiuso automaticamente.
Ho trovato che questo costituisce un problema per alcuni programmi (per esempio cdplay e workbone). Dal kernel 1.1.60 potete controllare questa caratteristica via software. Un programma di esempio è incluso nel file di documentazione di sbpcd (o usate il programma eject). Potete anche controllare il comportamento predefinito modificando il file sorgente del kernel sbpcd.h.
Tale CD ``speciale'' è probabilmente un disco XA (come tutti i PhotoCD o uno eventualmente creato in questa modalità con un masterizzatore). La maggior parte dei driver CD-ROM del kernel di Linux non supportano dischi XA, sebbene si possa trovare una patch per aggiungere questo supporto in uno dei siti archivio.
Il driver sbpcd supporta l'XA. Se usate questo driver potete vedere se un disco è XA con la seguente procedura: andate nel file sbpcd.c e abilitate la visualizzazione della ``Table of Contents'' (TOC, sotto DBG_TOC). Compilate, installate il nuovo kernel e avviatelo. Ogni volta che montate un disco, le informazioni sulla TOC saranno stampate (o sulla console o in un file di log). Se il primo valore visualizzato nell'header della TOC è ``20'', allora si tratta di un disco XA. Quel byte è ``00'' nei dischi normali. Se la TOC mostra diverse tracce, anche questo è un segnale che si tratta di un disco XA.
(Grazie a Eberhard Moenkeberg per queste informazioni)
Altre possibilità per un CD illeggibile sono:
Molti utenti hanno riportato successi con CD-ROM multi-disco SCSI a caricamento automatico. Probabilmente avrete bisogno di abilitare l'opzione di configurazione del kernel ``Probe all LUNs on each SCSI device'' (``prova tutti i LUN su ogni dispositivo SCSI'', questo non è necessario se il vostro caricatore di CD è già noto al driver SCSI. Date un'occhiata a /usr/src/linux/drivers/scsi.c).
Almeno un utente ha anche dovuto aumentare il valore del timeout SCSI nel driver del kernel. Un sintomo di questo è un messaggio di errore del tipo ``wrong fs type, bad option, bad superblock on /dev/sr5, or too many mounted file systems'' (tipo sbagliato di filesystem, opzione errata, superblock non valido su /dev/sr5, o troppi filesystem montati) quando si prova a montare un CD-ROM per la prima volta, mentre un secondo tentativo subito dopo ha successo. Per alzare il timeout aumentate il valore di IOCTL_TIMEOUT all'inizio di /usr/src/linux/drivers/scsi/sr_ioctl.c e ricompilate il kernel. Mi si dice che un valore di 10000 al posto del predefinito 3000 funziona col NEC Multispin 4Xc.
Potrebbe essere necessario creare file speciali a blocchi in più,
cosicché tutti i LUN possano essere acceduti. È richiesto un file di
dispositivo per ogni LUN. Così, per un caricatore a 7 dischi, devono
essere presenti da /dev/sr0
a /dev/sr6
(di più se
avete drive CD-ROM SCSI in più). Per creare questi file speciali eseguite
mknod /dev/sr? b 11 ?
come root dove ? sta per il numero
richiesto.
Mi dicono che funzionano i caricatori Nakamichi MBR-7 7, NEC Multispin 4Xc e Pioneer 12.
Sono pure disponibili caricatori a più dischi EIDE/ATAPI. Il kernel
ha il supporto per alcuni drive usando la funzione CDROM_SELECT_DISC
di ioctl. Il file di documentazione del driver del kernel include i
sorgenti per un programma per selezionare gli alloggiamenti del
caricatore da attivare, o potete usare varie utility come il programma
eject
descritto più sopra.
Alcuni CD hanno i permessi dei file della root directory impostati in
modo tale da permettere solo all'utente root
di leggerli.
Questo è un errore da parte del produttore del CD e un reale
inconveniente. Una eventualità più comune è il fatto che alcuni file o
directory non siano leggibili da tutti. Alcune persone hanno creato una
patch per i loro kernel per aggirare il problema.
Si veda anche, a riguardo, la domanda sui file nascosti, più oltre in questo documento.
Cosa significa quando ricevo un messaggio dal driver IDE CD-ROM tipo ``hdxx: code: xx key: x asc: xx ascq: x''?
Questo è un messaggio di stato/errore dal drive IDE CD-ROM. Di default, il driver IDECD visualizza le informazioni in forma criptica al posto di sprecare spazio del kernel con messaggi di errore. Potete cambiare l'impostazione per visualizzare i messaggi di errore completi andando in /usr/src/linux/drivers/block/ide-cd.c, cambiando il valore di VERBOSE_IDE_CD_ERRORS to 1 e ricompilando il kernel.
Questo è un modo. Il comando che segue misura quanto ci vuole per leggere 1500K di dati da un CD:
% time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500
1500+0 records in
1500+0 records out
real 5.24
user 0.03
sys 5.07
Il transfer rate di un drive a singola velocità è di 150 kilobytes al secondo, per cui dovrebbe impiegarci circa 10 secondi. A doppia velocità 5, a quadrupla 2,5, ecc.
Il tempo ``real'' sopra indicato è probabilmente il miglior numero da guardare -- in questo caso indica un drive a doppia velocità. Potete aumentare la quantità di dati per effettuare misurazioni più accurate (nel caso ve lo stiate chiedendo, i dati letti non vanno nella cache). Dovrete probabilmente avviare il comando un po' di volte e fare la media.
Ho scritto un piccolo programma in C che misura e riporta il transfer rate di un CD-ROM; posso inviarvelo su richiesta.
Il sintomo di solito indica che il boot disk che avete usato per l'installazione riconosceva il drive CD-ROM, ma dopo che Linux è stato installato su un hard disk o su un altro floppy e riavviato non lo riconosce più.
Il motivo più comune è che con alcune distribuzioni Linux il kernel installato sull'hard disk non è necessariamente lo stesso che si trova sul dischetto di boot. Potreste aver selezionato un disco di boot che si adattava al vostro hardware CD-ROM, mentre il kernel installato potrebbe essere un kernel ``generico'' a cui manca il supporto CD-ROM. Potete verificare questo seguendo le linee-guida per la risoluzione dei problemi discusse più sopra in questo documento.
La soluzione è ricompilare il kernel, assicurandosi che i driver per il drive CD-ROM e ogni altro driver richiesto (per esempio il controller SCSI, il filesystem ISO-9660) siano inclusi. Consultate il Kernel HOWTO se non sapete come fare.
Se avete passato qualche opzione da linea di comando al disco di boot (per esempio ``hdc=cdrom'') avrete bisogno di aggiungerle al file di configurazione del programma di boot (tipicamente /etc/lilo.conf).
Alcuni CD hanno file con il bit ``hidden'' (nascosto) impostato. Normalmente questi file non sono visibili. Se montate il CD con l'opzione ``unhide'' allora i file dovrebbero essere accessibili (questo non sembra essere documentato da altre parti).
Se volete scrivere le vostre applicazioni, come un riproduttore di CD audio, dovrete padroneggiare le interfacce di programmazione di applicazioni (API) fornite da Linux.
Originariamente i driver del kernel per i CD-ROM usavano le loro proprie funzioni ioctl() per supportare funzionalità specifiche per ogni drive. I file header come /usr/include/linux/sbpcd.h descrivono queste funzioni. Poiché molti driver erano basati su altri driver, le interfacce, sebbene non identiche, hanno molto in comune.
Più recentemente c'è stata un'iniziativa portata avanti da David van Leeuwen ( david@tm.tno.nl) per standardizzare le API per drive CD- ROM, individuando e adottando del codice comune e assicurandosi che tutti i driver si comportino allo stesso modo. Questo è documentato nel file /usr/src/linux/Documentation/cdrom/cdrom-standard.tex. Molti driver del kernel supportano questo standard. Dal kernel 2.0 tutti i driver CD-ROM si sono conformati a questa API.
Il mio libro Linux Multimedia Guide, si addentra un po' nell'argomento di programmare per i drive CD-ROM, specialmente per funzioni audio. Si veda la fine della sezione Riferimenti.
Se avete un CD-ROM che ha nomi di file lunghi sotto Windows ma non sotto Linux, può essere stato formattato usando il filesystem proprietario Joliet di Microsoft. Si veda la prossima domanda per una soluzione.
Microsoft ha creato un'estensione al formato ISO chiamata Joliet. Aggiunge il supporto per nomi di file lunghi codificati usando il formato UNICODE 16-bit.
Dalla versione 2.0.34 il kernel di Linux prevede il supporto per le estensioni Joliet. Dovete abilitare tale supporto nel kernel.
Se volete visualizzare i nomi di file con caratteri del linguaggio nativo correttamente, dovete abilitare nel kernel il supporto per l'appropriato set di caratteri NLS ISO8859.
Alcuni CD audio sono ``enhanced'' (migliorati) con dati aggiuntivi. Tipicamente troverete che questi CD hanno le solite tracce audio insieme con una traccia dati che può essere montata come un filesystem ISO9660.
Un CD enhanced che ho potuto esaminare aveva applicazioni Microsoft
Windows e Apple Macintosh (che ovviamente non funzionavano
direttamente sotto Linux, sebbene abbia avuto un parziale successo
avviando l'applicazione Windows con l'emulatore WINE). C'erano anche
alcune immagini GIF che potevano essere visualizzate usando un
programma standard come xv
e alcune animazioni in formato
QuickTime, eseguibili con xanim
. Era un CD multisessione, di
cui alcuni drive CD-ROM molto vecchi non supportano la lettura. Sul
disco v'era un file readme.txt
contenente delle FAQ sugli
Enhanced CD.
I DVD-ROM compatibili SCSI e ATAPI dovrebbero funzionare sotto Linux per la lettura di dischi formattati col filesystem ISO-9660. In altre parole funzioneranno come un lettore CD-ROM (eventualmente molto più capiente).
Molti dischi DVD-ROM usano il filesystem UDF. Al momento della stesura questo documento, questo aspetto era ancora in fase sviluppo. Le patch per il kernel sono disponibili su http://trylinux.com/projects/udf/.
Comunque, non sono a conoscenza di alcun supporto per riprodurre video DVD codificati in MPEG-2 sia via software sia in unione a un decoder hardware. Apparentemente la documentazione per il formato di codifica può essere ottenuta solo ad alto costo e sottostando a un accordo di non diffusione. Un altro aspetto è che la decodifica MPEG tipicamente usa hardware proprietario per il quale i produttori potrebbero non essere diaposti a rilasciare le specifiche per la programmazione. Questi fattori possono precludere la produzione di qualsiasi software per i video DVD per linux che voglia essere disponibile gratuitamente e liberamente.
I CD-RW che rispettano le specifiche SCSI ed ATAPI dovrebbero funzionare sotto Linux per dischi formattati con un filesystem ISO- 9660. Questo include la possibilità di scrivere sul disco.
Molti dischi CD-RW usano il filesystem UDF. Al momento della stesura di questo documento, questo aspetto era ancora in sviluppo. Le patch per il kernel sono disponibili su http://trylinux.com/projects/udf/.