next up previous contents index
Siguiente: Instalando controladores en módulos Subir: Actualizando e instalando software Anterior: Actualizando el núcleo   Índice General   Índice de Materias


Agregando un controlador de dispositivo al núcleo

La página [*] describe cómo usar una unidad Zip Iomega, para efectuar copias de seguridad. El soporte para este tipo de unidades, como para muchos otros dispositivos, no son generalmente compilados en los núcleos comúnes y corrientes de las distribuciones --la variedad de dispositivos es simplemente demasiado extensa como para poder respaldarlos a todos en un sólo núcleo utilizable. No obstante, el código fuente para el dispositivo de la unidad Zip en puerto paralelo, está incluido como una parte de código fuente del núcleo de la distribución. Esta sección describe cómo agregar el soporte para una unidad de puerto paralelo Iomega Zip, y cómo hacer para que conviva con una impresora conectada a otro puerto paralelo.

Para esto, usted deberá tener instalado, y haber construido exitosamente un núcleo, como el descrito en la sección anterior.

El poder elegir un dispositivo unidad Zip ppa, como una de las opciones del núcleo, requiere que se conteste Y a las respuestas apropiadas, durante el proceso make config, o sea, cuando se determina la configuración del núcleo a construir. En particular, el dispositivo ppa, requiere que se conteste ``Y'' a tres opciones:


\begin{tscreen}
SCSI support? [Y/n/m] Y \\
SCSI disk support? [Y/n/m] Y \\
IOMEGA Parallel Port Zip Drive SCSI support? [Y/n/m] Y
\end{tscreen}

Después de haber ejecutado exitosamente make config, con todas las opciones que quiere incluir en su núcleo, ejecutar make dep, make clean, y make zImage, para construirlo. Además, hay que decirle al núcleo, de qué manera instalar el controlador. Esto se efectúa a través de una línea de comandos al LILO. Como se ha descrito en la sección 4.2.2, el archivo de configuración del LILO /etc/lilo.conf tiene ``estrofas'', una para cada sistema operativo que domina y también directivas para ofrecer al usuario estas opciones, en el momento de arrancar el sistema.

Una de las directivas que LILO acepta es ``append='', la cual permite añadir información requerida por varios controladores a la línea de comandos. En este caso, el controlador de la unidad Iomega Zip ppa, requiere de una interrupción y una dirección del puerto de entrada/salida, sin uso. Esto es exactamente análogo a especificar dispositivos de impresoras separados, como LPT1: y LPT2: en MS-DOS.

Por ejemplo, si la impresora usa la dirección del puerto hexadecimal (en base 16), 0x378 (ver el manual de instalación de la tarjeta del puerto paralelo, si no se sabe cuál es la dirección), y está sondeada``polled'' en el original,, (esto es, no requiere de una línea IRQ, una configuración común de , se debería colocar la siguiente línea, en el archivo /etc/lilo.conf del sistema:


\begin{tscreen}
append=''lp=0x378,0''
\end{tscreen}

Es digno de observar que Linux reconoce automáticamente un puerto /dev/lp al arrancar el sistema, pero al especificar algunas otras configuraciones para los puertos, las instrucciónes al inicio del sistema, son requeridas.

El ``0'' que se encuentra después de la dirección del puerto, le dice al núcleo que no use una línea IRQ (pedido de interrupción), para la impresora. Esto es, generalmente aceptable, ya que las impresoras son mucho más lentas que la CPU, y tan así que un método más lento de acceso a los dispositivos E/S, conocido como sondeo4.2, en el cual el núcleo comprueba, periódicamente, el estado de la impresora, todavía permite al computador supervisar este dispositivo.

Sin embargo, los dispositivos que operan a mayores velocidades, como las líneas en serie y los discos, requieren, cada uno, de una línea IRQ, o petición de interrupción, (Interrupt ReQuest). Esta, es una señal del hardware, enviada por el dispositivo hacia el microprocesador, cada vez que dicho dispositivo requiere la atención del procesador; por ejemplo: si el dispositivo tiene datos esperando a ser despachados por el procesador. El procesador, interrumpe lo que esté haciendo en ese momento para obedecer al pedido de interrupción del dispositivo. El dispositivo unidad Zip ppa, exige una l'ínea de interrupción libre, la cual debe corresponder con la de la tarjeta de la impresora a la cual se conecta la unidad Zip. En el momento en que esto se escribía, el controlador del dispositivo ppa para GNU/Linux, no soportaba ``sucesiones'' de puertos paralelos, y se debían emplear puertos paralelos separados para usar el dispositivo Zip ppa y cada impresora.

Para saber cuáles interrupciónes están actualmente utilizadas por su sistema, la orden


\begin{tscreen}
\char93  cat /proc/interrupt
\end{tscreen}

muestra una lista de dispositivos y las líneas IRQ que usan. Sin embargo, también se deberá tener cuidado de no usar ninguna interrupción de ningún puerto en serie configurada automáticamente; la cual puede no estar listada en el archivo /proc/interrupt. El Proyecto de Documentación de Linux, serial HOWTO, el cual está disponible en los recursos listados en el Apéndice A, describe detalladamente, la configuración de los puertos en serie.

Uno también debería realizar un chequeo de la configuración de la interfaz de varias tarjetas, abriendo la carcasa de su máquina y verificando visualmente la configuración de los puentes si es necesario, para asegurarse, así, de no estar asociando una línea IRQ usada por otro dispositivo. La lucha de múltiples dispositivos por una línea de interrupción es quizá el problema más sencillo y común que causa que los sistemas GNU/Linux no funcionen.

Un típico archivo /proc/interrupt suele ser como
\begin{tscreen}
0: 6091646 timer \\
1: 40691 keyboard \\
2: 0 cascade \\
4: 284686 + serial \\
13: 1 math error \\
14: 192560 + ide0 \\
\end{tscreen}

Aquí, la primera columna nos es de interés. Estos son los números de las líneas IRQ usadas por el sistema. Para el controlador ppa, necesitamos escoger una línea que no esté listada. La línea IRQ 7 es, a menudo, una buena elección ya que rara vez es usada en las configuraciones del sistema por defecto. También necesitamos especificar la dirección del puerto que usará el dispositivo ppa. Esta dirección necesita estar configurada físicamente con la interfaz de la tarjeta. A los puertos paralelos de E/S se les deben asignar direcciones específicas, por lo que usted tendrá que leer la documentación de la tarjeta de su puerto paralelo. En este ejemplo usaremos, para el puerto de E/S, la dirección 0x278, la cual corresponde al puerto LPT2: de la impresora, en MS-DOS. Para añadir la línea IRQ y la dirección del puerto en una línea de comandos cuando arranca el sistema, necesitamos agregar la siguiente expresión a la "estrofa" apropiada del archivo /etc/lilo.conf:


\begin{tscreen}
append=''lp=0x378,0 ppa=0x278,7''
\end{tscreen}

Estas expresiones son añadidas a los parámetros de arranque del núcleo, cuando se inicia el sistema. Aseguran que cualquier impresora conectada al sistema no interfiera con el funcionamiento de la unidad Zip. Por supuesto, si el sistema no tiene ninguna impresora instalada la directiva ``lp='' puede, y debería ser omitida.

Después de que haya instalado el núcleo, como se describió en la sección 4.2.2, y antes de reiniciar el sistema, hay que asegurarse de ejecutar la instrucción
\begin{tscreen}
\char93  /sbin/lilo
\end{tscreen}
para así, instalar la nueva configuración de LILO en el sector de arranque del disco duro.


next up previous contents index
Siguiente: Instalando controladores en módulos Subir: Actualizando e instalando software Anterior: Actualizando el núcleo   Índice General   Índice de Materias
Ismael Olea 2002-09-26