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