Linux PCMCIA COMO

David Hinds, dhinds@hyper.stanford.edu
Traducido por David Limón Romero, dlr@cuates.pue.upaep.mx

Original: v2.40, 10 Septiembre 1999


Este documento describe cómo instalar y usar los servicios de las tarjetas PCMCIA con Linux. Las últimas versiones de este documento puede encontrarlas siempre en ftp://hyper.stanford.edu/pub/pcmcia/doc. La versión en HTML está en http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html

1. Información general y requerimientos de hardware

1.1 Introducción

Los Servicios de Tarjeta para Linux son un paquete de soporte completo para PCMCIA o PC Card. Incluye un conjunto de módulos cargables en el kernel que implementan una versión de la interface del programa de aplicación de Servicios de Tarjetas, un conjunto de controladores de clientes para tarjetas específicas, y un demonio controlador de tarjetas que responde a los eventos de inserción y extracción de tarjetas, el cual carga y descarga los controladores según sea necesario. Soporta «extracción en caliente» de la mayoría de tarjetas, por lo que pueden ser insertadas y extraídas de forma segura en cualquier momento.

Este software está en continuo desarrollo. Probablemente contenga bugs, y debe ser usado con precaución. Haré lo que esté en mi mano para resolver los problemas que me son comunicados, pero si no me los dice, nunca lo sabré. Si usa este código, espero que me envíe sus experiencias, ¡buenas o malas!

Si tiene sugerencias de cómo puede mejorarse este documento, por favor hágamelo saber ( dhinds@hyper.stanford.edu).

1.2 Licencia y renuncia de responsabilidad

Derechos Reservados © 1998 David A. Hinds

Este documento puede ser reproducido o distribuido en cualquier forma sin mi permiso previo. Las versiones modificadas de este documento, incluyendo traducciones a otros idiomas, pueden ser distribuidos libremente, si son claramente identificados como tales, y siempre que este copyright se incluya intacto.

Este documento puede ser incluído en distribuciones comerciales sin mi previo consentimiento. Aunque no suponga requisito, me gustaría estar informado de su uso. Si pretende incorporar este documento en un trabajo para ser publicado, por favor contacte conmigo para asegurarme que tiene la última versión disponible.

Este documento se proporciona «TAL CUAL», sin garantías expresas o implícitas. Utilice la información en este documento bajo su propio riesgo.

1.3 ¿Cuál es la última versión, y dónde puedo obtenerla?

La versión actual de los Servicios de Tarjetas es la 3.0, y las actualizaciones menores o reparaciones de bugs se numeran 3.0.1, 3.0.2, y así sucesivamente.

El código fuente de la última versión está disponible en ftp://hyper.stanford.edu en el directorio /pub/pcmcia como pcmcia-cs-3.0.?.tar.gz. Habrá usualmente varias versiones ahí. Por lo general, solo conservo la última versión menor para dar origen a una versión mayor.

Las nuevas versiones pueden contener código relativamente sin probar, así que también conservo la última versión de la última mayor como «colchón» relativamente estable; el retraso actual es 2.9.12. Vd. decide qué versión es más apropiada, el archivo CHANGES mostrará las diferencias más importantes.

ftp://hyper.stanford.edu es replicado en ftp://sunsite.unc.edu (y todos los servidores réplica de Sunsite) en /pub/Linux/kernel/pcmcia.

Si no se siente Vd. a gusto compilando controladores, hay controladores precompilados incluidos con las versiones actuales de la mayoría de las distribuciones principales de Linux, incluyendo Slackware, Debian, Red Hat, Caldera, SuSE, e Yggdrasil, entre otros.

1.4 ¿Qué sistemas están soportados?

Este paquete debería correr en la mayoría de portátiles basados en Intel y que sean «Linuxizables». También corre en plataformas basadas en Alpha (DEC Multia, por ejemplo). Se programa para hacer al paquete completamente dual-endian, así que también soporta plataformas basadas en PowerPC (Apple Powerbooks, por ejemplo). Los controladores de sockets más comunes están soportados. Las bahías de tarjetas PCMCIA para sistemas de escritorio deben funcionar si usan un controlador soportado, y se conectan directamente al bus ISA o PCI, lo opuesto a los adaptadores SCSI-a-PCMCIA o IDE-a-PCMCIA.

Están soportados los siguientes controladores:

Otros controladores que están registrados como compatibles con el Intel i82365sl, funcionarán también como norma general.

El soporte para tarjetas CardBus de 32 bits es todavía experimental. Los manejadores previos a la versión 3.0 sólo soportan tarjetas de 16 bits en sockets CardBus. Debido al paso tan rápido en el cambio de la tecnología para el hardware de portátiles, aparecen nuevos controladores frecuentemente, y puede producirse cierto estancamiento entre el momento en que aparece un nuevo modelo en el mercado, y el que haya soporte para ese controlador.

Toshiba ha dispuesto parcialmente documentación sobre sus chipsets ToPIC95 y ToPIC97, sin embargo, la información que han liberado no ha sido la realmente adecuada. A pesar de los informes de conflictos, Toshiba no ha hecho algún esfuerzo efectivo para remediar esta situación. Hay problemas serios en el soporte de Linux para los chipsets ToPIC, que no pueden ser resueltos hasta que esté disponible una documentación mejor, o la ayuda adecuada por parte de Toshiba. No recomiendo el uso de portátiles Toshiba por el momento. Para el uso de tarjetas de 16 bits, recomiendo establecer el modo de puente a PCIC en la configuración de la BIOS; para tarjetas CardBus, la decisión es suya.

El controlador Motorola 6AHC05GA usado en portátiles Hyundai, no está soportado. El controlador en la HP Omnibook 600 tampoco.

1.5 ¿Qué tarjetas están soportadas?

La versión actual incluye controladores para una variedad de tarjetas ethernet, para tarjetas módem y puertos serie, varios controladores para adaptadores SCSI, un controlador para tarjetas de unidades ATA/IDE, y controladores para tarjetas de memoria que sólo soportan la mayoría de tarjetas SRAM y algunas tarjetas flash. El archivo SUPPORTED.CARDS incluído en cada versión de Servicios de Tarjetas lista todas las tarjetas que se sabe que funcionan al menos en un sistema.

La probabilidad de que funcione una tarjeta que no está en la lista de soportados depende del tipo. Esencialmente todos los módems deberían funcionar con el controlador provisto. Algunas tarjetas de red pueden funcionar si hay versiones OEM de las tarjetas soportadas. Otro tipo de tarjetas de E/S (frame buffers, tarjetas de sonido, etc) no funcionarán hasta que alguien escriba los controladores apropiados.

1.6 ¿Cuándo estará soportada mi tarjeta favorita (no soportada)?

Desafortunadamente, no me pagan por escribir controladores para dispositivos, así que si quiere tener un controlador para su tarjeta favorita, probablemente tendrá trabajar un poco. Idealmente, me gustaría trabajar hacia un modelo como el del kernel de Linux, donde yo sea el responsable principalmente del código del núcleo y otros autores puedan contribuir y mantener los controladores para tarjetas específicas. El archivo SUPPORTED.CARDS menciona algunas tarjetas para las cuales los controladores están actualmente en progreso. Trataré de ayudar donde pueda, pero tenga en cuenta que depurar controladores de dispositivo del kernel por email no es particularmente efectivo.

Los fabricantes interesados en ayudar a proveer soporte Linux para sus productos pueden contactar conmigo a fin de acordar consultorías.

1.7 Listas de correo y otras fuentes de información

Solía mantener una base de datos y una lista de correo de usuarios de Linux PCMCIA. Recientemente he convertido mi página web para información de Linux PCMCIA en un sitio HyperNews, con un conjunto de listas de mensajes de temas de Linux PCMCIA. Hay listas para instalación y configuración, para diferentes tipos de tarjetas, para programar y depurar. La página de información de Linux PCMCIA está en http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html. Los usuarios pueden solicitar otificación por email de nuevas respuestas a preguntas particulares, o notificación para todos los mensajes nuevos en una categoría dada. Espero que esto sea un repositorio útil de información, para cuestiones que van más allá del enfoque del COMO.

Hay una lista de Linux dedicada a asuntos de portátiles, la lista linux-laptop. Para más información, envíe un mensaje con la palabra help a majordomo@vger.rutgers.edu. Para suscribirse, envíe un email que contenga el mensaje subscribe linux-laptop a la misma dirección. Esta lista de correo puede ser un buen foro de discusión de asuntos de Linux PCMCIA.

La página de Linux Laptop está en http://www.cs.utexas.edu/users/kharker/linux-laptop tiene enlaces a muchos sitios que tienen información acerca de la configuración de tipos específicos de portátiles para Linux. Hay también una base de datos para buscar información acerca de configuración de sistemas.

1.8 ¿Por qué no distribuyen binarios?

Para mi, distribuir los binarios puede suponer una molestia importante. Esto es complicado porque algunas características solo pueden ser seleccionadas al momento de compilar, y porque los módulos dependen mucho de contar con una configuración «correcta» del kernel. Así, probablemente necesite distribuir módulos precompilados junto con los kernels correspondientes. Más que esto, la necesidad más grande de los módulos precompilados es cuando se instala Linux en un sistema limpio. Esto típicamente requiere configurar los controladores para que puedan ser utilizados en el proceso de instalación, para una distribución de Linux en particular. Cada distribución de Linux tiene su propia idiosincrasia, y no me resulta factible el proveer discos boot y root para cada una de las combinaciones de controladores y distribuciones.

PCMCIA forma parte ahora de las principales distribuciones de Linux, incluyendo RedHat, Caldera, Slackware, Yggdrasil, Craftworks y Nascent Technology.

1.9 ¿Por qué el paquete es tan grande?

Bueno, no es realmente tan grande al fin y al cabo. Todos los módulos controladores ocupan alrededor de 500K de espacio en disco. Los programas de utilidades añaden unos 70K, y los scripts en /etc/pcmcia son de 50K. Los controladores principales ocupan unos 55K de la memoria del sistema. El demonio cardmgr será generalmente intercambiado excepto cuando cuando las tarjetas sean insertadas o extraídas. El tamaño total del paquete es comparable a las implementaciones de servicios de tarjetas de DOS/Windows.

2. Compilación e instalación

2.1 Prerequisitos y configuración del kernel

Antes de empezar, debería pensar si realmente necesita compilar el paquete por sí mismo. Todas las distribuciones comunes de Linux vienen con paquetes de controladores precompilados. Generalmente, sólo necesita instalar los controladores si necesita una característica nueva de los más actuales, o si ha actualizado y/o reconfigurado su kernel de forma que es incompatible con los incluidos en su distribución de Linux. A pesar de que compilar el paquete no es técnicamente difícil, requiere algo de familiaridad general con Linux.

Las siguientes cosas deben estar instaladas en su sistema antes de comenzar:

Necesita tener la estructura completa del código fuente del kernel, no sólo una imagen actualizada del kernel. Los módulos de los controladores contienen algunas referencias a los archivos fuentes del kernel. Mientras que Vd. busca compilar un kernel nuevo para eliminar manejadores innecesarios, instalar PCMCIA no requiere que lo haga así.

Los fuentes y parches «estables» actuales del kernel están disponibles en
ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0, o en
ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0 Los kernels en desarrollo los puede encontrar en los subdirectorios v2.1. las utilidades de módulos actuales puede encontrarlas en la misma ubicación.

En los fuentes del kernel de Linux, el archivo Documentation/Changes describe las versiones de todas las clases de otros componentes del sistema que son requeridas por esa versión del kernel. Probablemente quiera revisarlo y verificar que su sistema está actualizado, especialmente si tiene actualizado el kernel. Si está usando un kernel en desarrollo, asegúrese de estar usando la combinación correcta de bibliotecas compartidas y herramientas de módulos.

Cuando configure su kernel, si planea usar una tarjeta ethernet PCMCIA, debe activar el soporte para red, y desactivar los controladores normales de tarjetas de red de Linux, incluyendo pocket and portable adapters. Todos los controladores para tarjetas de red PCMCIA están compilados como módulos cargables. Cualquiera de los controladores compilados dentro de su kernel sólo desperdiciará espacio.

Si quiere usar SLIP, PPP o PLIP, necesitará ya sea configurar el kernel con ese soporte activado, o usar la versión de los módulos cargables de esos controladores. Hay una desafortunada deficiencia en el proceso de configuración de los kernels 1.2.X, en el que no es posible establecer opciones de configuración (como compresión SLIP) para un módulo cargable, así que es probablemente mejor enlazar SLIP dentro del kernel si es que lo necesita.

Para usar un adaptador token ring PCMCIA, el kernel debe estar configurado con la opción Token Ring driver support (CONFIG_TR) activada, aunque debe dejar CONFIG_IBMTR desactivado.

Si requiere usar un adaptador IDE PCMCIA, su kernel debe estar configurado con la opción CONFIG_BLK_DEV_IDE_PCMCIA activada, para los kernels desde 2.0.* hasta 2.1.*. Los kernels antiguos no soportan dispositivos IDE extraíbles; los nuevos no requieren una configuración especial.

Si va a usar un adaptador SCSI PCMCIA, debe habilitar CONFIG_SCSI cuando configure el kernel. Debe activar también cualquier controlador de alto nivel (disco SCSI, cinta, cdrom, genérico) que espere usar. Debe desactivar todos los controladores de bajo nivel para adaptadores en particular, porque sólo le quitarán espacio.

Si busca modularizar un controlador que se necesita para un dispositivo PCMCIA, debe modificar /etc/pcmcia/config para especificar qué módulos necesitan ser cargados para qué tipos de tarjetas. Por ejemplo, si el controlador serie está modularizado, entonces la definición del dispositivo serie debería ser:

       device "serial_cs"
         class "serial" module "misc/serial", "serial_cs"  

Este paquete incluye una utilidad llamada cardinfo que está basada en X para monitorizar el estado de la tarjeta. Está basada en un toolkit de libre distribución, la biblioteca XForms. Esta librería está disponible como un paquete separado de la mayoría de distribuciones de Linux. Si desea compilar cardinfo, deberá instalar XForms y todas las cabeceras y bibliotecas de desarrollo habituales para X antes de configurar el paquete PCMCIA.

2.2 Instalación

He aquí una sinopsis del proceso de instalación:

Si planea instalar cualquier controlador que sea una contribución y que no esté incluído en la distribución principal de PCMCIA, descomprima cada uno de ellos en el directorio raíz del árbol PCMCIA. Luego siga las instrucciones normales de compilación. Los controladores extras se compilarán e instalarán automáticamente.

Cuando ejecute make config, se le preguntarán algunas opciones de configuración y se comprobará su sistema para verificar que se satisfagan todos los prerequisitos para instalar soporte PCMCIA. En la mayoría de los casos, sólo tendrá que aceptar todas las opciones de configuración que vienen por omisión. Asegúrese de comprobar cuidadosamente la salida de éste comando en caso de que hubiera problemas. Están disponibles las siguientes opciones:

¿Hay un directorio de instalación alternativo?

Si está compilando el paquete para instalarlo en otro equipo, especifique un directorio destino alternativo cuando se le pregunte. Debe ser una ruta absoluta. Todos los archivos serán instalados relativos a este directorio. Entonces estará listo para aplicar tar a este directorio y copiarlo a su equipo destino, y desempaquetarlo relativo a su directorio raíz para instalar todo en los lugares apropiados.

¿Necesita indicadores de compilación para depurar?

Vea la sección Primeros auxilios al depurar a bajo nivel para mayor información acerca de esta opción.

¿Necesita compilar versiones «trusting» de las utilidades de tarjetas?

Algunas de las utilidades de soporte (cardctl y cardinfo) pueden ser compiladas ya sea de forma safe o trusting. La forma safe previene a los usuarios no-root de modificar configuraciones de tarjetas. La forma trusting permite a los usuarios ordinarios ejecutar comandos para suspender y reactivar tarjetas, resetear tarjetas, y cambiar el esquema de configuración actual. La forma configurada por omisión es safe.

¿Necesita incluir soporte para tarjetas de 32-bits (CardBus)?

Deberá seleccionar esta opción si desea usar tarjetas CardBus de 32-bits. No se requiere para tener soporte con puentes CardBus si sólo planea usar tarjetas PC de 16-bits.

¿Necesita incluir chequeo de recursos para BIOS PnP?

Esto compila código adicional en el módulo principal PCMCIA para comunicarse con el BIOS PnP de un sistema para obtener información de los recursos que están incluidos en la «placa madre» (puertos serie y paralelos, sonido, etc), para ayudar a prevenir conflictos de recursos. Si se habilita, se crearán algunos archivos extra de recursos bajo /proc/bus/pccard, y las herramientas lspnp y setpnp se pueden usar para visualizar y manipular los dispositivos PnP del BIOS.

¿Cómo configurar opciones específicas del kernel?

Hay algunas opciones de configuración del kernel que afectan a las herramientas PCMCIA. El script de configuración puede deducirlo desde el kernel actual (el caso por omisión y más común). Alternativamente, si está compilando para instalar en otro equipo, puede leer la configuración del árbol de los fuentes del kernel, o cada opción se puede establecer interactivamente.

El script de configuración se puede ejecutar de forma no-interactiva, para compilar automáticamente o para reconfigurar rápidamente después de una actualización del kernel. Algunas opciones adicionales no utilizadas con frecuencia sólo pueden ser establecidas desde la línea de comandos. Ejecutando: Configure --help se listarán todas las opciones disponibles.

Al ejecutar make all seguido de make install compilará y luego instalará los módulos del kernel y los programas de utilidades. Los módulos del kernel serán instalados en /lib/modules/<version>/pcmcia. Los programas cardctl y cardmgr serán instalados en /sbin. Si cardinfo se compila, será instalado en /usr/bin/X11.

Los archivos de configuración serán instalados en el directorio /etc/pcmcia. Si está instalando sobre una versión antigua, sus scripts de configuración anteriores se respaldarán antes de ser reemplazados. Los scripts guardados tendrán la extensión de tipo *.O.

Si no sabe qué tipo de controlador usa su sistema, puede utilizar la utilidad probe en el subdirectorio cardmgr/ para determinarlo. Hay dos tipos principales: el tipo Databook TCIC-2 y el tipo compatible con Intel i82365SL.

En raras ocasiones, el comando probe será incapaz de determinar su tipo de controlador automáticamente. Si tiene un sistema Halikan NBD 486, tiene un controlador TCIC-2 en una localización inusual: necesitará editar rc.pcmcia para cargar el módulo tcic, y también especificar el parámetro PCIC_OPTS a tcic_base=0x02c0.

En algunos sistemas que usan controladores Cirrus, incluyendo el Nec Versa M, la bios pone el controlador en un estado especial de suspensión al iniciar el sistema. En esos sistemas, el comando probe fallará al encontrar cualquier controlador conocido. Si esto pasa, edite rc.pcmcia y especifica PCIC a i82365, y PCIC_OPTS a wakeup=1.

2.3 Opciones de inicio

El script de inicio de PCMCIA reconoce varios grupos de opciones de inicio, establecidas por medio de variables de entorno. Se pueden separar múltiples opciones por medio de espacios y encerradas en comillas. La colocación de las opciones de inicio depende de la distribución de Linux que se esté usando. Pueden ser colocados directamente en el script de inicio, o pueden mantenerse en un archivo de opciones separado. Revise la sección Notas acerca de distribuciones de Linux específicas para más detalles. Se pueden establecer las siguientes variables:

PCMCIA

Esta variable especifica si el soporte PCMCIA debe ser iniciado o no. Si está especificado de forma diferente a yes, el script de inicio será desactivado.

PCIC

Esto identifica el módulo controlador de PC Card Interface Controller. Hay dos opciones: tcic o i82365. Virtualmente todos los controladores actuales están en el grupo i82365. Esta es la única opción obligatoria a establecer.

PCIC_OPTS

Esto especifica las opciones para el módulo PCIC. Algunos controladores tienen características opcionales que pueden o no ser implementadas en un sistema en particular. En algunos casos, es imposible para el socket controlador detectar si esas características están implementadas. Revise la página del manual correspondiente para una descripción completa de las opciones disponibles.

CORE_OPTS

Esto especifica las opciones para el módulo pcmcia_core, el cual implementa los servicios principales del controlador PC Card. Es conveniente echar un vistazo a man pcmcia_core para más información.

CARDMGR_OPTS

Esto especifica las opciones que se pasarán al demonio cardmgr. Revise man cardmgr para más información.

SCHEME

Si está activado, el esquema de configuración de PC Card será inicializado a este modo en el momento de arrancar. Revise la sección Un vistazo a los scripts de configuración de PCMCIA para ver la discusión de esquemas.

Los controladores de sockets de bajo nivel, tcic e i82365, tienen varios parámetros de sincronización de bus que pueden necesitar ser ajustados para sistemas con velocidades de bus no muy usuales. Los síntomas de los problemas de sincronización incluyen problemas al reconocer las tarjetas, congelamiento bajo carga pesada, tasas de error altas, o rendimiento pobre de dispositivos. Sólo ciertos puentes tienen parámetros de sincronización ajustables, revise la página correspondiente del manual para ver qué opciones existen para su controlador. He aquí un pequeño resumen:

He aquí algunas configuraciones de sincronización para algunos sistemas específicos:

2.4 Configuración de recursos del sistema

Los servicios de tarjetas deben evitar automáticamente el ocupar puertos e interrupciones que ya estén en uso por otros dispositivos estándar. Intentará así mismo detectar conflictos con dispositivos desconocidos, pero esto no es del todo fiable, y en algunos casos puede que necesite excluir explícitamente recursos para un dispositivo en /etc/pcmcia/config.opts.

He aquí algunas configuraciones de recursos para tipos específicos de portátiles. Revíselas con cuidado: pueden darle información necesaria para resolver problemas, pero algunas están (inevitablemente) obsoletas y ciertamente contienen errores. Las correcciones y adiciones serán bienvenidas.

2.5 Notas acerca de distribuciones de Linux específicas

Esta sección está incompleta. Todas las correcciones y adiciones serán bienvenidas.

Debian

Debian usa el conjunto de scripts de arranque de tipo System V. El script de inicio PCMCIA está instalado en /etc/init.d/pcmcia, y las opciones de inicio se especifican en /etc/pcmcia.conf. La configuración de syslog de Debian colocará los mensajes del kernel en /var/log/messages y los mensajes del demonio cardmgr en /var/log/daemon.log.

Debian distribuye el sistema PCMCIA en dos paquetes: el paquete pcmcia-cs que contiene cardmgr y otras herramientas, páginas del manual, y los scripts de configuración; y el paquete pcmcia-modules que contiene los módulos controladores del kernel.

Red Hat, Caldera, Mandrake

Estas distribuciones usan la organización de scripts System V. El script de inicio de PCMCIA está instalado en /etc/rc.d/init.d/pcmcia, y las opciones de arranque se guardan en /etc/sysconfig/pcmcia. Observe que al instalar el paquete de Red Hat puede instalar un archivo de opciones de inicio por omisión que tiene PCMCIA desactivado. Para habilitar PCMCIA, la variable PCMCIA debe establecerse en yes. La configuración por omisión del syslogd de Red Hat grabará todos los mensajes interesantes en /var/log/messages.

El paquete PCMCIA de Red Hat contiene un reemplazo para el script de inicio de red, /etc/pcmcia/network, el cual se acopla al panel de control de red de Red Hat. Esto es conveniente para el caso donde sólo se usa un adaptador de red, con un conjunto de parámetros de red, pero no tiene la flexibilidad completa del script regular de red PCMCIA. Compilar e instalar una distribución fuente de PCMCIA nueva, sobreescribirá el script de red, rompiendo el enlace con el panel de control. Si prefiere el script de Red Hat, puede evitarlo bien usando únicamente RPMS de Red Hat, o creando /etc/pcmcia/network.opts que contenga lo siguiente:

       if [ -f /etc/sysconfig/network-scripts/ifcfg-eth0 ] ; then
           start_fn () {
               /sbin/ifup $1
           }
           stop_fn () {
               /sbin/ifdown $1
           }
       fi

Red Hat maneja su distribución de los fuentes de PCMCIA con pocas modificaciones dentro de su SRPM del kernel, en lugar de gestionarlo como un paquete separado.

Slackware

Slackware usa el conjunto de scripts de inicio de BSD. El script de inicio de PCMCIA está instalado en /etc/rc.d/rc.pcmcia, y las opciones de inicio se especifican en el mismo rc.pcmcia. El script de inicio de PCMCIA se invoca desde /etc/rc.d/rc.S.

SuSE

SuSE usa el conjunto de scripts System V, con los scripts de inicio almacenados en /sbin/init.d. El script de inicio de PCMCIA está instalado en /sbin/init.d/pcmcia, y las opciones de arranque se guardan en /etc/rc.config. El script de inicio de SuSE está algo limitado y no permite que las variables de inicio de PCMCIA sean invalidados desde el prompt de inicio de lilo.

3. Resolución de problemas de instalación y configuración

Esta sección describe algunos de los errores más comunes del subsistema PCMCIA. Compare sus síntomas con los ejemplos. Esta sección sólo describe fallos generales que no son específicas de un controlador o tipo de tarjeta en particular.

Antes de diagnosticar un problema, debe saber dónde se almacena el registro del sistema (revise la sección Notas acerca de distribuciones de Linux específicas). Debe estar familiarizado con las herramientas básicas de diagnóstico como dmesg y lsmod. Preste especial atención al hecho de que muchos componentes de los controladores (incluyendo todos los módulos del kernel) tienen sus propias páginas individuales en el manual.

Intente definir su problema lo más ampliamente posible. Si tiene varias tarjetas, pruebe cada tarjeta de forma aislada, y en diferentes combinaciones. Intente arranques de Linux en frío y arranques en caliente de Windows. Compare el arrancar con tarjetas insertadas, o insertar las tarjetas después de iniciar. Si normalmente usa su portátil ensamblado con una dockstation, prúebelo aparte. Algunas veces, dos bahías se comportarán de forma diferente.

Es casi imposible depurar problemas de un controlador cuando se intenta instalar Linux por medio de un dispositivo PCMCIA. En lugar de eso, si puede identificar el problema basándose en los síntomas, los discos de instalación son difíciles de modificar, especialmente sin tener acceso a un sistema Linux ya funcionando. La personalización e instalación de los discos de instalación es completamente dependiente de la distribución de Linux que elija, y más allá del enfoque de este documento. En general, el mejor curso de acción es instalar Linux usando otros medios, obteniendo los controladores más recientes, y depurando el problema entonces, si es que persiste.

3.1 No se cargan los módulos básicos de PCMCIA.

Síntomas:

Los módulos del kernel contienen información de la versión, la cual se comprueba con el kernel actual cuando se carga un módulo. El tipo de chequeo depende de la opción del kernel CONFIG_MODVERSIONS. Si es falso, entonces el número de versión del kernel se compila dentro de cada módulo y el programa insmod comprueba esto para compararlo con el kernel actual. Si CONFIG_MODVERSIONS es verdadero, entonces cada símbolo exportado por el kernel tiene un «checksum». Esos códigos se comparan con los códigos correspondientes compilados dentro de un módulo.

La idea de esto fue crear módulos menos dependientes de la versión, porque los checksums sólo pueden cambiar si la interface del kernel cambia, y podría generalmente permanecer a lo largo de actualizaciones menores del kernel. En esencia, los «checksums» se han desactivado para ser mas restrictivos, porque muchas interfaces del kernel dependen de las opciones pasadas al momento de compilarse. También, los checksums han resultado ser jueces excesivamente pesimistas respecto a compatibilidad.

El enfoque práctico de esto es que los módulos del kernel están muy atados a tanto la versión del kernel, como a muchas opciones de configuración del mismo. Generalmente, un grupo de módulos compilados para un kernel 2.0.31 no cargará con otros kernels 2.0.31 a menos que se tome un cuidado especial asegurándose que los dos fueron compilados con configuraciones similares. Esto resulta ser un asunto difícil para la distribución de módulos precompilados del kernel.

Tiene Vd. varias opciones:

3.2 Algunos módulos controladores no cargan

Síntomas:

Algunos de los módulos controladores requieren servicios del kernel que pueden o no estar presentes, dependiendo de la configuración del kernel. Por ejemplo, los controladores de tarjetas SCSI requieren que el kernel sea compilado con soporte SCSI, y los controladores de red requieren un kernel de red. Si a un kernel le falta una característica necesaria, insmod puede avisar acerca de símbolos indefinidos y rechazar la carga de un módulo en particular. Note que los mensajes de error de insmod no distinguen entre errores por diferencias de versiones y errores por falta de símbolos.

Específicamente:

Hay dos formas de proceder:

El archivo /etc/pcmcia/config puede especificar qué módulos adicionales necesitan cargarse para un cliente en particular. Por ejemplo, para el controlador serial, uno puede ser:

       device "serial_cs"
         class "serial" module "misc/serial", "serial_cs"

Las rutas hacia los módulos se especifican relativas al nivel más alto del directorio de módulos para la versión actual del kernel; si no se especifica la ruta relativa, entonces la ruta por omisión será hacia el subdirectorio pcmcia.

3.3 fallos en la búsqueda de interrupciones

Síntomas:

Después de identificar el tipo de controlador, el controlador del socket sondea las interrupciones libres. Este «sondeo» o «tanteo» consiste en programar el controlador para cada interrupción aparentemente libre, generando una interrupción soft (suave), para ver si la interrupción puede ser detectada correctamente. En algunos casos, el sondear una interrupción en particular puede interferir con otro dispositivo del sistema.

La razón de este «tanteo» es identificar interrupciones que parezcan estar libres (es decir, aquellas que no están reservadas por otro controlador de dispositivo), ya sea porque no esté conectado físicamente a la controladora, o que esté conectado a otro dispositivo que no tiene un controlador.

En el registro del sistema, un sondeo realizado con éxito tiene este aspecto:

       Intel PCIC probe:
         TI 1130 CardBus at mem 0x10211000, 2 sockets
         ...
         ISA irqs (scanned) = 5,7,9,10 status change on irq 10

Hay dos formas de proceder:

En cualquier caso, las opciones de tanteo pueden especificarse en el script de inicio de PCMCIA utilizando la definición PCIC_OPTS, por ejemplo:

        PCIC_OPTS="irq_list=5,9,10"

Como podrá notar, /proc/interrupts es absolutamente inútil cuando se van a diagnosticar problemas en el sondeo de interrupciones. El tanteo es lo suficientemente sensible como para nunca intentar usar una interrupción que ya está en uso por otro controlador de Linux. Los controladores PCMCIA están ya teniendo en cuenta toda la información de /proc/interrupts. Dependiendo del diseño del sistema, un dispositivo inactivo puede todavía ocupar una interrupción y causar problemas si es probado por PCMCIA.

3.4 Fallos en la búsqueda de puertos de E/S

Síntomas:

Cuando cardmgr procesa los rangos de puertos de E/S listados en /etc/pcmcia/config.opts, el kernel tantea esos rangos para detectar los dispositivos latentes que ocupan espacio de E/S pero que no están asociados con un controlador de Linux. El tanteo es de sólo lectura, pero en algunos casos extraños, leer desde un dispositivo puede interferir con una función importante del sistema, resultando en «congelamiento».

La guía de usuario de su sistema debe traer un mapa de los dispositivos del sistema, mostrando sus rangos de E/S y de memoria. Esos pueden ser excluidos explícitamente en config.opts.

Por otra parte, si el sondeo no resulta fiable en su sistema, puede ser desactivado estableciendo CORE_OPTS a probe_io=0. En este caso, deberá ser muy cuidadoso al especificar solamente rangos de puertos genuinamente disponibles en config.opts, en lugar de usar las configuraciones por omisión.

3.5 Fallos durante la comprobación de la memoria

Síntomas:

O alternativamente:

Los módulos principales realizan un chequeo de los primeros 16 bits de memoria en el momento en que se inserta la tarjeta. Esta exploración puede interferir potencialmente con otros dispositivos de memoria mapeados. Así mismo, los paquetes de controladores pre-3.0.0 realizan una exploración más agresiva que los controladores más recientes. La ventana de memoria se define en /etc/pcmcia/config.opts. La ventana por omisión es grande, así que puede ayudar a restringir la exploración a un rango más reducido. Los rangos razonables para incluir son: 0xd0000-0xdffff, 0xc0000-0xcffff, 0xc8000-0xcffff, o 0xd8000-0xdffff.

Si tiene controladores PCMCIA DOS o Windows, puede deducir que región de memoria usan esos controladores. Tenga en cuenta que las direcciones de memoria de DOS se especifican normalmente en forma de «segmentos», los cuales dejan el último dígito hexadecimal (así una dirección absoluta de 0xd0000 puede darse como 0xd000). Asegúrese de añadir el dígito extra de cuando haga los cambios a config.opts.

En casos no muy usuales, un fallo en el sondeo de memoria puede indicar un problema de configuración en la sincronización con el controlador. Revise la sección Opciones de inicio para más información acerca de cómo combatir los problemas comunes de sincronización.

Los puentes CardBus pueden reservar ventanas de memoria fuera del «agujero de memoria» de 640KB-1MB en la arquitectura de bus ISA. Generalmente es buena idea el configurar puentes CardBus para usar ventanas de memoria alta, porque es muy difícil que existan conflictos con otros dispositivos. También, las tarjetas CardBus pueden requerir grandes ventanas de memoria, las cuales puede ser difícil o imposible que coincidan en memoria baja. Los servicios de tarjetas preferentemente localizarán las ventanas en memoria alta para puentes CardBus, si ambas ventanas de memoria (alta y baja) se definen en config.opts. El archivo config.opts por omisión ahora incluye una ventana de memoria alta de 0xa0000000-0xa0ffffff. Si tiene un puente CardBus y ha actualizado de una versión de PCMCIA anterior, añada esta ventana de memoria si no está ya definido.

En algunos casos, la ventana de memoria alta por omisión no se utiliza.

En algunos modelos IBM Thinkpad, una ventana de 0x60000000-0x60ffffff funcionará en lugar de la ventana por omisión.

3.6 Fallo al detectar cuando se inserta o se extrae la tarjeta

Síntomas:

En muchos casos, el controlador del socket (i82365 o tcic) probará automáticamente y seleccionará la interrupción apropiada para señalar cambios en el estado de la tarjeta. El tanteo automático de interrupciones no funciona con algunos controladores compatibles con Intel, incluyendo los chips Cirrus y los chips usados en IBM Thinkpads. Si un dispositivo está inactivo en el momento del sondeo, su interrupción puede parecer estar disponible. En esos casos, el controlador del socket puede usar una interrupción que es usada por otro dispositivo.

Con los controladores i82365 y tcic la opción list_irq puede usarse para limitar las interrupciones que serán tanteadas. Esta lista limita el conjunto de interrupciones que pueden ser utilizadas por las tarjetas PCMCIA así como para monitorizar los cambios en el estado de la tarjeta. La opción cs_irq puede usarse también para establecer explícitamente la interrupción que será utilizada para monitorizar dichos cambios.

Si no puede encontrar un número de interrupción que funcione, hay también un estado en modo de búsqueda: ambos, i82365 y tcic aceptarán una opción poll_interval=100, para buscar cambios en el estado de la tarjeta una vez por segundo. Esta opción puede usarse también si su sistema tiene un rango corto de interrupciones disponibles para utilizarse con tarjetas PCMCIA. Especialmente para sistemas con más de un controlador de host, hay un pequeño punto para dedicar interrupciones para monitorizar cambios de estado de la tarjeta.

Todas esas opciones deberían establecerse en la línea PCIC_OPTS= ya sea en /etc/rc.d/rc.pcmcia o en /etc/sysconfig/pcmcia, dependiendo de la configuración de su sistema.

3.7 Faltan recursos del sistema

Síntomas:

La reserva de interrupciones indica generalmente un problema con el sondeo de interrupciones, véase la sección Fallos en la búsqueda de interrupciones.

En algunos casos, el tanteo parece funcionar, pero únicamente aparecen una o dos interrupciones disponibles. Revise el registro de su sistema para ver si los resultados de la exploración son plausibles. Desactivar el tanteo y seleccionar las interrupciones manualmente puede ayudar.

Si el sondeo de interrupciones no está funcionando adecuadamente, el controlador del socket puede reservar una interrupción para monitorizar inserciones de tarjetas, incluso cuando las interrupciones sean demasiado escasas para esto, constituye una buena idea. En este caso, puede Vd. cambiar el controlador a modo de búsqueda estableciendo PCIC_OPTS a poll_interval=100. O, si tiene un controlador CardBus, intente con pci_csc=1, el cual selecciona una interrupción PCI (si está disponible) para cambios de estado en la tarjeta.

La reserva de puertos de E/S no es muy común, pero algunas veces tiene lugar con tarjetas que requieren regiones de espacio de E/S grandes, contiguas y alineadas, o que sólo reconocen pocas posiciones específicas de puertos. Los rangos de puertos de E/S por omisión en /etc/pcmcia/config.opts normalmente son suficientes, pero pueden ser extendidos. En casos extraños, la reserva puede indicar que falló el sondeo de puertos de E/S; revise la sección fallos en la búsqueda de puertos de E/S.

La reserva de memoria no es común tampoco con las configuraciones de la ventana de memoria que vienen por omisión en config.opts. Las tarjetas CardBus pueden requerir regiones de memoria más grandes que las tarjetas típicas de 16-bits. Dado que de que las ventanas de memoria de las tarjetas CardBus pueden ser mapeadas a cualquier parte del espacio de la dirección PCI del host (en lugar de sólo mapearlo al «agujero» de 640K-1MB en sistemas PC), es de utilidad especificar ventanas de memoria amplias en la memoria alta, tales como 0xa0000000-0xa0ffffff.

3.8 Conflicto de recursos entre dos tarjetas

Síntomas:

Esto usualmente indica un conflicto de recursos con un dispositivo del sistema que Linux no conoce. Los dispositivos PCMCIA son configurados dinámicamente, así, por ejemplo, las interrupciones son reservadas conforme se vayan necesitando, en lugar de ser asignadas específicamente a tarjetas o sockets en particular. Dada una lista de recursos que parecen estar disponibles, las tarjetas son recursos asignados en el orden en que son configurados. En este caso, a la tarjeta configurada en último lugar se le está asignando un recurso que en efecto, no está libre.

Revise el registro del sistema para ver qué recursos están usados por la tarjeta que no funciona. Exclúyalos de /etc/pcmcia/config.opts, y reinicie el demonio cardmgr para recargar la base de datos de recursos.

3.9 No se completa la configuración de dispositivos

Síntomas:

Esto indica que la tarjeta fue identificada con éxito, sin embargo, cardmgr fue incapaz de completar el proceso de configuración por alguna razón. La más común es que un paso en el script de configuración se ha bloqueado. Un buen ejemplo podría ser el script de red bloqueándose si una tarjeta de red se inserta sin tener presente una conexión a la red.

Para verificar el problema, puede ejecutar manualmente un script de configuración para ver dónde se está bloqueando. Los scripts están en el directorio /etc/pcmcia. Toman dos parámetros: un nombre de dispositivo, y una acción. El demonio cardmgr graba los comandos de configuración en el registro del sistema. Por ejemplo, si el registro del sistema muestra que el comando ./network start eth0 fue el último comando ejecutado por cardmgr, el siguiente comando puede rastrear el script:

       sh -x /etc/pcmcia/network start eth0

4. Uso y características

4.1 Herramientas para configurar y monitorizar dispositivos PCMCIA

Si los módulos son todos cargados correctamente, la salida del comando lsmod debería verse como sigue, cuando no hay tarjetas insertadas:

  Module                  Size  Used by
  ds                      5640   2
  i82365                 15452   2
  pcmcia_core            30012   3  [ds i82365]

El registro del sistema deberá también incluir la salida del controlador del socket, describiendo el(los) controlador(es) del host encontrado(s) y el número de sockets detectados.

El demonio de configuración cardmgr

El demonio cardmgr es responsable de monitorizar los sockets PCMCIA, cargando los controladores cuando se necesita, y corriendo scripts a nivel de usuario en respuesta a las inserciones y extracciones de tarjetas. Graba sus acciones en el registro del sistema, y también usa pitidos para señalar cambios en el estado de las tarjetas. Los tonos de los pitidos indican el éxito o fracaso de un paso de la configuración en particular. Dos pitidos agudos indican que la tarjeta fue identificada y configurada correctamente. Un pitido agudo seguido de un pitido grave indica que la tarjeta fue identificada, pero no pudo ser configurada por alguna razón. Un pitido grave indica que la tarjeta no pudo ser identificada.

cardmgr registra información del dispositivo para cada socket en /var/run/stab

He aquí el contenido de un ejemplo de /var/run/stab:

       Socket 0: Adaptec APA-1460 SlimSCSI
       0       scsi    aha152x_cs      0       sda     8       0
       0       scsi    aha152x_cs      1       scd0    11      0
       Socket 1: Serial or Modem Card
       1       serial  serial_cs       0       ttyS1   5       65

Para las líneas que describen dispositivos, el primer campo es el socket, el segundo es la clase del dispositivo, el tercero es nombre del controlador, el cuarto se usa para numerar múltiples dispositivos asociados con el mismo controlador, el quinto es el nombre del dispositivo, y los dos campos finales son los números mayor y menor para este dispositivo (si es aplicable).

El demonio cardmgr configura tarjetas basadas en una base de datos de tipos de tarjetas conocidas almacenadas en /etc/pcmcia/config. Este archivo describe una variedad de controladores, describe cómo identificar esas tarjetas, y cual(es) controlador(es) pertenecen a cada tarjeta. El formato de este archivo se describe en la página del manual de pcmcia(5).

Las utilidades cardctl y cardinfo

El comando cardctl puede ser usado para comprobar el estado de un socket, o para ver cómo está configurado. También puede ser usado para alterar el estado de configuración de una tarjeta. He aquí un ejemplo de la salida del comando cardctl config:

  Socket 0:
    not configured
  Socket 1:
    Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0
    Card type is memory and I/O
    IRQ 3 is dynamic shared, level mode, enabled
    Speaker output is enabled
    Function 0:
      Config register base = 0x0800
        Option = 0x63, status = 0x08
      I/O window 1: 0x0280 to 0x02bf, auto sized
      I/O window 2: 0x02f8 to 0x02ff, 8 bit

O cardctl ident, para obtener información de la identificación de la tarjeta:

       Socket 0:
         no product info available
       Socket 1:
         product info: "LINKSYS", "PCMLM336", "A", "0040052D6400"
         manfid: 0x0143, 0xc0ab
         function: 0 (multifunction)

Los comandos cardctl suspend y cardctl resume pueden usarse para desactivar una tarjeta sin descargar sus controladores asociados. El comando cardctl reset intenta resetear y reconfigurar una tarjeta. cardctl insert y cardctl eject emulan las acciones realizadas cuando una tarjeta es insertada o expulsada, incluyendo la carga y descarga de los controladores, y configurando o desactivando los dispositivos.

Si está Vd. corriendo X, cardinfo produce de forma gráfica el estado actual de todos los sockets PCMCIA, similar en contenido a cardctl config. También proporciona una interfaz gráfica para la mayoría de las otras funciones de cardctl.

Inserción y extracción de tarjetas

En teoría, puede insertar y extraer tarjetas PCMCIA en cualquier momento. Sin embargo, es una buena idea no expulsar una tarjeta que está siendo utilizada por algún programa de aplicación. Los kernels anteriores al 1.1.77 solían congelarse cuando las tarjetas serie/módem eran expulsadas, aunque esto parece estar ya solucionado.

Servicios de Tarjetas y Administración Avanzada de Energía

Los servicios de tarjetas pueden ser compilados con soporte para APM (Advanced Power Management) (En castellano: Administración Avanzada de Energía), si configuró su kernel con soporte APM. APM está actualmente a cargo de Stephen Rothwell, Stephen.Rothwell@canb.auug.org.au. El demonio apmd es mantenido por Avery Pennarun, apenwarr@worldvisions.ca), con más información disponible en http://www.worldvisions.ca/~apenwarr/apmd/. Los módulos PCMCIA serán configurados automáticamente para APM si es detectada una versión compatible en el sistema.

Esté APM configurado o no, puede usar cardctl suspend antes de suspender su portátil, y cardctl resume después de «despertarlo», para apagar y reactivar sus tarjetas PCMCIA. No funcionará con un módem que esté en uso, porque el controlador serie no puede guardar y restablecer los parámetros operativos del módem.

APM parece ser inestable en algunos sistemas. Si experimenta problemas con APM y PCMCIA en su sistema, intente localizar el problema en un paquete u otro antes de informar de un bug.

Algunos controladores, notablemente los controladores PCMCIA SCSI, no pueden recuperarse de un ciclo de suspender/despertar. Cuando se usa una tarjeta PCMCIA SCSI, use siempre cardctl eject antes de suspender el sistema.

Apagado del sistema PCMCIA

Para descargar el paquete PCMCIA completo, invoque rc.pcmcia con:

        /etc/rc.d/rc.pcmcia stop

Este script tomará algunos segundos para ejecutarse, para darle tiempo a todos los controladores a desactivarse correctamente. Si un dispositivo está en uso actualmente, el proceso de desactivación será incompleto, y puede que algunos módulos del kernel no sean descargados. Para prevenir esto, use cardctl eject para desactivar todos los sockets antes de invocar rc.pcmcia. El estado de salida del comando cardctl indicará si alguno de los sockets no pudo ser desactivado.

4.2 Un vistazo a los scripts de configuración de PCMCIA

Cada dispositivo PCMCIA tiene una «clase» asociada que describe cómo debe ser configurado y manejado. Las clases están asociadas con los controladores de dispositivos en /etc/pcmcia/config. Actualmente hay cinco clases de dispositivos de E/S (red, SCSI, cdrom, disco, y serie) y dos clases de dispositivos de memoria (memoria y FTL). Para cada clase, hay dos scripts en /etc/pcmcia: un script principal de configuración (por ejemplo, /etc/pcmcia/scsi para dispositivos SCSI), y un script de opciones (por ejemplo, /etc/pcmcia/scsi.options). El script principal de un dispositivo será invocado para configurarlo cuando se inserte una tarjeta, y para desactivar el dispositivo cuando sea extraída. Para tarjetas con varios dispositivos asociados, el script será invocado para cada dispositivo.

Los scripts de configuración inician al extraer algo de información acerca del dispositivo de /var/run/stab. Cada script construye una «dirección de dispositivo», que únicamente describe el dispositivo que ha sido solicitado para configurar, en la variable de shell ADDRESS. Esto es pasado al script *.opts, el cual debe proporcionar información acerca de cómo debe ser configurado un dispositivo en esta dirección. Para algunos, la dirección del dispositivo es sólo el número de socket. Para otros, se incluye información extra que puede ser útil para decidir cómo configurar el dispositivo. Por ejemplo, los dispositivos de red pasan su dirección ethernet de hardware como parte de la dirección del dispositivo, así, el script network.opts puede usar esto para seleccionar diversas configuraciones.

La primera parte de todas las direcciones de dispositivos es el «esquema» PCMCIA actual. Ese parámetro es usado para soportar múltiples conjuntos de configuraciones de dispositivos basadas en una simple variable externa definida por el usuario. Una uso de los esquemas puede ser el tener un esquema de «casa», y un esquema de «trabajo», el cual puede incluir diferentes conjuntos de parámetros de configuración de red. El esquema actual se selecciona usando el comando cardctl scheme. Si no se define un esquema, por omisión se establece el esquema default.

Como regla general, cuando se configura Linux para un equipo portátil, los dispositivos PCMCIA deben ser configurados desde los scripts para dispositivos PCMCIA. No intente configurar un dispositivo PCMCIA de la misma forma en que configuraría un dispositivo conectado de forma permanente. No obstante, algunas distribuciones de Linux suministran paquetes PCMCIA que están relacionadas con las herramientas de configuración de dispositivos propios de la misma distribución. En ese caso, alguna de las siguientes secciones puede o no aplicar; idealmente, esto sería documentado por los encargados de la distribución.

4.3 Adaptadores de red PCMCIA

Las interfaces de red tipo ethernet normalmente tienen nombres como eth0, eth1, y así sucesivamente. Los adaptadores Token-Ring se manejan de forma similar, sin embargo, son llamadas comúnmente tr0, tr1 y así sucesivamente. El comando ifconfig se usa para ver o modificar el estado de una interface de red. Una peculiaridad de Linux es que las interfaces de red no tienen archivos de dispositivo correspondientes en /dev/, así que no se sorprenda si no los encuentra.

Cuando se detecta una tarjeta ethernet, le será asignado el primer nombre de interface que esté libre, normalmente eth0. cardmgr ejecutará el script /etc/pcmcia/network para configurar la interface, la cual normalmente lee las configuraciones de red de /etc/pcmcia/network.opts. Los scripts network, y network.opts serán ejecutados sólo cuando su tarjeta ethernet esté presente. Si su sistema tiene la facilidad de configuración de red automática, puede o no ser PCMCIA. Consulte la documentación de su distribución de Linux y la sección Notas acerca de distribuciones de Linux específicas para determinar si los dispositivos de red PCMCIA deben ser configurados con herramientas automáticas, o editando network.opts.

La dirección de dispositivo pasada a network.opts consiste en cuatro campos separados por comas: el esquema, el número de socket, la instancia de dispositivo, y la dirección ethernet de hardware de la tarjeta, La instancia de dispositivo es usada para numerar dispositivos para tarjetas que tienen varias interfaces de red, así que normalmente será 0. Si tiene varias tarjetas de red usadas para propósitos diferentes, una opción puede ser el configurar las tarjetas basadas en la posición del socket, como en:

       case "$ADDRESS" in
       *,0,*,*)
           # definiciones para tarjeta de red en el socket 0
           ;;
       *,1,*,*)
           # definiciones para tarjeta de red en el socket 1
           ;;
       esac

Alternatívamente, pueden ser configuradas usando su dirección de hardware, como en:

  case "$ADDRESS" in
  *,*,*,00:80:C8:76:00:B1)
      # definiciones para una tarjeta D-Link
      ;;
  *,*,*,08:00:5A:44:80:01)
      # definiciones para una tarjeta IBM
  esac

Parámetros de dispositivos de red

Los siguientes parámetros se pueden definir en network.opts:

IF_PORT

Especifica el tipo de transceptor ethernet, para tarjetas que no sean autodetectadas. Consulte man ifport para ver los nombres de los transceptores.

PUMP

Una opción booleana (y/n): indica si la dirección IP e información de rutado del host se puede obtener ya sea por BOOTP o DHCP, con el demonio pump.

BOOTP

Una opción booleana (y/n): indica si la dirección IP del host y su información de rutado se obtendrán usando el protocolo BOOTP, con bootpc.

DHCP

Un opción booleana (y/n): indica si la dirección IP del host y su información de rutado se obtendrán de un servidor DHCP, con dhcpcd.

IPADDR

La dirección IP para esta interface.

NETMASK, BROADCAST, NETWORK

Parámetros básicos de red: revise el COMO de red para más información.

GATEWAY

La dirección IP de una máquina pasarela para la subred de este host. Los paquetes con destinos hacia afuera de esta subred serán destinados a dicha pasarela.

DOMAIN

El nombre de dominio de la red local para este host, es usado al crear /etc/resolv.conf.

SEARCH

Una lista de búsqueda para búsqueda de nombres, es añadida a /etc/resolv.conf. DOMAIN y SEARCH son mutuamente exclusivos: revise man resolver para más información.

DNS_1,DNS_2,DNS_3

Nombres de host o direcciones IP para servidores de nombres para esta interface, para ser añadidos a /etc/resolv.conf

MOUNTS

Una lista de puntos de montaje NFS para ser montados por esta interface.

IPX_FRAME, IPX_NETNUM

Para redes IPX: el tipo de frame y número de red, pasado al comando ipx_interface.

Por ejemplo:

  case "$ADDRESS" in
  *,*,*,*)
      IF_PORT="10base2"
      BOOTP="n"
      IPADDR="10.0.0.1"
      NETMASK="255.255.255.0"
      NETWORK="10.0.0.0"
      BROADCAST="10.0.0.255"
      GATEWAY="10.0.0.1"
      DOMAIN="dominio.org"
      DNS_1="dns1.dominio.org"
      ;;
  esac

Para montar y desmontar automáticamente sistemas de archivos NFS, primero añada todos esos sistemas de archivos a /etc/fstab, incluyendo noauto en las opciones de montaje. En network.opts, liste los puntos de montaje de los sistemas de archivos en la variable MOUNTS. Es especialmente importante usar ya sea cardctl o cardinfo para apagar una tarjeta de red cuando NFS se encuentre activo. No es posible desmontar limpiamente los sistemas de archivos NFS si una tarjeta de red es símplemente expulsada sin precaución.

En adición a los parámetros usuales de configuración de red, el script network.opts puede especificar acciones extra a tomar después de que una interface es configurada, o antes de que se apague la interface. Si network.opts define una función de shell llamada start_fn, será invocada por el script de red después de que la interface sea configurada, y el nombre de interface se pasará a la función como su primer (y único) argumento. Similarmente, si es definido, stop_fn se invocará antes de apagar una interfaz.

El tipo de transceptor se puede seleccionar usando la configuración IF_PORT. Esto puede ser, ya sea un valor numérico como en las versiones anteriores de PCMCIA, o una palabra clave que identifique el tipo de transceptor. Todos los controladores de red están configurados por omisión para autodetectar la interface si es posible, o bien, utilizar 10baseT. El comando ifport se puede utilizar para comprobar el tipo de transceptor actual. Por ejemplo:

       # ifport eth0 10base2
       #
       # ifport eth0
       eth0    2 (10base2)

El controlador actual (3.0.10 o posterior) de 3c589 debe autodetectar rápidamente los cambios de transceptor en cualquier momento. Las primeras versiones del controlador 3x589 tenían un algoritmo de autodetección de transceptores algo lento y no muy amistoso. Para esas versiones, el cable de red apropiado debe ser conectado a la tarjeta cuando la tarjeta es configurada, o se puede forzar la autodetección con:

       ifconfig eth0 down up

Comentarios acerca de tarjetas específicas