Anterior Siguiente Indice

2. Configuración del Kernel

El primer paso es configurar el kernel para que Linux vea nuestras grabadoras y/o lectores correctamente, tanto en SCSI como en IDE y ATAPI por puerto paralelo, que aunque parezca que no, tiene su complicación.

En los dos últimos casos hay que hacer ciertos chanchullos, aunque el que más pueda liar al personal probablemente sea el 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, que os veo venir; hay que recompilar el kernel con una serie de opciones y modificaciones que se describen y explican en su apartado correspondiente.

Para empezar 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, ejecutamos make mrproper para eliminar todos los binarios, incluso las configuraciones; es decir, una limpieza exhaustiva para 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, n y/o m 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.

2.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 yo no me voy a parar, ya que para eso hay un hermoso documento llamado SCSI COMO al cual podéis hacer referencia en caso de dudas y o mal configuración de vuestro dispositivo SCSI.

De todas formas se ha comprado un equipo con placa madre con SCSI integrada o una controladora SCSI en la que ha puesto el CD, y el dichoso guindous 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 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 o el nombre del controlador de guindous (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 JAZZ 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 guindous no es posible hasta el 98) ya que al cargar su módulo, la controladora inicializará y escaneará los dispositivos de nuevo sin necesidad de reiniciar el ordenador para que los detecte; si la tiene interna, añada el soporte directamente en el kernel y se ahorra trabajo en cargar los módulos.

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 lleva el 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 con 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 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 el X-CD-Roast podrá usar los dispositivos /dev/sr0 hasta /dev/sr15, que también puede usar en lugar de los /dev/scdX, que usan otros programa, y con el cdrecord a mano. 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 tienes el kernel 2.2.X 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 en otro sistema en su ordenador.

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.

2.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 la configuración del Kernel para las grabadoras IDE. Lo primero es aplicar una pequeña modificación al Kernel, ésto es necesario si tiene una grabadora Regrabable del tipo HP como las 7100 y las 7110 o superiores, que consiste en aumentarle el tiempo de espera del IRQ, ya que si no lo hacemos no cerrará los CDs, o al intentar cerrarlos, es decir, al escribir la Tabla de Contenidos ( TOC, ver mas abajo),se detendrá con un error y habremos perdido el CD sin forma de recuperarlo.

Pues bien, la modificación consiste en irnos al archivo ide.h que se encuentra en /usr/src/linux/drivers/block, y buscar la siguiente línea:

#define WAIT_CMD        (10*HZ) /* 10sec  - maximum wait for an IRQ to happen */

que tenemos que modificarla hasta 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 que pongamos 400 en vez de 1000 funciona, pero no lo he probado presonalmente. De todas formas, en el paquete de los fuentes del cdrecord viene un archivo llamado README.ATAPI, en que se dice que haga exactamente esto, así como hacer funcionar estas grabadoras con la versión antigua del 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, para que así los programas detecten nuestra grabadora IDE como una 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, las grabadoras reciben comandos estandarizados (mediante 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 datos a través del bus IDE a 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, güindous 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 parece que no o al menos no se nota de forma excesiva; lo único recomendable es dejarle 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 oír CD-AUDIO 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 que le dé 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 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 no 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 fallos (PUF) para más detalles).

2.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? Pues gracias al cdrecord y a los desarrolladores del kernel que han introducido como novedad de los kernels 2.1.x (de desarrollo) el soporte para unidades ATAPI por puerto paralelo como unidades de CD-ROM y discos duros. q

Para esto deberemos tener el kernel 2.0.35 o superior con la configuracion 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 menu Integrated Peripherals, si tienes 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. Y configurar el puerto de impresora en modo EPP, si no lo seleccionamos de este modo 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 selecconar como módulo el parametro Parallel port IDE device support. Seguidamente seleccionar, al menos, también como módulo 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 asegurese de que funciona bien como módulo antes de hacerlo.

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 o kerneld.

Comenzamos por cargar el modulo paride, el módulos epat 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 el cdrecord (equivale al módulo sg en SCSI) y el pcd para usar la grabadora como unidad lectora.

Para usar nuestra unidad como lector debemos montar la unidad con la orden:

mount /dev/pcd0 /cdrom

y 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 dispones del un kernel de la serie 2.1/2.2 antes de usar los controladores de cualquier dispositivo de puerto paralelo has 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 al mismo tiempo (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.

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

2.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. ¿Como?¿En un fichero? Si, así es, y para eso solo necesitamos dos cosas, un dispositivo que hay en el kernel y el comando "mount".

Para asegurarnos de que incluimos esta opción en el kernel o como módulo entramos en la configuración del kernel mediante make menuconfig, y accedemos al menú Floppy, IDE, and other block devices y justo bajo a Additional Block Devices se encuentra Loopback device support a la cual recomiendo ponerlo como módulo, y si en el menú principal Filesystems tienes compilada en el núcleo 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 la deberás cargar a mano, sino no, no se cargará automáticamente ningún modulo y nos dará error. Para cargarla manualmente deberemos teclear lo siguiente 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 image.raw /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 solo lectura, por lo que no podrá modificarlas de ninguna manera, claro, a menos que genere otra imagen nueva. Si la imagen es de un sistema de ficheros, por ejemplo, Ext2 si podrá leer y grabar en ella sin problemas. Como puede observar no he puesto el comando -t iso9660 para especificarle que es una imagen ISO9660, ya que automáticamente la detecta.

Si tiene pensado hacer imágenes con 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 2.1/2.2 activar Microsoft Joliet CD-ROM extensions y dentro del submenú Native Language Support activar los Codepage 437 y 850 y en NLS ISO 8859-1 que también se encuentran en los kernel 2.0.

Yo recomiendo al menos incluir esto como parte del kernel de arranque, aunque si digamos que no te sobra mucha memoria incluyelos como módulos, que el kernel se encargará de cargarlos cuando sea necesario, el resto de Codepages y NLSs te recomiendo que los pongas como módulos si decides activarlos, aunque los mas utilizados son los que te acabo de indicar.


Anterior Siguiente Indice