Anterior Siguiente Indice

3. Configuración del Kernel

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.

3.1 Configurar el Kernel para grabadoras SCSI

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:

  1. Módulo scsi_mod.o que es el driver principal del que cuelgan todos:
    insmod scsi_mod
    
  2. Seguido del módulo de soporte para SCSI genérico (proporciona el interfaz ASPI Advanced SCSI Programming Interface, para poder grabar CDs, o usar algunos programas con unidades de cinta, escáneres, etc) sg.o y el de soporte de CD-ROMs SCSI, sr_mod.o:
    insmod sg
    insmod sr_mod
    
  3. Por último, hacer un 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...

Activación y desactivación de dispositivos SCSI al vuelo

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.

3.2 Configurar el Kernel para grabadoras IDE

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).

3.3 Configurar el Kernel para grabadoras IDE-ATAPI por puerto paralelo

¿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:

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.

3.4 Otras opciones del kernel recomendables

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.


Anterior Siguiente Indice