Prácticamente todos los comandos mount
soportan la opción
user. Introduciendo una línea como la que sigue en el fichero
/etc/fstab
:
/dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro
...cualquier usuario podrá montar y desmontar la unidad, de la siguiente manera:
mount /mnt/cdrom
umount /mnt/cdrom
El disco, por razones de seguridad, será montado con algunas limitaciones (p.e. los programas no podrán ser ejecutados, los archivos de dispositivo se ignorarán...); esto puede resultar demasiado restrictivo en algunos casos.
Otra opción es conseguir el paquete usermount
, que habilita para
los usuarios normales el montado y desmontado de dispositivos extraíbles,
tales como discos y CDROM, pero que restringe el acceso a otros (como las
particiones del disco duro). Se puede encontrar en casi todos los bancos
de archivos.
En
ftp://ftp.cdrom.com
se halla el código fuente mount.c
, que permite el montado y
desmontado de CD-ROM (únicamente) por usuarios normales.
Un disco no puede ser desmontado mientras haya algún proceso accediendo a
la unidad, lo que incluye el hecho de que nos encontremos en alguno de los
directorios asignados a la misma. Si no puede identificar el proceso que
la esta usando, puede emplear el comando fuser
, tal y como se
muestra a continuación:
umount /cdrom
umount: /dev/hdd: device is busy
fuser -v /cdrom
USER PID ACCESS COMMAND
/mnt/cdrom tranter 133 ..c.. bash
Para ello es preciso añadir una línea al archivo /etc/exports
.
Para más detalles, consulte la página man exports(5)
.
Para instalar Linux, el método más común es utilizar un disco de arranque. Algunas distribuciones vienen preparadas para arrancar el núcleo de Linux utilizando un CDROM directamente desde el DOS.
Michael Fulbright (
msf@redhat.com
) explica cómo, con un CDROM, la ROM-BIOS y una
unidad ATAPI es posible arrancar directamente desde el CD. La última
version de mkisofs
también soporta la creación de dichos CDRoms.
Para ello, se ha tenido que añadir una serie parches para soportar el
estándar de discos de arranque El Torito.
Heiko Eissfeldt (
heiko@colossus..escape.de
) y Olaf Kindel han escrito una
utilidad que lee y graba los datos de audio archivos de formato
.wav
. El paquete se llama cdda2wav.tar.gz
y se
encuentra en sunsite.unc.edu
.
A consecuencia del rápido desarrollo que están experimentando las unidades
de CD-ROM, es casi imposible hacer una lista completa de los modelos que
soportan la extracción digital de audio. Lo mejor será que consiga la
última versión de paquete cdda2wav
y lea la documentación.
Para más información al respecto, visite la página web
http://www.tardis.ed.ac.uk/~psyche/cdda/
y las FAQ de
alt.cdrom
(sección de Referencias).
find
no funciona correctamente?Al utilizar discos formateados con el sistema ISO-9660, pero que carecen
de las Extensiones Rock Ridge, hay que añadir la opción -noleaf
al comando find
. Consulte la página del manual find(1)
para
más detalles.
(Hoy en día todos los CDs de Linux emplean las Extensiones Rock Ridge, por lo que este problema se planteará raras veces.)
El paquete X-CD-Roast es una aplicación gráfica diseñada para la
utilización de grabadoras de CD-ROM bajo Linux. Se puede encontrar en
ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/xcdroast-0.95.tar.gz
Consulte también el CD-Writing HOWTO, que está disponible en
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/CD-Writing.html
ó
http://sunsite.unc.edu/LDP/HOWTO/CD-Writing.html
.
mount: Read-only file system
(sistema deficheros de solo-lectura)" al montar un CD-ROM?El CD-ROM es un medio de almacenamiento de sólo-lectura. Con alguno de los
núcleos más antiguos se podía montar CDROM para lectura/escritura; los
intentos de escribir datos en el CDROM eran ignorados. Esto ha sido
corregido a partir del núcleo 1.1.33, con el que los CDROM han de montarse
como de sólo-lectura (con la opción -r del comando mount
).
A partir de la versión 1.1.38 del núcleo, el controlador sbpcd
realiza automáticamente la extracción del CD al ser desmontado. Al apagar
el sistema, se desmonta el CD, lo que provoca su extracción. Esta
característica resulta de utilidad a la hora de cambiar los CDs. Si la
bandeja está abierta, cuando monte un CD se cerrará automáticamente.
He comprobado que esto ocasiona algunos problemas al utilizar algunos
programas (p.ej. el cdplay
y el workbone
). A partir del núcleo
1.1.60 es posible controlar dicha característica por medio de software. Un
programa de ejemplo viene incluído con el archivo de documentación del
sbpcd
(o también puede usar el programa
ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/eject-1.4.tar.gz
.
Ese disco ``quisquilloso'' seguramente sea un disco XA (como todos los
PhotoCD y los ``one-offs'' generados con unidades CD-R). La mayor parte de
los controladores del núcleo no soportan discos XA, pero seguramente podrá
encontrar algún parche para añadir dicho soporte en alguno de los
múltiples bancos de archivos. El sbpcd
sí que soporta discos XA. Si
utiliza dicho controlador, podrá comprobar si el disco es efectivamente
XA, de la siguiente manera: Edite el fichero sbpcd y active la
visualización de la "Tabla de Contenidos" (Table of Contents) (TOC).
Compile, instale y arranque de nuevo el núcleo. Ahora, cada vez que monte
un disco, podrá leer la información de la Tabla de Contenidos (bien en la
pantalla o en un fichero log). Si el primer valor que aparece en la
primera linea es un "20", quiere decir que se trata de un disco XA. Dicho
valor sera "00" cuando monte discos normales. Si en la Tabla de Contenidos
hay varias pistas, significa también que se trata de un disco XA.
(gracias a Eberhard Moenkeberg por esta información)
Otras posibilidades que pueden imposibilitar la lectura de CDs:
Hay much*s usuarios satisfech*s del funcionamiento de las intercambiadoras
de CD-ROM multi-disco SCSI. Es probable que deba activar la opción "Probe
all LUNs on each SCSI device" durante la configuración del núcleo. Al
menos un usuario ha tenido que incrementar el valor SCSI timeout en el
controlador del núcleo. Las intercambiadoras Nakamichi MBR-7 de 7 discos y
la Pioneer de 12 discos funcionan correctamente. También están soportadas
las intercambiadoras multi-disco EIDE/ATAPI. El soporte implementado para
algunas unidades (utilizando la función CDROM_SELECT_DISC ioctl) con el
núcleo 2.0 resulta un tanto rudimentario. En el archivo de documentación
del controlador del núcleo IDE-CD viene incluído el código fuente de un
programa para seleccionar el plato, o también puede utilizar una versión
reciente del programa eject
, descrito anteriormente.
/cdrom: Permission denied
"Algunos CDs poseen archivos que se encuentran en directorios cuyo permiso
de lectura está restringido al modo root
. Algo así ocurría con la
edición de InfoMagic de Marzo de 1995.
El siguiente parche, cortesía de Christoph Lameter (
clameter@waterf.org
) permite
solventar el problema.
From: clameter@waterf.org (Christoph Lameter)
Newsgroups: comp.os.linux.setup
Subject: InfoMagic Developers Set: Fix for CD-ROM permissions
Date: 12 Apr 1995 20:32:03 -0700
Organization: The Water Fountain - Mining for streams of Living Water
NNTP-Posting-Host: waterf.org
X-Newsreader: TIN [version 1.2 PL2]
En la edición de InfoMagic Developers CD-ROM Set de Marzo de 1995 se plantean una serie de problemas con la información almacenada en directorios cuyos permisos quedan restringidos al root.
rwx
para root y ningún
permiso para grupo/usuario. ¡Sólo como root es posible acceder a ellos! Yo
mantengo una BBS y necesito tenerlos disponibles para otr*s. Hay varias soluciones. El problema estriba en que, por lo común, estos arreglos cambian los permisos de todos los directorios del CD. El parche que viene a continuación sólo cambia los permisos para el directorio root del CD-ROM. Si quiere hacer correr partes de Linux directamente desde el CD-ROM, probablemente se vea en un aprieto tanto si todos los directorios pueden ser accedidos para lectura por todos los usuarios como si son propiedad del root.
Con este parche, los permisos del directorio root quedarán fijados como
r-xr-xr-x
, y los valores de propietario/grupo serán los indicados a
través de las opciones uid y gid del comando mount
.
Para aplicarlo:
cd /usr/src/linux/fs/isofs
patch < parche
...y recompile el núcleo (puede que tenga que aplicar el parche a mano, dependiendo de su versión del núcleo).
Este es el fichero parche
:
--- inode.c.ORIG Wed Apr 12 17:24:36 1995
+++ inode.c Wed Apr 12 17:59:12 1995
@@ -552,7 +552,15 @@
numeros de la estructura de inodos */
if (!high_sierra)
- parse_rock_ridge_inode(raw_inode, inode);
+ { parse_rock_ridge_inode(raw_inode, inode);
+ /*comprobacion de los permisos de acceso de propietario CL al directorio root*/
+ if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino)
+ { /*sustitucion de los permisos de propietario por los introducidos mediante el comando mount*/
+ inode->i_uid = inode->i_sb->u.isofs_sb.s_uid;
+ inode->i_gid = inode->i_sb->u.isofs_sb.s_gid;
+ inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR;
+ }
+ }
#ifdef DEBUG
printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_extent);
@@ -805,4 +813,3 @@
}
#endif
-
Tenga en cuenta que este parche es algo antiguo y probablemente no podrá aplicarse tal cual a versiones más recientes del núcleo (a partir de la 2.0). Consulte también la sección referente a los ficheros ocultos.
¿Qué significa cuando obtengo un mensaje del controlado IDE de la manera
hdxx: code: xx key: x asc: xx ascq: x
?
Se trata de un mensaje de status/error de la unidad IDE. Por defecto el
controlador IDECD envía a una salida las informaciones, en vez de gastar
espacio del núcleo con mensajes de error. Esto puede cambiarse, para poder
visualizar los mensajes de error directamente, editando el archivo
/usr/src/linux/drivers/block/ide-cd.c
, cambiando el valor de
VERBOSE_IDE_CD_ERRORS
a 1, y recompilando el núcleo.
He aquí un método. Estas instrucciones miden el tiempo que se tardan en leer 1500K desde el 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
El rango de transferencia a velocidad sencilla es de 150kb/segundo, osea, que tardará unos 10 segundos. A doble velocidad, tardará 5 segundos; a cuádruple, 2.5 segundos...etc
El valor más fiable es el de "real", que en nuestro ejemplo indica una unidad de doble velocidad. Vd puede incrementar la cantidad de datos transferidos para así obtener un valor más exacto (los datos no se almacenan). Lo mejor sería ejecutar varias veces el comando y, a continuación, hallar la media.
Lo más seguro es que el disco de arranque utilizado para instalar Linux haya reconocido su unidad de CD-ROM. Pero una vez terminado el proceso de instalación en el disco duro o en floppy y tras reinicializar el ordenador, el CD-ROM deja de ser reconocido.
Esto suele ser debido a que, con algunas distribuciones de Linux, el
núcleo que se instala en el disco duro o floppy no es necesariamente el
mismo del disco de arranque. Vd seleccionó un disco de arranque adecuado
al hardware de su CD-ROM, mientras que el núcleo que acaba de instalar es
un núcleo "genérico" sin soporte para CD-ROM. Puede comprobarlo siguiendo
los pasos detallados en la sección
Problemillas (p.e. empiece
comprobando el archivo /proc/devices
).
La solución pasa por recompilar el núcleo, asegurarse de incluir los
controladores necesarios para su unidad y todo lo demás (p.e. controlador
SCSI, sistema de ficheros ISO-9660). Consulte
http://www.insflug.org/howtos/online/kernel/Kernel-Como.html
.
Si ha pasado alguna opción desde la línea de comandos al disco de arranque
(boot disk) (p.e. "hdc=cdrom
"), deberá añadirla a su fichero de
configuración de arranque (/etc/lilo.conf
).
Algunos CDs tienen archivos que están determinados como ``ocultos''. Normalmente, no son visibles. Si monta el CD-ROM con la opción ``unhide'', deberían de hacerse accesibles (esto parece no estar documentado en lugar alguno).
Si pretende escribir su propia aplicación, p.e. un reproductor de CDs, necesitará entender la API (Interfase para la Programación de Aplicaciones) del Linux.
En un principio, los controladores de CD-ROM usaban sus propias funciones
ioctl()
para dar soporte a las características específicas de cada
unidad.
Esto se describe en los archivos de cabecera, p.e. en
/usr/include/linux/sbpcd.h
. Puesto que muchos controladores
estaban basados en otros controladores, las interfases, aunque no
idénticas, sí tenían mucho que ver.
Recientemente ha surgido una iniciativa encabezada por David van Leeuwen
(
david@tm.tno.nl
)
dirigida a la estandarización de la API de las unidades de CDROM. Se trata
de asegurar el que todos los controladores presenten el mismo
comportamiento. Esto se detalla en el archivo
/usr/src/linux/Documentation/cdrom/cdrom-standard.tex
. Muchos
controladores del núcleo ya lo soportan. Se espera que para futuras
versiones del núcleo (3.0?) todos los controladores de CDROM empleen la
API estándar.
En mi libro, Linux Multimedia Guide (Guia Linux Multimedia), entro en detalle acerca de la programación de unidades de CDROM, especialmente de cara a las funciones de audio. Vea la sección Referencias.
Si tiene un CDROM con nombres de fichero largos bajo Windows, pero no bajo Linux, es que ha sido formateado empleando el sistema de ficheros Joliet, sistema propietario de Microsoft. Siga leyendo.
Microsoft ha creado una extensión del formato ISO-9660 llamada Joliet. A
la hora de escribir este documento, el soporte para Joliet se encuentra
bastante avanzado y los parches se pueden obtener en
http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html
o
ftp://www-plateau.cs.berkeley.edu/pub/multimedia/linux/joliet/
.