Anterior Siguiente Indice

6. Instalación y configuración de controladores

Los controladores son el software que hace funcionar al dispositivo, y que da soporte lógico al Sistema Operativo para interactuar con él. En Linux la integración de este soporte se lleva a cabo configurando y compilando el núcleo o kernel, con lo que obtenemos un corazón del Sistema Operativo a la medida de cada máquina.

Linux ofrece la posibilidad de compilarlo íntegro en el kernel o en módulos aparte, que se cargan según los necesite el sistema o no. Si no está familiarizado con todo esto, es momento de que lea el Kernel-Como, disponible en el Insflug http://www.insflug.org.

El kernel necesitará tener dos tipos de soporte; uno genérico, (módulo isdn) y otro específico a la tarjeta (hisax, etc).

Como algunas tarjetas RDSI, especialmente las que tienen soporte experimental, sólo funcionan con controladores específicos modulares, nos centraremos en este tipo de soporte, por ser más universal.

No obstante, en los ejemplos supondremos que hacemos uso de kernels estables (2.0.xx), aunque tengamos que parchearlos. Puede usar kernels de desarrollo si lo prefiere, tan sólo téngalo en cuenta en los ejemplos que aplique y modifíquelos en consecuencia, sin olvidar que estos kernels son para lo que son, desarrollo, no siendo muy idóneos para la instalación por primera vez de algo que se desconoce.

6.1 Soporte específico a la tarjeta

Antes de continuar, suponemos que ha leído la sección soportadas y que sabe a ciencia cierta que su tarjeta está soportada.

Si no parece estarlo, es conveniente que lea (sí, bueno, relea ;-) de todos modos la documentación que hay en /usr/src/linux/Documentation/isdn que siempre estará más actualizada que este Como. Si no, no está todo perdido; obtenga el último árbol de desarrollo de ftp://ftp.suse.com/pub/isdn4linux/v2.0/isdn.tar.gz y eche un vistazo a los ficheros de isdn/Documentation/isdn/, puede que se lleve una grata sorpresa.

Si su tarjeta está soportada en la distribución estándar del kernel actual (2.0.34 a día de hoy), salte a la sección confkr. Si necesita parchear, siga leyendo.

Para añadir soporte al kernel actual, integraremos una parte del árbol de fuentes modificada, que añada soporte para la misma. Obtenga el fichero ftp://ftp.suse.com/pub/isdn4linux/v2.0/isdn.tar.gz, suele ser un enlace simbólico a la última versión del árbol de desarrollo RDSI disponible.

No obstante... el soporte es experimental. Casos típicos son los de las últimamente disponibles popularmente Teles.SO 16.3c o las Asuscom. Los que suscriben no han visto nada anormal (cierto es que el tiempo de que hemos dispuesto para testearlas ha sido breve) y tienen noticias de varios servidores de los llamados de producción que están funcionando sin problemas con kernels estables y estas tarjetas.

No obstante, no se parchea en el sentido estricto, ya que lo único que se sustituye es la parte correspondiente a RDSI.

La parte del árbol modificada lleva un fichero llamado std2kern que hace el trabajo de parcheo por nosotros, siempre y cuando /usr/src/linux sea el directorio donde residan las fuentes de linux. Asegúrese de que exista; si en su sistema el directorio se llama /usr/src/linux-2.0.33, compruebe, y en su ausencia cree un enlace al mismo llamado linux; por ejemplo:

cd /usr/src ;
ln -s linux-2.0.33 linux 

Descomprima el árbol de fuentes isdn: suponiendo que ha dejado el fichero en /tmp:

( cd /usr/src; tar zxvf /tmp/isdn.tar.gz )

Acceda a /usr/src/isdn, y ejecute el comando std2kern -d:

cd /usr/src/isdn
./std2kern -d

no olvide el "./" para dar el path directo al fichero, en la mayoría de los sistemas el directorio actual no está en el PATH por seguridad.

Compruebe que no se producen mensajes de error. Si es así, averigüe qué sucede. Lo más típico es que se haya equivocado en la elección de fichero, y haya escogido uno para un kernel de otra versión (2.1.xx por ejemplo).

6.2 Configuración del Kernel

Una vez hemos llevado a cabo los pasos anteriores procederemos a la configuración y posterior recompilación del kernel. Si no está habituado a esto, léase primero el Kernel-Como, disponible en Insflug, vea sección INSFLUG.

Acceda a /usr/src/linux y ejecute su método preferido de configuración. Asegúrese de activar, en la sección principal, Code maturity level options el apartado Prompt for development and/or incomplete code/drivers, o de lo contrario, el programa de configuración no le dará opción a seleccionar controladores experimentales.

Una vez hecho esto, seleccione:

Soporte genérico en el kernel

Vaya a la sección ISDN subsystem del menú principal:

Esto es para cuanto a soporte RDSI se refiere. En cuanto a soporte PPP, cuestiones específicas de redes, y demás aspectos, recurra al Como apropiado.

Soporte específico a la tarjeta

En la sección ISDN subsystem del menú principal, active el controlador que dé soporte a su tarjeta. El más popular es el HiSax, si ese es su caso, deberá además especificar:

De nuevo, no conocemos ni podemos conocer todas las tarjetas soportadas por Linux. Es posible que en drivers experimentales haya que indicar alguna otra opción; recurra a su sentido común, a la documentación (a la que no nos cansaremos de remitirle; este documento no es más que una guía) y a nosotros, a fin de actualizar este Como.

Salga del menú guardando los cambios, y compile; no olvide el make modules y el make modules_install, y reinstalar el LILO para dicho kernel.

Para más información de cómo recompilar el kernel, véase el Kernel-Como, disponible en el Insflug, vea sección INSFLUG.

6.3 Carga de los módulos - comprobación del sistema

Ya he recompilado, instalado los módulos, y arrancado con el nuevo kernel. Además, he usado isapnp y todo parece haber ido bien... ¿Qué hago ahora?

Se ha ganado un descanso. Tómese algo... ;-) No, en serio. Ahora viene la parte más interesante.

Hay varias formas de cargar los módulos, en cualquier caso, la manera que nunca falla es hacerlo a mano directamente desde la línea de comandos. Supondremos que hacemos uso del soporte específico HiSax. La sintaxis del módulo hisax es la que sigue, si bien es conveniente leer (al final lo conseguiremos ;-), especialmente en drivers experimentales, /usr/src/linux/Documentation/isdn/README.HiSax.

modprobe hisax type=<codigo tarjeta> protocol=<protocolo> io=<direccion E/S> irq=<interrupcion>

Ha llegado el momento de echar mano de donde tuviera anotados (¿los anotó?) los parámetros que asignara en las secciones bios y recursos.

Suponiendo que se trate de la tarjeta Teles.SO 16.3c PnP, que al fin y al cabo, fue la causante en origen de este Como:

modprobe hisax type=14 protocol=2 io=<IO> irq=<IRQ>

Por ejemplo:

modprobe hisax type=14 protocol=2 io=0x0580 irq=11

con lo que si miramos en /var/log/messages deberíamos ver algo como:

Jun 23 12:05:11 hal kernel: HiSax: Driver for Siemens chip set ISDN cards
Jun 23 12:05:11 hal kernel: HiSax: Version 2.8
Jun 23 12:05:11 hal kernel: HiSax: Revisions 1.15.2.8/1.10.2.5/1.10.2.3/1.30.2.6/1.8.2.5
Jun 23 12:05:11 hal kernel: HiSax: Card 1 Protocol EDSS1 Id=HiSax (0)
Jun 23 12:05:11 hal kernel: HiSax: Teles 16.3c driver Rev. 1.1.2.2
Jun 23 12:05:11 hal kernel: teles3c: defined at 0x580 IRQ 3 HZ 100
Jun 23 12:05:11 hal kernel: teles3c: resetting card
Jun 23 12:05:11 hal kernel: Teles 16.3c: IRQ 11 count 0
Jun 23 12:05:11 hal kernel: Teles 16.3c: IRQ 11 count 1
Jun 23 12:05:11 hal kernel: HiSax: DSS1 Rev. 1.16.2.3
Jun 23 12:05:11 hal kernel: HiSax: 2 channels added
Jun 23 12:05:11 hal kernel: HiSax: module installed

El tipo 14 es el que se corresponde con la Teles 16.3c PnP, el protocolo 2 es el usado en España para las conexiones RDSI, EURO ISDN o EDSS1. Los otros dos valores (dirección de E/S e interrupción) dependerán de su configuración particular, que anotó en su momento, ¿verdad?

Dependiendo del driver, este puede que se cargue aun con parámetros erróneos, si bien no es el caso del HiSax, que rehusará a hacerlo.

Si sospechamos que pese a haberse cargado (repetimos, no en el caso del HiSax) hay por ejemplo conflictos de IRQ, o no está usando la que le hemos asignado, un indicador claro de esto es que al hacer un

cat /proc/interrupts 
 0:    9719062   timer
 1:     342221   keyboard
 2:          0   cascade
 4:     495989 + serial
10:    1591809   ICN
12:        681   eth0
13:          1   math error

en un sistema con una tarjeta ICN la línea correspondiente a la irq usada por el controlador contase con 0 interrupciones de contador (segunda columna). Esto aplica para todos los dispositivos; si la línea

10:    1591809   ICN

fuese

10:    0         ICN

sería un claro síntoma de que el driver ICN no está usando dicha interrupción, casi seguro por fallo de configuración. Tan sólo por cargar correctamente, debe de poner el contador a 1 al menos.

Llegados a este punto, respire profundamente y siéntase todo un gurú Linuxero... ;-) Ya casi está listo; para no tener que hacerlo en un futuro a mano, y suponiendo que tiene las modutils correctamente instaladas, edite o cree su /etc/conf.modules o /etc/modules.conf e inserte las siguientes líneas, (suponiendo que use por ejemplo una Teles 16.3 NO PnP/ con la IRQ 10 y la io 0x180 :

alias isdn hisax
options hisax type=3 protocol=2 io=0x180 irq=10

ejecute depmod -a para computar/actualizar las dependencias entre módulos; de ahora en adelante un modprobe hisax bastará.


Anterior Siguiente Indice