El primer paso es configurar el kernel para que Linux vea nuestras grabadoras y/o lectores correctamente, tanto si son SCSI como IDE o ATAPI por puerto paralelo.
En los dos últimos casos hay que hacer ciertos «chanchullos», aunque el que más pueda resultar dificultoso sea configurar el kernel para grabadoras IDE, ya que no basta conectarla, decirle que es un dispositivo IDE/ATAPI CD-ROM y directo a grabar como un poseso; hay que recompilar el kernel con una serie de opciones y modificaciones que se describen y explican en su apartado correspondiente.
Hay que saber cómo configurar el kernel, para ello entramos en el
directorio /usr/src/linux
, donde normalmente se encuentran los
fuentes. Para asegurarnos de que nada raro pueda pasar, ejecutaremos
make mrproper
lo que elimina todos los binarios, incluso las
configuraciones; es decir, una limpieza exhaustiva que asegure que no haya
ninguna interferencia de nada de lo anterior que pueda hacer que el nuevo
kernel no compile o nos dé errores.
Una vez hecho esto, teclearemos make menuconfig
si queremos interfaz
ncurses para el shell o make xconfig
desde un terminal de X-Window
para hacer lo mismo en X con interfaz TCL/TK, lo que quiere decir que si
no tiene dichas librerías no podrá compilar los programas respectivos.
Podrá recurrir en última instancia al viejo programa de configuración, un
script que se invoca desde la consola con make config
y en el que
tendrá que poner y (si)
, n (no)
y/o m (módulo)
el los
lugares en donde corresponda en el prompt, ya que éste no permite volver
hacia atrás; si quiere hacerlo tiene dos opciones, una pulsar
Control+C
y cancelar la configuración volviendo a empezar, o terminar
de configurar y volver a empezar, (lo configurado anteriormente se
mantiene), y rectificar lo que haya dejado o haya puesto mal.
Si tiene mas dudas sobre cómo configurar el núcleo del sistema le remito
al documento Kernel Como que se encuentra en
http://www.insflug.org
.
Voy a suponer que no tiene ni la más remota idea de qué es el sistema SCSI, cosa en la que tampoco voy a profundizar, ya que para eso hay un hermoso documento llamado SCSI-HOWTO al cual puede referirse en caso de dudas y o problemas de configuración del dispositivo SCSI.
El caso es que se ha comprado un equipo cuya placa madre trae SCSI integrada, o una controladora SCSI en la que ha puesto el CD, y el dichoso windows lo ha configurado a la primera o los amables chicos de la tienda de informática en donde acaba de comprarlo han instalado y configurado todo.
Lo primero es saber qué tipo de controladora SCSI es, me refiero a su chip principal; las controladoras más comunes son Adaptec, Advansys y las basadas en los chip Symbios 53c8xx (NCR), pero si no tiene ninguna de éstas no se preocupe, el kernel lleva soporte para muchas más. Puede saber qué controladora tiene mirando simplemente los manuales, mirando el chip principal de la tarjeta o el nombre del controlador de windows (sólo en última instancia).
Si el controlador no corresponde exactamente al modelo que aparece en el kernel, seguramente funcionará con alguno de los que lleva genéricos para varios tipos de controladoras con las mismas características. Puede compilar como módulo las que más se parezcan al suyo y luego ir probando los módulos hasta que dé con el que corresponda. Si al cargar algún módulo nota que se le ha quedado el ordenador colgado, no lo vuelva a intentar con ese, ya que algunos controladores que no corresponden al hardware instalado son cargados de todos modos produciendo estas desagradables situaciones.
Acto seguido nos vamos a la configuración del kernel y entramos en
SCSI Support
, lo que luego nos dejará señalar las demás opciones que
son para dar soporte genérico, y a unidades de CD-ROM, Discos Duros y
cintas, de las cuales nos interesa el soporte genérico, SCSI generic
support
, que proporciona el interfaz ASPI, (para poder grabar) y el
SCSI CD-ROM support
, para leer unidades de CD-ROM, incluidas
grabadoras y DVDs. Si dispone de un disco duro, ZIP o JAZ SCSI deberá
responder y
también si quiere poder usarlo.
Si por casualidad tiene la grabadora como unidad externa, y la
controladora SCSI dedicada en exclusiva a ella, recomiendo que ponga
el driver de la controladora como módulo, es decir, poniendo m
en
lugar de y
, ya que le permitirá cargar/descargar a voluntad todos los
módulos de soporte SCSI cuando no los necesite, y apagar la unidad externa
cuando no la esté usando (cosa que con windows no es posible hasta el W98)
ya que al cargar su módulo, la controladora inicializará y escaneará los
dispositivos de nuevo sin necesidad de reiniciar el ordenador para
detectarlos; si la tiene interna, añada el soporte directamente en el
kernel y se ahorra trabajo en cargar los módulos.
Tenga en cuenta no obstante, que si carga, descarga, y vuelve a cargar el
módulo sin reiniciar el equipo, la controladora recibirá un número de host
distinto, y los parámetros que tengamos para cdrecord
configurados no
serán válidos.
Si no puede descargar el soporte SCSI por tener otros dispositivos dependiendo de él (porque su disco duro raíz sea SCSI, por ejemplo, o por no poder tenerlo como módulo por las razones que sean) también puede activar y desactivar dispositivos a voluntad, incluidas grabadoras, cintas, escáneres, etc. sin necesidad de descargar el módulo. vea la sección Activación y desactivación de dispositivos SCSI al vuelo.
Así que una vez hecho esto pase al apartado siguiente para especificar el driver de su controladora. Si le ha dicho antes, en soporte SCSI, que lo compile como módulo solo le dejará seleccionar como módulo el driver del controlador.
Espero que no se equivoque en escoger el driver para su controladora,
porque si es así le tocará elegir otro y recompilar solo los módulos. Una
vez recompilados los nuevos módulos, previa configuración, sólo tendrá que
probarlos; si ha incluido soporte SCSI en el kernel junto a un
controlador, éste detectará el dispositivo y podrá accederse a él desde
los ficheros de dispositivo /dev/scdX
o /dev/srX
(estos
últimos se crean, si no lo están ya, a través de un script que se puede
encontrar junto a los programas de grabación, así como con el script
/dev/MAKEDEV
, o bien el que trae el X-CD-Roast
(sección
X-CD-Roast) o bien a mano con el comando
mknod
con este bucle:
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;
do mknod /dev/sr$i b 11 $i;
done
Del mismo modo, si lo ha hecho como módulo, sólo tendrá que cargar los módulos SCSI en el siguiente orden:
scsi_mod.o
que es el driver principal del que cuelgan
todos:
insmod scsi_mod
sg.o
y
el de soporte de CD-ROMs SCSI, sr_mod.o
:
insmod sg
insmod sr_mod
insmod
al driver que corresponda a su
controladora, el cual sacará un debug de lo que encuentre, de tal forma
que las unidades de CD corresponderán a /dev/sr0
para el primer
dispositivo CD-ROM SCSI, /dev/sr1
para el segundo, etc,
independientemente del bus o ID SCSI en el que estén.
De todas maneras si hace un cat
al archivo /proc/scsi/scsi
podrá ver qué ID SCSI se tienen sus dispositivos, dato indispensable para
determinar los interfaces genéricos /dev/sgX
.
Si instala X-CD-Roast
podrá usar los dispositivos /dev/sr0
hasta /dev/sr15
; también puede usarlos en lugar de los
dispositivos /dev/scdX
, que usan otros programas, como
cdrecord
. Estos son los nuevos dispositivos que se usarán a partir de
ahora para referirse a las unidades de discos ópticos tipo ROM como los
CD-ROM y DVD-ROM.
Recomiendo que active el soporte kerneld
, e introduzca el alias
apropiado a la controladora en /etc/conf.modules
, para que la
carga de los módulos sea automática. Si tiene dudas sobre esto, lea el
Kernel-Como para mejor referencia. Si ya tiene una distribución con
el kernel 2.2.XX
no se cargará el kerneld
, el propio kernel hace
las funciones del kerneld
.
Lea también la sección Configuración del kernel para grabadoras IDE porque explico algunas cosas más que pueden servir para solucionar posibles problemas que puedan ocurrir y que son comunes tanto para IDE como para SCSI. Y porqué no, para cuando un amigo se instale una grabadora IDE...
La forma más limpia de hacer que el kernel active o desactive sin necesidad de resetear el sistema, o cargar/descargar módulos, dando igual si está compilado el soporte como módulo o no, es mediante el siguiente método.
El activar o desactivar dispositivos SCSI a voluntad sin necesidad de demasiados aspavientos puede ser más práctico de lo que parece: suponga que su grabadora es externa, y la mantiene apagada mientras no la usa, lo mismo sucede con un scanner, unidad ZIP, JAZ, CDROMs o unidades de cinta externa, dando por supuesto que son SCSI, claro está.
Advertencia: Cuando hablamos de activar, nos referimos al caso en que el dispositivo está conectado externamente a la controladora, pero en un principio apagado, y una vez encendido, deseamos activar; no que cualquier controladora SCSI mediante este método soporte conexión/desconexión en caliente de dispositivos, tenga cuidado o puede desde corromper datos a estropear definitivamente dispositivos del bus SCSI.
Supongamos que la grabadora está en la primera o única controladora SCSI del sistema, y que la grabadora tiene asignado el ID SCSI 4.
si ejecutamos el comando:
echo "scsi add-single-device 0 0 4 0" > /proc/scsi/scsi
El kernel activará la grabadora.
En este caso, el primer 0
especifica la primera controladora, el
segundo el canal de la controladora (a menos que tenga una Wide o UW SCSI.
siempre será 0
, ya que sólo tiene uno; no confundir canal con
conector) el 4
especifica el ID SCSI, y el último 0
el LUN. (Ver
sección
Notación estándard)
y si ejecutamos
echo "scsi remove-single-device 0 0 4 0" > /proc/scsi/scsi
La desactivaremos.
El problema de las grabadoras IDE es que no hay software específico que detecte y grabe en estos dispositivos, ya que todos los programas se basan en la interfaz SCSI (ASPI) del kernel para acceder a éstos.
Por esta razón, no es tan sencillo configurar del Kernel para las grabadoras IDE. Lo primero es aplicar una pequeña modificación al Kernel, sólo necesario si tiene una grabadora Regrabable HP como las 7100 o 7110 o superiores.
La modificación, que consiste en aumentarle el tiempo de espera del IRQ, es absolutamente necesaria ya que si no lo hacemos no cerrará los CDs, o al intentar cerrarlos, es decir, al escribir la Tabla de Contenidos, se detendrá con un error y habremos perdido el CD sin forma de recuperarlo.
Para efectuarla, vamos al archivo ide.h
que se encuentra en
/usr/src/linux/drivers/block
, y buscamos la siguiente línea:
#define WAIT_CMD (10*HZ) /* 10sec - maximum wait for an IRQ to happen */
que tenemos que modificar de modo que quede así:
#define WAIT_CMD (1000*HZ) /* 1000sec - maximum wait for an IRQ to happen */
Con lo cual solucionamos el problema. Parece ser que con poner 400
en
vez de 1000
funciona, pero no lo he probado personalmente. De todas
formas, con el paquete de los fuentes del cdrecord
viene un archivo
llamado README.ATAPI
, en que se dice que haga exactamente esto, así
como cómo hacer funcionar estas grabadoras con la versión antigua de
cdrecord
, es decir, la 1.5
, aplicándole un serie de parches al
programa y al kernel.
Una vez realizada la modificación debe configurar el kernel, ir al menú
Floppy, IDE and other block devices
, desactivar el soporte para
IDE/ATAPI CD-ROM
(¡OJO, NO el Enhanced IDE/MFM/RLL
disk/cdrom/tape/floppy support
!) y activar la emulación SCSI que sólo
hay en los últimos kernel, versiones 2.0.31
en adelante y 2.2.XX
,
para que así los programas detecten nuestra grabadora IDE como SCSI y
funcione como tal.
Si activamos el soporte IDE/ATAPI para las unidades de CD-ROM el kernel no detectará nuestra grabadora como un dispositivo SCSI y habremos perdido el tiempo. Hacer que a nuestra grabadora la vean los programas como si fuera SCSI es muy sencillo, y se basa en que las grabadoras reciben comandos estandarizados (pertenecientes al interfaz ASPI, Advanced SCSI Programming Interface) para grabar que por casualidad son específicos de los SCSI; de esta forma, con la emulación lo que hacemos es que se puedan enviar este tipo de comandos a través del bus IDE de nuestra grabadora.
Hasta el momento que he tenido para probarlo, funciona perfectamente, tan bien, que se consigue un rendimiento similar al de una SCSI auténtica.
De la misma forma, windows lo que hace es emular SCSI con las IDE, lo que le trae una pequeña serie de inconvenientes como cierto software que no funciona bien o el excesivo consumo de recursos del sistema.
Por lo visto las grabadoras IDE consumen muchos recursos, más que las SCSI, pero en linux con la emulación la carga parece menor, o al menos no se nota de forma excesiva; lo único recomendable es dejar un puerto IDE para ella sola, según recomiendan los fabricantes; lo mas común suele ser el secundario.
Con esto nos aseguramos de que no haya cualquier posible interferencia del otro dispositivo que haya conectado al puerto de la grabadora (solo por seguridad); yo he probado a tener el lector y la grabadora en el mismo interfaz, esto se puede hacer pero recomiendo que desmonte la unidad lectora de CD para que no haya interferencias; se puede usar, por ejemplo, para escuchar CDs de música mientras se graba el CD, si tiene botón de reproducción, claro esta ;).
He recibido noticias de que hay gente que tiene la grabadora y la unidad lectora colocadas en la misma interfaz haciendo copias directas sin muchos problemas. Antes de ponerlo así, recomiendo realizar muchas pruebas antes de dejarlo de forma fija.
El último paso para configurar el kernel es ir a la sección SCSI
support
e incluir el soporte SCSI en el kernel, junto al SCSI
generic
y el soporte SCSI para los CD-ROM (Ojo, no lo haga como módulo,
hay un fallo en la configuración para la emulación SCSI a la hora de
incluir el soporte genérico SCSI en el kernel, por lo que si no lo
incluimos manualmente en él no podremos compilar el nuevo kernel y es
posible que se pase un buen rato dándole vueltas a lo mismo).
Gracias a este procedimiento ahora nuestra grabadora y/o lectora/as aparecerán como dispositivos SCSI en vez de IDE.
No es nada recomendable hacer cosas con el disco duro «origen» mientras se está grabando, si lee datos de un disco secundario podrá trabajar con el principal, pero no recomiendo abusar de su uso ya que es posible que pueda haber alguna pequeña interferencia con el DMA, aunque no suele ser muy común. Es decir, deje el disco duro sólo para la grabación.
Otra cosa a tener en cuenta es que si no tiene un disco con extracción por DMA como un Fast ATA o Ultra DMA desactive del kernel el soporte para el chip Intel Tritón (I/II), ya que si hará interferencia el DMA con la emulación y dejará el controlador colgado, obligándole a resetear el ordenador con ese botón que se tiene algo olvidado la gente de linux. (Mirar en el apartado Preguntas de Uso Frecuente) para más detalles).
¿Grabadoras por puerto paralelo? ¿De verdad eso existe? Pues sí, existe, y
cómo Linux es capaz de usarlas, ¿Cómo? Gracias cdrecord
y a los
desarrolladores del kernel que han introducido como novedad de los núcleos
2.1.x: (de desarrollo) el soporte para unidades ATAPI por puerto
paralelo como unidades de CD-ROM y discos duros.
Para esto deberemos tener el kernel 2.0.35
o superior con la
configuración necesaria para que reconozca nuestra unidad externa, que se
describe a continuación:
Lo primero de todo es reiniciar el ordenador y entrar en la configuración
de la BIOS, y, normalmente, en el menú Integrated Peripherals
,
si tiene la controladora del puerto paralelo integrada en la placa base,
como en las últimas placas de 486 y en todas las placas de Pentium y
Pentium Pro/II. Configuraremos el puerto de impresora en modo EPP, si
no lo establecemos así, no habrá forma de que funcione.
Seguidamente, una vez arrancado nuestro sistema entrar en la configuración
del kernel en Floppy, IDE, and other block devices
y seleccionar como
módulo el parámetro Parallel port IDE device support
. Seguidamente
seleccionar, al menos, también como módulos los siguientes:
Parallel port ATAPI CD-ROMs
Parallel port generic ATAPI devices
Shuttle EPAT/EPEZ protocol
De esta forma ya tenemos los módulos para hacer funcionar la grabadora como unidad lectora; si lo prefiere puede incluirlo en el kernel, pero primero asegúrese de que funciona bien como módulo antes.
Seguidamente procedemos a la recompilación e instalación de los módulos en
su lugar, y sin necesidad de reiniciar (a no ser que se actualice partes
no compiladas como módulos) ejecute depmod -a
para crear las
dependencias de los módulos a fin de poder cargarlos con modprobe
,
kerneld
o kmod
.
Comenzamos por cargar el modulo paride
, el epat
, y por último el
módulo del driver que vayamos a usar; como nos interesa poder usar nuestra
grabadora tenemos que cargar el pg
para que nos reconozca la
grabadora cdrecord
(equivalente al módulo sg
en SCSI) y el
pcd
para usar la grabadora como unidad lectora (el equivalente a
sr
en SCSI).
Para usar nuestra unidad como lectora debemos montar la unidad con la orden:
mount /dev/pcd0 /cdrom
No obstante, si piensa utilizar su grabadora como lector, o para extracción de audio asiduamente, le recomiendo que lea la sección ¿Es recomendable utilizar la grabadora para extraer o leer?, su bolsillo lo acabará agradeciendo.
Si no existe el dispositivo /dev/pcd0
puede crearlo con el
siguiente bucle:
for i in 0 1 2 3 ; do mknod /dev/pcd$i b 46 $i ; done
Si dispone del un kernel de la serie 2.1.x
o 2.2.x
antes de usar
los controladores de cualquier dispositivo de puerto paralelo ha de cargar
el módulo parport.o
, el cual hace de interfaz para poder tener
cargados y operativos varios dispositivos de puerto paralelo al mismo
tiempo como unidades ZIP, discos y lectores/grabadores de CD e impresoras
y scanners simultáneamente (genial ¿¿¿no??? ;-)).
Como todavía no ha caído en mis manos una grabadora de este tipo no he podido hacer pruebas ni nada por el estilo, los detalles de la configuración del kernel los he elaborado a partir de lo que he podido recopilar leyendo por la Web y la ayuda prestada por colaboradores.
Apelo a la colaboración de la comunidad linuxera a fin de completar este apartado con lo que más le vaya haciendo falta, para estar a la altura de los anteriores; bien se lo merece el esfuerzo mostrado por las personas que hacen posible que dispositivos tan raros y minoritarios sean capaces de ser utilizados por Linux.
En linux (y en unix) existe la posibilidad de poder acceder, leer y
escribir en sistemas de archivos que no se encuentren en una partición o
en un disco, sino, en un fichero. ¿Cómo? ¿En un fichero? Si, así es, y
para eso solo necesitamos dos cosas, un dispositivo loopback
y el
comando mount
.
Para asegurarnos de que incluimos esta opción en el kernel como módulo
entramos en la configuración del kernel mediante make menuconfig
, y
accedemos al menú Floppy, IDE, and other block devices
; justo tras
Additional Block Devices
se encuentra la opción Loopback device
support
la cual recomiendo seleccionar como módulo, y si en el menú
principal Filesystems tiene seleccionada la opción Kernel
automounter support
al montar el archivo, este módulo se cargará
automáticamente; si la opción anterior está como módulo deberá cargarlo a
mano, sino no se cargará automáticamente ningún modulo y nos dará error.
Para cargarla manualmente deberemos teclear: insmod loop
.
También debemos asegurarnos que en dev
existan los ficheros
especiales de dispositivo loopX
:
brw-rw---- 1 root disk 7, 0 Jul 1 1996 /dev/loop0
brw-rw---- 1 root disk 7, 1 Jul 1 1996 /dev/loop1
brw-rw---- 1 root disk 7, 2 Jul 1 1996 /dev/loop2
...
si no los tiene, créelos con el siguiente bucle:
for i in 0 1 2 3 4 5 6 7; do mknod /dev/loop$i b 7 $i ; done
así, para montar una imagen para revisarla, en el directorio
/mnt/imagenesCD
haremos:
mount -o loop imagenCD.iso /mnt/imagenesCD
Una vez hecho esto, acceda al directorio /mnt/imagenesCD
y podrá
ver los contenidos de la imagen. Las imágenes ISO9660 son de sólo lectura,
por lo que no podrá modificarlas de ninguna manera, claro, a menos que
genere otra imagen nueva.
Como puede observar no he puesto el comando -t iso9660
para
especificarle que es una imagen ISO9660, ya que automáticamente lo debe
detectar.
Si tiene pensado hacer imágenes Joliet, le recomiendo que cargue en el
kernel el soporte para Joliet, en el menú principal Filesystems
,
activar el soporte para ISO9660 en los kernels 2.0.33
en
adelante, y en los superiores a 2.0.37
, o 2.1.x
o 2.2.x
activar Microsoft Joliet CD-ROM extensions
; y dentro del submenú
Native Language Support
activar Codepage 437
, 850
y NLS
ISO 8859-1
.
Recomiendo al menos incluir esto como parte del kernel de arranque, aunque si no le sobra mucha memoria inclúyalos como módulos, que el kernel se ocupará de cargarlos cuando sea necesario. El resto de Codepages y NLSs recomiendo que los ponga como módulos si decide activarlos, aunque los más utilizados son los mencionados anteriormente.