Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 37c5aeaddb0876d2a87daf571c6f662e > files > 41

howto-text-es-2006-5mdv2010.0.noarch.rpm

  Linux PCMCIA COMO
  David Hinds, dhinds@hyper.stanford.edu
  Romero, dlr@cuates.pue.upaep.mx
  Original: v2.40, 10 Septiembre 1999

  Este documento describe cómo instalar y usar los servicios de las tar­
  jetas 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/pcm­
  cia/home.html
  ______________________________________________________________________

  Índice general





















































  1. Información general y requerimientos de hardware

     1.1 Introducción
     1.2 Licencia y renuncia de responsabilidad
     1.3 ¿Cuál es la última versión, y dónde puedo obtenerla?
     1.4 ¿Qué sistemas están soportados?
     1.5 ¿Qué tarjetas están soportadas?
     1.6 ¿Cuándo estará soportada mi tarjeta favorita (no soportada)?
     1.7 Listas de correo y otras fuentes de información
     1.8 ¿Por qué no distribuyen binarios?
     1.9 ¿Por qué el paquete es tan grande?

  2. Compilación e instalación

     2.1 Prerequisitos y configuración del kernel
     2.2 Instalación
     2.3 Opciones de inicio
     2.4 Configuración de recursos del sistema
     2.5 Notas acerca de distribuciones de Linux específicas
        2.5.1 Debian
        2.5.2 Red Hat, Caldera, Mandrake
        2.5.3 Slackware
        2.5.4 SuSE

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

     3.1 No se cargan los módulos básicos de PCMCIA.
     3.2 Algunos módulos controladores no cargan
     3.3 fallos en la búsqueda de interrupciones
     3.4 Fallos en la búsqueda de puertos de E/S
     3.5 Fallos durante la comprobación de la memoria
     3.6 Fallo al detectar cuando se inserta o se extrae la tarjeta
     3.7 Faltan recursos del sistema
     3.8 Conflicto de recursos entre dos tarjetas
     3.9 No se completa la configuración de dispositivos

  4. Uso y características

     4.1 Herramientas para configurar y monitorizar dispositivos PCMCIA
        4.1.1 El demonio de configuración
        4.1.2 Las utilidades
        4.1.3 Inserción y extracción de tarjetas
        4.1.4 Servicios de Tarjetas y Administración Avanzada de Energía
        4.1.5 Apagado del sistema PCMCIA
     4.2 Un vistazo a los scripts de configuración de PCMCIA
     4.3 Adaptadores de red PCMCIA
        4.3.1 Parámetros de dispositivos de red
        4.3.2 Comentarios acerca de tarjetas específicas
        4.3.3 Diagnóstico de problemas con adaptadores de red
     4.4 Dispositivos serie PCMCIA y módems
        4.4.1 Parámetros de dispositivos serie
        4.4.2 Diagnóstico de problemas con dispositivos serie
     4.5 Dispositivos PCMCIA de puerto paralelo
        4.5.1 Parámetros de dispositivos paralelos
        4.5.2 Diagnóstico de problemas con dispositivos de puertos paralelos
     4.6 Adaptadores SCSI PCMCIA
        4.6.1 Parámetros de dispositivos SCSI
        4.6.2 Comentarios acerca de tarjetas específicas
        4.6.3 Diagnóstico de problemas con adaptadores SCSI
     4.7 Tarjetas de memoria PCMCIA
        4.7.1 Parámetros de dispositivos de memoria
        4.7.2 Uso de tarjetas de memoria flash
     4.8 Tarjetas PCMCIA para unidades ATA/IDE
        4.8.1 Parámetros para discos ATA/IDE
        4.8.2 Diagnóstico de problemas con adaptadores ATA/IDE
     4.9 Tarjetas multifunción
  5. Temas avanzados

     5.1 Apartado de recursos para dispositivos PCMCIA
     5.2 Cómo puedo separar configuraciones de los dispositivos para casa y el trabajo?
     5.3 Arranque desde un dispositivo PCMCIA
        5.3.1 El script
        5.3.2 Creación de un disquete de inicio
        5.3.3 Instalación de una imagen

  6. Problemas con tarjetas no soportadas

     6.1 Configuración de tarjetas no reconocidas
     6.2 Soporte para una tarjeta ethernet compatible con NE2000
     6.3 Tarjetas PCMCIA para unidades de disquete
     6.4 ¿Qué hay de las tarjetas Xircom?

  7. Trucos para depurar e información de programación

     7.1 Envío de informes de
     7.2 Interpretación de los informes generados por los
     7.3 Primeros auxilios al depurar a bajo nivel
     7.4 (TT
     7.5 Programación de controladores de servicios PCMCIA para nuevas tarjetas
     7.6 Sugerencias para los autores de controladores PCMCIA
     7.7 Sugerencias para encargados de las distribuciones de Linux

  8. Anexo: El INSFLUG



  ______________________________________________________________________

  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:


  ·  Cirrus Logic PD6710, PD6720, PD6722, PD6729, PD6730, PD6732, PD6832

  ·  Intel i82365sl B, C, y secuencias DF, 82092AA


  ·  O2Micro OZ6729, OZ6730, OZ6832, OZ6833, OZ6836, OZ6860

  ·  Omega Micro 82C092G

  ·  Ricoh RF5C296, RF5C396, RL5C465, RL5C466, RL5C475, RL5C476, RL5C478

  ·  SMC 34C90

  ·  Texas Instruments PCI1130, PCI1131, PCI1210, PCI1220, PCI1221,
     PCI1250A, PCI1251A, PCI1251B, PCI1450

  ·  Toshiba ToPIC95, ToPIC97 (experimental)

  ·  Vadem VG465, VG468, VG469

  ·  VLSI Technologies 82C146, VCF94365

  ·  VIA VT83C469

  ·  Databook DB86082, DB86082A, DB86084, DB86084A, DB86072, DB86082B

  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:


  ·  El árbol de fuentes del kernel, serie 2.0.*, 2.1.*, o 2.2.*

  ·  Un conjunto apropiado de utilidades de módulos.

  ·  La interface de utilidades XForms para X11 (Opcional).

  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:


  ·  Descomprima pcmcia-cs-3.0.?.tar.gz en /usr/src

  ·  Ejecute make config en el nuevo directorio pcmcia-cs-3.0.?


  ·  Ejecute make all, y luego make install.

  ·  Configure el script de inicio y los archivos de opciones en
     /etc/pcmcia para su sistema.

  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:


  ·  Los controladores Cirrus tienen muchos parámetros de
     sincronización.  Lo más importante parece ser el indicador
     cmd_time, la cual determina la longitud de los ciclos de bus
     PCMCIA. En los sistemas rápidos 486 (DX4-100, por ejemplo) parece
     ser beneficioso el incrementar esto de 6 (por omisión) a 12 o 16.

  ·  El controlador Cirrus PD6729 PCI tiene el indicador fast_pci, la
     cual debe establecerse si la velocidad del bus PCI es mayor a 25
     Mhz.

  ·  Para controladores Vadem VG-468 y Databook TCIC-2, el indicador
     async_clock cambia la velocidad relativa del bus PCMCIA y los
     ciclos de bus del equipo. Activar este indicador añade estados de
     espera extra a algunas operaciones. Sin embargo, todavía no he
     sabido de ningún portátil que necesite esto.


  ·  El módulo pcmcia_core tiene el parámetro cis_speed para cambiar la
     velocidad de la memoria, la cual se usa para acceder a la
     Estructura de Información de Tarjeta (Card Information Structure)
     (CIS) de una tarjeta. En algunos sistemas con pulsos de bus
     rápidos, incrementar este parámetro (por ejemplo, reducir la
     velocidad de los accesos a tarjeta) puede resultar beneficioso para
     quien tenga problemas al reconocerlas.

  ·  Esto no es cuestión de sincronización, pero si Vd. tiene más de un
     controlador ISA-a-PCMCIA en su sistema o tiene bahías extra en una
     estación, el módulo i82365 debe ser cargado con el parámetro
     extra_sockets establecido a 1. Esto no deberá ser necesario para
     detección de puentes PCI-a-PCMCIA y PCI-a-CardBus.

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


  ·  En un ARM Pentium-90 o en un Midwest Micro Soundbook Plus, use
     freq_bypass=1 cmd_time=8.

  ·  En un Midwest Micro Soundbook Elite, use cmd_time=12.

  ·  En un Gateway Liberty, pruebe con cmd_time=16.

  ·  En un Samsung SENS 810, use fast_pci=1.


  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.


  ·  En un AMS SoundPro, excluya la irq 10.

  ·  En algunos modelos AMS TravelPro 5300, use el rango de memoria
     0xc8000-0xcffff.

  ·  En un BMX 486DX2-66, excluya irq 5, irq 9.

  ·  En un Chicony NB5, use el rango de memoria 0xda000-0xdffff.

  ·  En un Compaq Presario 1020, excluya el puerto 0x2f8-0x2ff, irq 3,
     irq 5.

  ·  En un HP Omnibook 4000C, excluya el puerto 0x300-0x30f.

  ·  En un IBM ThinkPad 380, y posiblemente en las series 385 y 600,
     excluya el puerto 0x230-0x233, e irq 5.

  ·  En un IBM ThinkPad 600, excluya el puerto 0x2f8-0x2ff.

  ·  En un Micron Millenia Transport, excluya irq 5, irq 9.

  ·  En un NEC Versa M, excluya irq 9, y el puerto 0x2e0-2ff.

  ·  En un NEC Versa P/75, excluya irq 5, irq 9.

  ·  En un NEC Versa S, excluya irq 9, irq 12.

  ·  En las series NEC Versa 6000, excluya el puerto 0x2f8-0x33f, irq 9,
     irq 10

  ·  En un ProStar 9200, Altima Virage, y Acquiline Hurricane DX4-100,
     excluya irq 5, y el puerto 0x330-0x35f.  Puede usar el rango de
     memoria 0xd8000-0xdffff.

  ·  En un Siemens Nixdorf SIMATIC PG 720C, use el rango de memoria
     0xc0000-0xcffff, y el puerto 0x300-0x3bf.

  ·  En un TI TravelMate 5000, use el rango de memoria 0xd4000-0xdffff.

  ·  En un Toshiba T4900 CT, excluya irq 5, y los puertos 0x2e0-0x2e8,
     0x330-0x338.

  ·  En un Twinhead 5100, HP 4000, Sharp PC-8700 and PC-8900, excluya
     irq 9 (sonido), irq 12.

  ·  En un MPC 800 Series, excluya irq 5, y el puerto 0x300-0x30f para
     el CD-ROM.


  2.5.  Notas acerca de distribuciones de Linux específicas


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


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


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


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


  2.5.4.  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:


  ·  Aparecen errores acerca de que la versión del kernel difiere cuando
     se ejecuta el script de inicio de PCMCIA.

  ·  Después de iniciar, lsmod no muestra algún módulo PCMCIA.

  ·  cardmgr informa no pcmcia driver in /proc/devices en el registro
     del sistema.

  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:


  ·  Si obtuvo controladores precompilados como parte de una
     distribución de Linux, verifique que esté usando el mismo kernel
     que venía con su distribución, sin modificaciones. Si pretende usar
     los módulos precompilados que venían con su distribución, deberá
     permanecer con el mismo kernel que trajera ésta.

  ·  Si ha reconfigurado o actualizado su kernel, probablemente
     necesitará compilar e instalar el paquete PCMCIA desde cero. Esto
     se hace fácilmente si ya tiene instalada la estructura fuente del
     kernel. Revise la sección ``Compilación e instalación'' para
     instrucciones más detalladas.

  ·  En algunos casos, las incompatibilidades en otros componentes del
     sistema pueden prevenir la carga correcta de los módulos del
     kernel. Si ha actualizado su propio kernel, ponga atención a la
     sección ``Requisitos'' acerca de utilidades para módulos y binutils
     que se listan en el archivo Documentation/Changes del árbol de
     directorios de los fuentes del kernel.


  3.2.  Algunos módulos controladores no cargan


  Síntomas:


  ·  Los módulos base (pcmcia_core, ds, i82365) cargan correctamente.

  ·  Al insertar una tarjeta, emite un pitido agudo + un pitido grave.

  ·  cardmgr informa de errores de versiones diferentes en el registro
     del sistema.

  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:


  ·  El controlador serie serial_cs requiere que el soporte en el kernel
     esté activado con CONFIG_SERIAL. Este controlador se debe compilar
     como módulo.

  ·  El soporte para tarjetas serie multipuerto o tarjetas multifunción
     que incluyen dispositivos serie o módems, requieren que se active
     CONFIG_SERIAL_SHARE_IRQ.

  ·  Los clientes SCSI requieren que CONFIG_SCSI esté activada, junto
     con las opciones apropiadas para los controladores de alto nivel
     (CONFIG_BLK_DEV_SD, CONFIG_BLK_DEV_SR etc. para kernels 2.1) que
     pueden ser compilados como módulos.

  ·  Los controladores de red requieren que se habilite CONFIG_INET El
     soporte para red del kernel no se puede compilar como módulo.

  ·  El cliente token-ring requiere que el kernel se compile con la
     opción CONFIG_TR activada.

  Hay dos formas de proceder:


  ·  Recompile el kernel con las características necesarias activadas.

  ·  Si las características han sido compiladas como módulos, entonces
     modifique /etc/pcmcia/config para precargar esos módulos.

  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:


  ·  El sistema se congela cuando se cargan los controladores PCMCIA,
     incluso cuando no hay tarjetas presentes.

  ·  El registro del sistema muestra que el sondeo tuvo éxito, justo
     antes de que se congele, pero no muestra resultados de las pruebas
     de interrupciones.




  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:


  ·  El sondeo de interrupciones puede estar restringida a una lista de
     interrupciones utilizando el parámetro irq_list para los
     controladores. Por ejemplo, irq_list=5,9,10 limitará la búsqueda a
     tres interrupciones. Todos los dispositivos PCMCIA estarán
     restringidos a usar esas interrupciones (asumiendo que pasen el
     tanteo). Puede ser que necesite determinar qué interrupciones son
     tanteables de forma segura a base de ensayo y error.

  ·  El sondeo de interrupciones puede desactivarse completamente al
     cargar el controlador del socket con la opción do_scan=0. En este
     caso, se usará una interrupción por omisión, la cual evita
     interrupciones ya utilizadas por otros dispositivos.

  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:


  ·  El sistema se congela cuando cardmgr se inicia por primera vez,
     incluso cuando no hay tarjetas presentes.

  ·  El registro del sistema muestra un tanteo positivo del controlador
     del host, incluyendo resultados de sondeos de interrupción, pero no
     muestra resultados de sondeos de E/S.

  ·  En algunos casos, el tanteo de E/S será positivo, pero avisa de un
     gran número de de exclusiones aleatorias.

  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:

  ·  Los controladores principales cargan correctamente cuando no hay
     tarjetas presentes, sin errores en el registro del sistema.

  ·  El sistema se congela y/o reinicia tan pronto como se inserte una
     tarjeta antes de que se escuche algún pitido.

  O alternativamente:


  ·  Todas las inserciones de tarjetas generan un pitido agudo seguido
     de un pitido grave.

  ·  Todas las tarjetas son identificadas como anonymous memory cards

  ·  El registro del sistema avisa que varios rangos de memoria han sido
     excluidos.

  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.


  ·  cs: warning: no high memory space available!

  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:


  ·  Las tarjetas se detectan y configuran apropiadamente si están
     presentes al momento de iniciar.

  ·  Los controladores no responden a los eventos de inserción y
     extracción, ya sea registrando los eventos en el registro del
     sistema, o emitiendo pitidos.

  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:


  ·  Cuando se inserta una tarjeta, es identificada correctamente, pero
     no puede ser configurada (secuencia de pitidos agudos/graves).

  ·  Aparecen en el registro del sistema alguno de los siguientes
     mensajes:









         RequestIO: Resource in use
         RequestIRQ: Resource in use
         RequestWindow: Resource in use
         GetNextTuple: No more items
         could not allocate nn IO ports for CardBus socket n
         could not allocate nnK memory for CardBus socket n
         could not allocate interrupt for CardBus socket n





  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:


  ·  Dos tarjetas funcionan bien cuando se usan separadamente.

  ·  Cuando ambas tarjetas se insertan, sólo funciona una.

  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:


  ·  Cuando se inserta una tarjeta, se escucha un pitido agudo.

  ·  Las inserciones y extracciones posteriores de tarjetas son
     ignoradas.

  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.


  4.1.1.  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).


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


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


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


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





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





  4.3.2.  Comentarios acerca de tarjetas específicas



  ·  Con las tarjetas IBM CCAE y Socket EA, el tipo de transceptor
     (10base2, 10baseT, AUI), necesita configurarse cuando el
     dispositivo de red está configurado. Asegúrese de que el tipo de
     transceptor que aparece en el registro del sistema concuerda con su
     conexión.

  ·  Los controladores para tarjetas SMC, Megahertz, Ositech, y 3Com
     deben autodetectar el tipo de red conectada (10base2 o 10baseT).
     Establecer el tipo de transceptor cuando se carga el controlador
     sirve para definir la «primera búsqueda» de la tarjeta.

  ·  La Farallon EtherWave actualmente está basada en la 3Com 3c589, con
     un transceptor especial. Aunque la EtherWave usa conexiones al
     estilo 10baseT, su transceptor requiere que la 3c589 sea
     configurada en modo 10base2.

  ·  Si tiene problemas con un adaptador IBM CCAE, NE4100, Thomas
     Conrad, o Kingston, pruebe a incrementar el tiempo de acceso con la
     opción mem_speed=# al módulo pcnet_cs. Un ejemplo de cómo hacer
     esto se muestra en el archivo config.opts. Pruebe con velocidades
     por encima de 1000 (en nanosegundos).

  ·  Para el adaptador New Media Ethernet, en algunos sistemas, puede
     ser necesario incrementar el tiempo de acceso al puerto de E/S con
     la opción io_speed=# cuando se cargue el módulo pcmcia_core.  Edite
     CORE_OPTS en el script de inicio para activar esta opción.

  ·  El soporte multicast en el controlador New Media Ethernet está
     incompleto. El último controlador funcionará con kernels multicast,
     pero ignorará los paquetes multicast. El modo promiscuo debe
     funcionar apropiadamente.

  ·  El controlador usado por los controladores token ring IBM y 3Com
     parecen comportarse bastante mal si las tarjetas no están
     conectadas cuando son inicializadas. Conecte siempre esas tarjetas
     a la red antes de activarlas. Si ifconfig informa que la dirección
     de harware como todo 0, esto debe ser debido a un problema de
     configuración de la ventana de memoria.

  ·  Algunas tarjetas Linksys, D-Link, e IC-Card 10baseT/10base2 tienen
     una forma única de seleccionar el tipo de transceptor que no es
     manejado por los controladores de Linux. Una solución es arrancar
     DOS y utilizar la utilidad proporcionada por el fabricante para
     seleccionar el transceptor, haciendo entonces un arranque «en
     caliente» de Linux. Alternativamente, hay una utilidad Linux para
     realizar esta función, que está disponible en
      ftp://hyper.stanford.edu/pub/pcmcia/extras/dlport.c.

  ·  Para adaptadores de red inalámbricos WaveLAN, Jean Tourrilhes,
     jt@hpl.hp.com)  tiene disponible el Wireless HOWTO (Cómo
     inalámbrico) en
     http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/


  4.3.3.  Diagnóstico de problemas con adaptadores de red



  ·  ¿Es reconocida su tarjeta como una tarjeta ethernet? Revise el
     registro del sistema y asegúrese de que cardmgr identifique la
     tarjeta correctamente e inicia uno de los controladores de red. Si
     no lo hace, su tarjeta puede ser utilizable todavía si es
     compatible con una tarjeta soportada. Esto es posible hacerlo
     fácilmente si la tarjeta dice ser NE2000 compatible.

  ·  ¿Está configurada la tarjeta apropiadamente? Si está usando una
     tarjeta soportada, y fue reconocida por cardmgr, pero todavía no
     funciona, pudo ser un conflicto de interrupción o puerto con otro
     dispositivo. Determine qué recursos está utilizando la tarjeta (en
     el registro del sistema), e intente de nuevo excluyéndolos en
     /etc/pcmcia/config.opts para forzar a la tarjeta a usar otros.

  ·  Si su tarjeta parece estar configurada adecuadamente, pero a veces
     se congela, particularmente bajo carga alta, puede ser que necesite
     intentar cambiar los parámetros de sincronización de su controlador
     del socket. Revise la sección ``Opciones de Inicio'' para más
     información.

  ·  Si obtiene mensajes de network unreachable cuando intenta acceder a
     la red, la información especificada en /etc/pcmcia/network.opts es
     incorrecta. Este mensaje es una indicación absolutamente a prueba
     de tontos de que hay un error de rutado.  Por otra parte, las
     tarjetas mal configuradas normalmente fallarán silenciosamente.


  ·  Para diagnosticar problemas en /etc/pcmcia/network.opts, empiece
     tratando de hacer ping a otros sistemas en la misma subred usando
     sus direcciones IP. Trate entonces de hacer ping a su puerta de
     enlace o «pasarela» (gateway), y a máquinas en otras subredes.
     Debe ser posible hacer ping a las máquinas por su nombre si lleva a
     cabo dichas pruebas con éxito.

  ·  Asegúrese que su problema sea PCMCIA. Puede ser muy útil comprobar
     si la tarjeta funciona correctamente bajo DOS con los controladores
     del fabricante.  Verifique bien sus modificaciones al script
     /etc/pcmcia/network.opts. Asegúrese que su cable, conector «T»,
     terminador, etc. estén funcionando.


  4.4.  Dispositivos serie PCMCIA y módems


  Los dispositivos serie de Linux son gestionados por medio de los
  archivos de dispositivo especiales /dev/ttyS* y /dev/cua*. En los
  kernels pre-2.2 los dispositivos ttyS* eran para conexiones entrantes,
  como módems. El uso de dispositivos cua* se desaprueba en los kernels
  actuales, y se puede usar ttyS* para todas las aplicaciones. La
  configuración de un dispositivo serie se puede examinar y modificar
  con el comando setserial.

  Cuando se detecta una tarjeta serie o módem, se le asignará el primer
  slot de dispositivo serie que se encuentre disponible. Este será
  usualmente /dev/ttyS1 (cua1) o /dev/ttyS2 (cua2), dependiendo del
  número de puertos serie que tenga. El dispositivo ttyS* es el que
  aparecerá en /var/run/stab. El script de opciones por omisión para
  dispositivos serie, /etc/pcmcia/serial.opts, enlazará el dispositivo a
  /dev/modem por conveniencia. Para los kernels pre-2.2, el enlace se
  hace al dispositivo cua*.

  No intente usar /etc/rc.d/rc.serial para configurar un módem PCMCIA.
  Este script sólo debería ser utilizado para configurar dispositivos no
  extraíbles. Modifique /etc/pcmcia/serial.opts si quiere hacer algo
  especial para configurar su módem. No intente tampoco cambiar las
  configuraciones de E/S y puerto de un dispositivo serie utilizando
  setserial. Esto podría decir al controlador serie que busque al
  dispositivo en un lugar diferente, pero no cambiar cómo el hardware de
  la tarjeta está configurado actualmente. El script de configuración
  serie le permite especificar otras opciones para setserial, así como
  si se debe añadir una línea a /etc/inittab para este puerto.

  La dirección del dispositivo pasada a serial.opts tiene tres campos
  separados por comas: el primero es el esquema, el segundo es el número
  de socket, y el tercero es la instancia del dispositivo. La instancia
  del dispositivo puede tomar varios valores para tarjetas que soporten
  múltiples puertos serie, pero para tarjetas de un sólo puerto, siempre
  será 0. Si comunmente usa más de un módem, puede especificar
  diferentes configuraciones basadas en la posición del socket, como en:



              case "$ADDRESS" in
              *,0,*)
                  # Opciones para un modem en el socket 0
                  LINK=/dev/modem0
                  ;;
              *,1,*)
                  # Opciones para un modem en el socket 1
                  LINK=/dev/modem1
                  ;;
              esac

  Si un módem PCMCIA ya está configurado cuando Linux arranca, puede ser
  identificado incorrectamente como un puerto serie ordinario. Esto es
  inofensivo, sin embargo, cuando los controladores PCMCIA toman el
  control del módem, se le asignará un slot de dispositivo diferente.
  Por ello es mejor, ya sea analizar  /var/run/stab o usar /dev/modem,
  en lugar de indicar que este módulo debe recargarse. Edite la entrada
  del dispositivo serie, de modo que se lea:



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





  4.4.1.  Parámetros de dispositivos serie


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



     LINK
        Especifica una ruta para un enlace simbólico a crear al
        dispositivo callout (para llamar hacia el exterior) (ejemplo,
        /dev/cua* para kernels pre-2.2 o /dev/ttyS* para kernels 2.2.x).


     SERIAL_OPTS
        Especifica las opciones que se pasan al comando setserial.


     INITTAB
        Si se especifica, se usará para añadir una entrada inittab para
        el dispositivo.


  Por ejemplo:



              case "$ADDRESS" in
              *,*,*,*)
                  LINK="/dev/modem"
                  SERIAL_OPTS=""
                  INITTAB="/sbin/getty"





  4.4.2.  Diagnóstico de problemas con dispositivos serie



  ·  ¿Se reconoce su tarjeta como un módem? Revise el registro del
     sistema y asegúrese que cardmgr identifica la tarjeta correctamente
     e inicia el controlador serial_cs. Si no, necesitará añadir una
     nueva entrada en el fichero /etc/pcmcia/config para que pueda ser
     identificado apropiadamente. Consulte la sección ``Configuración de
     tarjetas no reconocidas'' para más detalles.

  ·  ¿Es el módem configurado satisfactoriamente por serial_cs?
     Nuevamente, revise el registro del sistema y busque los mensajes
     del controlador serial_cs. Si ve mensajes como register_serial()
     failed debe tener un conflicto de puerto de E/S con otro
     dispositivo.  Otra causa de conflictos tiene lugar cuando el
     dispositivo es reconocido como una UART 8250;  la mayoría de módems
     modernos deben identificarse como UART 16550A. Si piensa que está
     viendo un conflicto de puertos, edite /etc/pcmcia/config.opts y
     excluya el rango de puertos que fue reservado para el módem.

  ·  ¿Hay un conflicto de interrupciones? Si el registro del sistema se
     parece normal, pero el módem no funciona, pruebe a cambiar la irq a
     0 usando setserial y comprobar si el módem funciona. Esto causa que
     el controlador serie use un modo de búsqueda más bajo en lugar de
     usar interrupciones. Si esto parece solucionar el problema, es
     probable que otro dispositivo del sistema esté usando la
     interrupción seleccionada por serial_cs. Deberá añadir una línea a
     /etc/pcmcia/config.opts para excluir esta interrupción.

  ·  Si el módem parece funcionar muy, muy lento, esto es casi un
     indicador seguro de un conflicto de interrupciones. Asegúrese que
     su problema sea realmente PCMCIA. Puede ayudarle comprobar si la
     tarjeta funciona bajo DOS con los controladores del fabricante. Así
     mismo, evite probar la tarjeta con algo complicado como SLIP o PPP
     hasta que esté seguro que haga conexiones simples. Si es capaz de
     establecer «conexiones simples», pero no con SLIP, su problema es
     más probable que tenga que ver con SLIP, y no con PCMCIA.

  ·  Si obtiene mensajes del kernel indicando que el módulo serial_cs no
     puede cargarse, significa que su kernel no tiene soporte para
     dispositivo serie. Si ha compilado el controlador serie como
     módulo, debe modificar /etc/pcmcia/config para indicar que el
     módulo serie debe cargarse antes de serial_cs.


  4.5.  Dispositivos PCMCIA de puerto paralelo


  El controlador de puerto paralelo de Linux está estructurado por
  capas, así que varios tipos de dispositivos de alto nivel pueden
  compartir el mismo controlador de puerto de bajo nivel. Los
  dispositivos se gestionan a través de los archivos especiales de
  dispositivo /dev/lp*. La configuración de un dispositivo de impresora
  puede examinarse y modificarse con el comando tunelp.

  El módulo parport_cs depende de los controladores parport y
  parport_pc, los cuales pueden ser compilados dentro del kernel o bien
  compilados como módulos. La estructura del controlador por capas
  significa que cualquiera de los controladores paralelos de alto nivel
  (tales como el controlador plip, el controlador de impresora, etc.)
  deben ser compilados como módulos. Estos controladores sólo reconocen
  dispositivos de puerto paralelo en el momento de iniciar el módulo,
  así que pueden cargarse después de que cualquier dispositivo paralelo
  PC Card sea configurado.

  La dirección del dispositivo pasada a parport.opts tiene tres campos
  separados por comas: el primero es el esquema, el segundo es el número
  de socket, y el tercero es la instancia del dispositivo. La instancia
  del dispositivo puede tomar varios valores para tarjetas que soportan
  múltiples puertos paralelos, pero para tarjetas de un solo puerto,
  siempre será 0. Si usa habitualmente más de una tarjeta, necesitará
  especificar diferentes configuraciones basadas en la posición del
  socket, como en:





         case "$ADDRESS" in
         *,0,*)
             # Opciones para una tarjeta en el socket 0
             LINK=/dev/printer0
             ;;
         *,1,*)
             # Opciones para una tarjeta en el socket 1
             LINK=/dev/printer1
             ;;
         esac




  Si configura el kernel para cargar el controlador básico de puerto
  paralelo como módulo, debe editar /etc/pcmcia/config para indicar qué
  módulos necesitan cargarse. Edite la entrada para el dispositivo
  paralelo de modo que se lea:



              device "parport_cs"
                class "parport" module "misc/parport", "misc/parport_pc", "parport_cs"





  4.5.1.  Parámetros de dispositivos paralelos


  Los siguientes parámetros pueden especificarse en parport.opts:



     LINK
        Especifica la ruta del enlace simbólico a crear hacia el puerto
        de impresora.


     LP_OPTS
        Especifica las opciones a pasar al comando tunelp.


  Por ejemplo:



              case "$ADDRESS" in
              *,*,*,*)
                  LINK="/dev/printer"
                  LP_OPTS=""





  4.5.2.  Diagnóstico de problemas con dispositivos de puertos paralelos



  ·  ¿Hay un conflicto de interrupciones? Si el registro del sistema
     parece estar bien, pero el puerto no funciona, cambie la irq a 0
     usando tunelp, y compruebe si las cosas mejoran.  Esto cambia el
     controlador a modo de búsqueda. Si parece solucionar el problema,
     es probable que otro dispositivo en su sistema esté utilizando la
     interrupción seleccionada por parport_cs. Deberá añadir una línea a
     /etc/pcmcia/config.opts para excluir esta interrupción.

  ·  Si su kernel genera mensajes indicando que el módulo parport_cs no
     puede cargarse, significa que el kernel no tiene soporte para
     dispositivos paralelos. Si tiene compilado el controlador paralelo
     como módulo, necesita modificar /etc/pcmcia/config para indicar que
     los módulos parport y parport_pc deben cargarse antes que
     parport_cs.


  4.6.  Adaptadores SCSI PCMCIA


  Todos los controladores que dan soporte actualmente a tarjetas SCSI
  PCMCIA son trabajos basados en alguna de las siguientes tarjetas bus
  ISA: Qlogic, Adaptec AHA-152X, o Future Domain TMC-16x0. Los
  controladores PCMCIA son compilados enlazando parcialmente código
  específico PCMCIA (en qlogic_cs.c, toaster_cs.c, o fdomain_cs.c) con
  el controlador SCSI normal de Linux. Debido a las limitaciones en el
  modelo del controlador SCSI de Linux, sólo se soporta una tarjeta
  extraíble por controlador.

  Cuando se detecta un nuevo adaptador SCSI, los controladores SCSI
  sondearán la presencia de dispositivos. Revise el registro del sistema
  para asegurar que los dispositivos sean detectado apropiadamente. Los
  nuevos dispositivos SCSI se asignarán a los primeros archivos de
  dispositivo SCSI disponibles. El primer disco SCSI será /dev/sda, la
  primera cinta SCSI será /dev/st0, y el primer CD-ROM será /dev/scd0.

  En /var/run/stab se muestra una lista de los dispositivos conectados a
  este adaptador, y el script de configuración /etc/pcmcia/scsi se
  llamará una vez para cada dispositivo conectado, ya sea para
  configurar o apagar ese dispositivo. El script por omisión no toma
  ninguna acción para configurar dispositivos SCSI, pero desmontará
  apropiadamente los sistemas de archivos en dispositivos SCSI cuando se
  extraiga la tarjeta.

  Las direcciones de dispositivo que se pasan a scsi.opts son
  complicadas, debido a la variedad de cosas que pueden conectarse a un
  adaptador SCSI. Las direcciones consisten de de seis o siete campos
  separados por comas: el esquema actual, el tipo de dispositivo, el
  número de socket, el canal SCSI, ID, y el número lógico de unidad, y
  opcionalmente, el número de partición. El tipo de dispositivo será sd
  para discos, st para cintas, sr para unidades de CD-ROM, y sg para
  dispositivos SCSI genéricos. Para la mayoría de configuraciones, la
  unidad lógica y el canal SCSI serán 0. Para unidades de disco con
  varias particiones, scsi.opts se llamará primero para toda la unidad,
  con direcciones de cinco campos. El script deberá establecer la
  variable PARTS una lista de particiones.  Entonces, scsi.opts será
  llamado para cada partición, con las direcciones más largas, de siete
  campos.

  Si su kernel no tiene un controlador de alto nivel (disco, cinta, etc)
  para un dispositivo SCSI en particular, entonces no será configurado
  por los controladores PCMCIA. Como efecto lateral, el nombre del
  dispositivo en /var/run/stab será algo como sd#nnnn donde nnnn es un
  número hexadecimal de cuatro dígitos. Esto pasa cuando cardmgr no
  puede traducir una ID de un dispositivo SCSI a su nombre de
  dispositivo correspondiente en Linux.

  Es posible modularizar los controladores SCSI de alto nivel para que
  puedan cargarse según demanda. Para hacerlo, necesita editar
  /etc/pcmcia/config para decirle a cardmgr qué módulos extra necesitan
  ser cargados cuando sea configurado su adaptador. Por ejemplo:

              device "aha152x_cs"
                class "scsi" module "scsi/scsi_mod", "scsi/sd_mod", "aha152x_cs"




  Especificaría que se cargase el módulo principal SCSI y el módulo
  controlador de disco antes de cargar el módulo controlador PCMCIA
  normal.  El script Configure de PCMCIA no detectará automáticamente
  módulos SCSI modularizados, así que necesitará usar la opción de
  configuración manual para habilitar el soporte SCSI.

  Encienda siempre los dispositivos SCSI antes de encender su portátil,
  o antes de insertar la tarjeta adaptadora, para que el bus SCSI esté
  listo cuando el adaptador se configure. También hay que ser muy
  cuidadoso al expulsar un adaptador SCSI. Asegúrese que todos los
  dispositivos SCSI asociados sean desmontados y cerrados antes de
  expulsar la tarjeta. La mejor forma de asegurar esto es usar cardctl o
  cardinfo para solicitar que se desactive la tarjeta antes de
  expulsarla físicamente. Por ahora, todos los dispositivos SCSI deberán
  encenderse antes de conectar un adaptador SCSI, y deberán permanecer
  conectados hasta que desconecte el adaptador y/o apague su portátil.

  Hay una complicación potencial cuando se usan tarjetas que no se
  presentan con adaptadores de bus ISA ordinarios. El bus SCSI
  transporta una señal termination power (corriente de terminación) que
  se necesita para que los terminadores pasivos SCSI ordinarios
  funcionen apropiadamente. Los adaptadores PCMCIA SCSI no suministran
  corriente de terminación, así que si se requiere, deberá
  proporcionarlo el dispositivo externo. Algunos dispositivos externos
  SCSI deben configurarse para suministrarlo. Otros, como el Iomega Zip
  y el Syquest EZ, usan terminadores activos que no dependen de ello. En
  algunos casos, puede ser necesario usar un bloque terminador especial
  como el APS SCSI Sentry 2, el cual tiene una fuente de alimentación
  externa. Cuando configure la entrada para el dispositivo SCSI, hágalo
  teniendo en cuenta si alguno de sus dispositivos requieren o pueden
  suministrar corriente de terminación o no.


  4.6.1.  Parámetros de dispositivos SCSI


  Los siguientes parámetros pueden ser especificados en scsi.opts:



     DO_FSTAB
        Es una opción booleana (y/n): Especifica si se debe añadir una
        entrada /etc/fstab para este dispositivo.


     DO_FSCK
        Es una opción booleana (y/n): Especifica si se debe comprobar
        este dispositivo antes de ser montado, con fsck -Ta.


     DO_MOUNT
        Es una opción booleana (y/n): Especifica si este dispositivo
        debe montarse automáticamente al momento de insertar la tarjeta.


     FSTYPE, OPTS, MOUNTPT
        El tipo de sistema de archivos, opciones de montaje, y punto de
        montaje que se utilizarán para la entrada en fstab y/o para
        montar el dispositivo.

  Por ejemplo, un script para configurar una unidad de disco en SCSI ID
  3, con dos particiones, y un CD-ROM en SCSI ID 6:



         case "$ADDRESS" in
         *,sd,*,0,3,0)
             # Este dispositivo tiene dos particiones...
             PARTS="1 2"
             ;;
         *,sd,*,0,3,0,1)
             # Opciones para la particion 1:
             #  actualizar /etc/fstab, y montar un sistema de archivos ext2 en /usr1
             DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
             FSTYPE="ext2"
             OPTS=""
             MOUNTPT="/usr1"
             ;;
         *,sd,*,0,3,0,2)
             # Opciones para la partición 2:
             #  actualizar /etc/fstab, y montar un sistema de archivos MS-DOS en /usr2
             DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
             FSTYPE="msdos"
             OPTS=""
             MOUNTPT="/usr2"
             ;;
         *,sr,*,0,6,0)
             # Opciones para un CD-ROM en SCSI ID 6
             PARTS=""
             DO_FSTAB="y" ; DO_FSCK="n" ; DO_MOUNT="y"
             FSTYPE="iso9660"
             OPTS="ro"
             MOUNTPT="/cdrom"
             ;;
         esac






  4.6.2.  Comentarios acerca de tarjetas específicas



  ·  La tarjeta Adaptec APA-1480 CardBus necesita una ventana de puerto
     de E/S grande (256 puertos contiguos alineados en un límite de 256
     puertos). Puede que sea necesario incluir las regiones de los
     puertos de E/S en /etc/pcmcia/config.opts para garantizar que cada
     ventana pueda encontrarse.

  ·  No está soportado el adaptador Adaptec APA-460 SlimSCSI. Esta
     tarjeta se vendió originalmente bajo el nombre de Trantor, y cuando
     Adaptec se unió a Trantor, continuaron vendiendo la tarjeta Trantor
     con etiqueta Adaptec. La APA-460 no es compatible con ningún
     controlador de Linux existente.

  ·  He sido informado de la mala interacción entre la tarjeta New Media
     Bus Toaster y un scanner UMAX Astra 1200s. Debido a la complejidad
     del protocolo SCSI, cuando se diagnostican problemas con
     dispositivos SCSI, es digno de considerar que combinaciones
     incompatibles como esta pueden existir y no pueden documentarse.




  4.6.3.  Diagnóstico de problemas con adaptadores SCSI



  ·  Con el controlador aha152x_cs (usado por Adaptec, New Media, y
     algunos más), parece que el soporte SCSI de conexión/reconexión
     constituye una fuente de problemas frecuentes con dispositivos de
     cinta. Para desactivar esta «característica», añada lo siguiente a
     /etc/pcmcia/config.opts:



         module "aha152x_cs" opts "reconnect=0"





  ·  Con el controlador aha152x_cs, ciertos dispositivos parecen
     requerir un tiempo de espera de inicio más grande, controlado con
     el parámetro reset_delay del módulo. La unidad CDR Yamaha 4416S es
     uno de esos dispositivos. El resultado es que el dispositivo es
     identificado sin problemas, y luego se congela el sistema. En esos
     casos, pruebe:



              module "aha152x_cs" opts "reset_delay=500"





  ·  Otra fuente potencial de problemas en el sondeo de dispositivos
     SCSI es el tanteo de LUNs múltiples. Si ve que la detección de un
     dispositivo es realizada sin problemas, seguida de «timeouts» del
     bus SCSI cuando se sondea el LUN 1 para ese dispositivo, debe
     desactivar la opción CONFIG_SCSI_MULTI_LUN del kernel.

  ·  Si tiene compilado el soporte SCSI modularmente (CONFIG_SCSI es m),
     debe modificar /etc/pcmcia/config para cargar los módulos SCSI
     antes de que se cargue el controlador *_cs apropiado.

  ·  Si obtiene mensajes de tipo aborting command due to timeout
     (abortando el comando debido a timeout), cuando se sondea el bus
     SCSI, es muy probable que tenga un conflicto de interrupciones.

  ·  Si el controlador del host avisa no SCSI devices found (no se han
     encontrado dispositivos SCSI), verifique que el kernel fue
     compilado con los controladores SCSI de alto nivel apropiados para
     sus dispositivos (por ejemplo, disco, cinta, CD-ROM, y/o
     genéricos). Si falta un controlador de alto nivel, los dispositivos
     de ese tipo se ignorarán.



  4.7.  Tarjetas de memoria PCMCIA


  El controlador memory_cs maneja todos los tipos de tarjetas de
  memoria, y también proporciona acceso directo al espacio de la
  dirección de memoria PCMCIA para tarjetas que tienen otras funciones.
  Cuando se carga, crea una combinación de dispositivos de caracteres y
  de bloques.  Revise la página del manual del módulo para ver una
  descripción completa del esquema de nombres de estos dispositivos. Los
  dispositivos de bloques se usan para tener acceso a disco (creando y
  montando sistemas de archivos, etc.).  Los dispositivos de caracteres
  son para lecturas en bruto (que no se procesan) que no se guardan en
  el buffer y son escritas en posiciones arbitrarias.

  La dirección de dispositivo que se pasa a memory.opts consiste de dos
  campos: el esquema, y el número de socket. Las opciones se aplican a
  la primera partición de memoria común en la tarjeta correspondiente.

  Algunas tarjetas de memoria antiguas, y la mayoría de las tarjetas de
  RAM simple estática, carecen de Card Information Structure, CIS
  (Estructura de Información de Tarjeta), que es el esquema que las
  tarjetas PCMCIA usan para identificarse a si mismas. Normalmente,
  cardmgr asumirá que una tarjeta que carece de CIS es una tarjeta de
  memoria simple, y cargará el controlador memory_cs. Por tanto, un
  efecto lateral es que otros tipos de tarjetas pueden detectarse
  erróneamente como tarjetas de memoria.

  El controlador memory_cs usa un algoritmo heurístico para determinar
  la capacidad de esas tarjetas. Este algoritmo no funciona con tarjetas
  protegidas contra escritura, y puede cometer errores en algunos otros
  casos. Si una tarjeta se configura de forma errónea, su tamaño puede
  especificarse explícitamente cuando se haga uso de los comandos dd o
  mkfs.


  4.7.1.  Parámetros de dispositivos de memoria




     DO_FSTAB
        Es una opción booleana (y/n): Especifica si se debe añadir una
        entrada /etc/fstab para este dispositivo.


     DO_FSCK
        Es una opción booleana (y/n): Especifica si se debe comprobar
        este dispositivo antes de ser montado, con fsck -Ta.


     DO_MOUNT
        Es una opción booleana (y/n): Especifica si este dispositivo
        debe montarse automáticamente en el momento de insertar la
        tarjeta.


     FSTYPE, OPTS, MOUNTPT
        El tipo de sistema de archivos, opciones de montaje, y punto de
        montaje que se utilizarán para la entrada en fstab y/o para
        montar el dispositivo.


  He aquí un ejemplo de un script que montará automáticamente las
  tarjetas de memoria basándose en el socket en que estén insertadas:












         case "$ADDRESS" in
         *,0,0)
             # Montar sistema de archivos, pero no actualizar /etc/fstab
             DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
             FSTYPE="ext2" ; OPTS=""
             MOUNTPT="/mem0"
             ;;
         *,1,0)
             # Montar sistema de archivos, pero no actualizar /etc/fstab
             DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
             FSTYPE="ext2" ; OPTS=""
             MOUNTPT="/mem1"
             ;;
         esac






  4.7.2.  Uso de tarjetas de memoria flash


  La dirección de dispositivo que se pasa a ftl.opts consiste en tres o
  cuatro campos: el esquema, el número de socket, el número de región, y
  opcionalmente, el número de partición. La mayoría de tarjetas flash
  tienen sólo una región de memoria flash, así que el número de región
  será generalmente cero siempre.

  Para usar una tarjeta de memoria flash como un dispositivo de bloques
  del tipo de un disco ordinario, primero se crea una partición FTL, o
  flash translation layer, en el dispositivo por medio del comando
  ftl_format. Esta capa oculta los detalles específicos de dispositivo
  de la programación de la memoria flash y hace que la tarjeta se vea
  como un simple dispositivo de bloques. Por ejemplo:



              ftl_format -i /dev/mem0c0c




  Nótese que este comando accede a la tarjeta por medio de la interface
  raw de la tarjeta de memoria. Una vez formateada, la tarjeta puede
  tratarse como un dispositivo de bloques ordinario por medio del
  controlador ftl_cs. Por ejemplo:



              mke2fs /dev/ftl0c0
              mount -t ext2 /dev/ftl0c0 /mnt




  La nomenclatura de dispositivos FTL es difícil. Los números menores de
  los dispositivos tienen tres partes: el número de tarjeta, el número
  de región en esa tarjeta, y opcionalmente, la partición dentro de esa
  región. Una región puede ser tratada como un simple dispositivo de
  bloques sin tabla de partición (como un disquete), o puede
  particionarse como un disco duro.  El dispositivo ftl0c0 es la tarjeta
  0, región de memoria común 0, la región entera. Los dispositivos de
  ftl0c0p1 a ftl0c0p4 son primariamente las particiones de 1 a 4 si la
  región ha sido particionada.

  Hay dos formatos mayores para tarjetas de memoria flash: el estilo
  FTL, y el sistema de archivos Microsoft Flash. El formato FTL es
  generalmente más flexible porque permite que pueda utilizarse
  cualquier sistema de archivos de alto nivel en una tarjeta flash como
  si fuera un dispositivo de disco ordinario. El FFS es un tipo sistema
  de archivos completamente diferente. Linux no puede manejar
  actualmente tarjetas formateadas con FFS.

  Las tarjetas flash Intel Series 100 usan el primer bloque flash de
  128k para almacenar la información de la configuración de la tarjeta.
  Para prevenir el borrado accidental de esta información, ftl_format
  automáticamente detectará esto y saltará al primer bloque cuando se
  cree una partición FTL.


  4.8.  Tarjetas PCMCIA para unidades ATA/IDE


  El soporte para unidades ATA/IDE se basa en el controlador IDE regular
  del kernel. La parte específica PCMCIA del controlador es ide_cs.
  Asegúrese de usar cardctl o cardinfo para apagar la tarjeta ATA/IDE
  antes de expulsarla, porque el controlador no fue programado a prueba
  de extracción en caliente.

  La dirección de dispositivo que se pasa a ide.opts consiste de tres o
  cuatro campos: el esquema actual, el número de socket, el número de
  serie de la unidad, y un número opcional de partición. El comando
  ide_info puede usarse para obtener el número de serie del dispositivo
  IDE. Tal y como sucede con los dispositivos SCSI, ide.opts se llama
  primero para el dispositivo entero. Si ide.opts retorna una lista de
  particiones en la variable PARTS, el script entonces se llamará para
  cada partición.


  4.8.1.  Parámetros para discos ATA/IDE


  Los siguientes parámetros se pueden especificar en ide.opts:



     DO_FSTAB
        Es una opción booleana (y/n): Especifica si se debe añadir una
        entrada /etc/fstab para este dispositivo.


     DO_FSCK
        Es una opción booleana (y/n): Especifica si se debe comprobar
        este dispositivo antes de ser montado, con fsck -Ta.


     DO_MOUNT
        Es una opción booleana (y/n): Especifica si este dispositivo
        debe montarse automáticamente al momento de insertar la tarjeta.


     FSTYPE, OPTS, MOUNTPT
        El tipo de sistema de archivos, opciones de montaje, y punto de
        montaje que se utilizarán para la entrada en fstab y/o para
        montar el dispositivo.


  He aqui un ejemplo del archivo ide.opts para montar la primera
  partición de cualquier tarjeta ATA/IDE en /mnt.


              case "$ADDRESS" in
              *,*,*,1)
                  DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
                  FSTYPE="msdos"
                  OPTS=""
                  MOUNTPT="/mnt"
                  ;;
              *,*,*)
                  PARTS="1"
                  ;;
              esac






  4.8.2.  Diagnóstico de problemas con adaptadores ATA/IDE



  ·  Algunas unidades IDE violan la especificación PCMCIA al requerir un
     tiempo mayor para iniciar que el máximo permitido para la
     configuración de la tarjeta. Desde la versión 3.0.6, el controlador
     ide_cs automáticamente intentará sondear el dispositivo para darle
     tiempo de iniciarlos. Con los controladores antiguos, necesita
     cargar el módulo pcmcia_core con:



              CORE_OPTS="unreset_delay=400"





  ·  Para usar una unidad de CD-ROM ATA/IDE, el kernel debe compilarse
     con CONFIG_BLK_DEV_IDECD activado. Normalmente será el caso para
     los kernels estándar, sin embargo es bueno estar enterado por si
     compila un kernel personalizado.


  4.9.  Tarjetas multifunción


  Se puede compartir una simple interrupción entre varios controladores,
  como el controlador serie y el controlador ethernet: en efecto: la
  especificación PCMCIA requiere que todas las funciones de las tarjetas
  compartan la misma interrupción. Normalmente, todas las funciones de
  las tarjetas están disponibles sin tener que intercambiar
  controladores.

  El uso simultáneo de dos funciones de tarjetas es algo «difícil» y
  varios fabricantes de hardware han implementado el compartir
  interrupciones en sus propias formas incompatibles (y a veces
  propietarias). Los controladores para algunas tarjetas (Ositech Jack
  de Diamond, 3Com 3c562, Linksys) soportan de forma apropiada el acceso
  simultáneo, pero otras (Megahertz en particular) no.

  Los kernels antiguos no soportan el compartir interrupciones entre
  diferentes controladores de dispositivos, así que no es posible para
  los controladores PCMCIA el configurar esta tarjeta para acceso
  simultáneo ethernet y módem. Los controladores ethernet y serie se
  cargan automáticamente. Sin embargo, el controlador ethernet por
  omisión «posee» la interrupción de la tarjeta. Para usar el módem,
  puede descargar el controlador ethernet y reconfigurar el puerto serie
  haciendo algo como:



              ifconfig eth0 down
              rmmod 3c589_cs
              setserial /dev/modem autoconfig auto_irq
              setserial /dev/modem




  El segundo setserial debe verificar que el puerto ha sido configurado
  para usar la interrupción que previamente utilizaba el controlador
  ethernet.



  5.  Temas avanzados



  5.1.  Apartado de recursos para dispositivos PCMCIA


  En teoría, no debe importar qué interrupción se reserva para cada
  dispositivo, mientras dos dispositivos no sean configurados para usar
  la misma interrupción.

  En /etc/pcmcia/config.opts encontrará un lugar para excluir las
  interrupciones que son usadas por dispositivos no PCMCIA.

  De igual modo, no hay forma de especificar directamente las
  direcciones de E/S que va a utilizar una tarjeta. El archivo
  /etc/pcmcia/config.opts permite especificar rangos de puertos
  disponibles para ser usados por una tarjeta cualquiera, o para excluir
  rangos que causan conflictos con otros dispositivos.

  Después de modificar /etc/pcmcia/config.opts, puede reiniciar cardmgr
  con kill -HUP.

  La interrupción que se utiliza para monitorizar el estado de la
  tarjeta se determina por el módulo controlador de bajo nivel del
  socket (i82365 o tcic) antes de que cardmgr pase a /etc/pcmcia/config,
  así no se ve afectado con los cambios a este archivo. Para establecer
  esta interrupción, use la opción cs_irq= cuando se cargue el
  controlador del socket, estableciendo la variable PCIC_OPTS en
  /etc/rc.d/rc.pcmcia

  Todos los controladores de tarjetas tienen un parámetro llamado
  irq_list para especificar qué interrupciones pueden intentar reservar.
  Dichas opciones deben establecerse en el archivo /etc/pcmcia/config.
  Por ejemplo:



              device "serial_cs"
                module "serial_cs" opts "irq_list=8,12"
                ...




  debe especificarse que el controlador serie debe utilizar sólo la irq
  8 o la 12. Sin importar las configuraciones de irq_list, los Servicios
  de Tarjetas nunca reservarán una interrupción que ya esté siendo usada
  por otro dispositivo, o una interrupción que esté excluida en el
  archivo de configuración.


  5.2.  trabajo?  Cómo puedo separar configuraciones de los dispositivos
  para casa y el


  Esto es bastante fácil con el soporte de «esquemas». Usando dos
  esquemas de configuración, llamados casa y trabajo. He aquí un ejemplo
  del script network.opts con configuraciones específicas de esquemas:



              case "$ADDRESS" in
              trabajo,*,*,*)
                  # definiciones para la tarjeta de red en el esquema trabajo
                  ...
                  ;;
              casa,*,*,*|default,*,*,*)
                  # definiciones para la tarjeta de red en el esquema casa
                  ...
                  ;;
              esac




  La primera parte de una dirección de dispositivo siempre es la
  configuración del esquema. En este ejemplo, la segunda cláusula case
  aplicará para ambos esquemas. Así, si un esquema no está establecido
  por cualquier razón, se tomará por omisión la configuración casa.

  Ahora, para seleccionar entre dos conjuntos de configuraciones,
  ejecute:



              cardctl scheme casa




  o bien



              cardctl scheme trabajo




  El comando cardctl hace el equivalente a apagar todas sus tarjetas y
  luego reiniciarlas. Este comando puede ejecutarse de forma segura
  estando el sistema PCMCIA cargado o no, pero el comando puede fallar
  si está usando otros dispositivos PCMCIA en ese momento (incluso si
  sus configuracion no es explícitamente dependiente de la configuración
  del esquema).

  Para mostrar la configuración del esquema, ejecute:



              cardctl scheme


  Por omisión, la configuración del esquema es persistente a través de
  los inicios del equipo. Esto puede tener efectos no deseados si la red
  se inicializa para el ambiente equivocado. Opcionalmente, puede
  establecer el valor inicial del esquema con la opción de inicio
  SCHEME; consulte la sección `` Opciones de Inicio'' para más detalles.
  También es posible establecer el esquema desde el prompt de inicio de
  lilo.  Debido a que lilo pasa opciones desconocidas a init como
  variables de entorno, un valor destinado a SCHEME (o cualquier otra
  opción de inicio de PCMCIA) en el prompt de inicio se propagará al
  script de inicio PCMCIA.

  Para ahorrarse tecleo, los esquemas pueden ser especificados en el
  archivo de configuración de lilo. Por ejemplo, puede tener:



              root = /dev/hda1
              read-only
              image = /boot/vmlinuz
                label  = casa
                append = "SCHEME=casa"
              image = /boot/vmlinuz
                label  = trabajo
                append = "SCHEME=trabajo"




  Así, al teclear casa o trabajo en el prompt de inicio arrancará con el
  esquema PCMCIA apropiado.


  5.3.  Arranque desde un dispositivo PCMCIA


  Tener el sistema de archivos raíz en un dispositivo PCMCIA es algo
  difícil porque el sistema PCMCIA de Linux no está diseñado para ser
  enlazado dentro del kernel. Sus componentes principales, los módulos
  cargables del kernel y el demonio cardmgr dependen de un sistema que
  ya está ejecutándose. La funcionalidad initrd del kernel sortea esta
  limitación permitiendo a Linux iniciar utilizando un disco ram
  temporal como una imagen raíz mínima, cargar los controladores, y
  remontar entonces un sistema de archivos raíz diferente. La raíz
  temporal puede configurar dispositivos PCMCIA y luego remontar un
  dispositivo PCMCIA como raíz.

  La imagen initrd de residir en un dispositivo arrancable
  obligatoriamente;  lo que implica no puede tratarse de un dispositivo
  PCMCIA. Esta es una limitación de BIOS, no del kernel. Aqui es útil
  distinguir entre dispositivos «arrancables» (es decir, dispositivos
  desde los que se puede iniciar), y dispositivos root-ables (es decir,
  dispositivos origen, que son montados como raíz). Los dispositivos
  «arrancables» se determinan por BIOS, y están limitados generalmente a
  discos flexibles internos y unidades de disco duro. La funcionalidad
  initrd permite disponer de más dispositivos origen, no de más
  dispositivos «arrancables».

  Algunas distribuciones de Linux permitirán la instalación a un
  dispositivo conectado a un adaptador SCSI PCMCIA, como un efecto
  lateral involuntario de su soporte para instalar desde unidades de CD-
  ROM SCSI PCMCIA. Sin embargo, en la actualidad, no hay herramientas de
  instalación de Linux que soporten el configurar una imagen initrd
  apropiada para iniciar Linux con un sistema de archivos raíz PCMCIA.
  Configurar un sistema con raíz PCMCIA de este modo requiere que se use
  otro sistema Linux para crear la imagen initrd. Si no tiene otro
  sistema Linux disponible, una opción podría ser instalar temporalmente
  una configuración mínima en una unidad no PCMCIA, crear una imagen
  initrd, y luego reinstalar en el dispositivo PCMCIA destino.

  El Linux Bootdisk-HOWTO contiene información general acerca de la
  configuración de discos de inicio pero nada específico de initrd.  El
  documento principal de initrd se incluye con las distribuciones
  recientes del código fuente del kernel, en
  linux/Documentation/initrd.txt. Antes de empezar, debería leer este
  documento. Es de utilidad estar familiarizado con lilo. El uso de
  initrd también requiere que tenga un kernel compilado con
  CONFIG_BLK_DEV_RAM y CONFIG_BLK_DEV_INITRD activados.

  Esta es una técnica de configuración avanzada, y requiere un alto
  nivel de familiaridad con Linux y el sistema PCMCIA. Asegúrese de leer
  toda la documentación relevante antes de empezar. Las siguientes
  recetas deberían funcionar, pero las derivaciones de los ejemplos le
  pondrán rápidamente en un territorio desconocido y «no soportado»; y
  estará solo.

  Este método requiere obligatoriamente que se use una versión del
  controlador PCMCIA 2.9.5 o posterior. Los paquetes PCMCIA antiguos o
  los componentes individuales no funcionarán en el contexto initrd. No
  mezcle componentes de diferentes versiones.


  5.3.1.  El script pcinitrd


  El script pcinitrd crea una imagen básica para iniciar con una
  partición raíz PCMCIA. La imagen incluye una jerarquía de directorios
  mínima, algunos archivos de dispositivos, unos cuantos binarios,
  bibliotecas compartidas, y un conjunto de módulos controladores
  PCMCIA.  Cuando se invoca pcinitrd, especifique los módulos
  controladores que busca que se incluyan en la imagen. Los componentes
  principales de PCMCIA, pcmcia_core y ds, se incluyen automáticamente.

  Como ejemplo, digamos que su portátil usa un controlador compatible
  con i82365, y quiere iniciar Linux con el sistema de archivos raíz en
  un disco duro conectado a un adaptador Adaptec SlimSCSI. Podría crear
  una imagen initrd apropiada con:



              pcinitrd -v initrd pcmcia/i82365.o pcmcia/aha152x_cs.o




  Para personalizar la secuencia de inicio de initrd, podría montar la
  imagen usando el dispositivo loopback con un comando como:



              mount -o loop -t ext2 initrd /mnt




  y luego editar el script linuxrc. Los archivos de configuración se
  instalarán bajo /etc en la imagen, y también puede personalizarse.
  Consulte la página del manual de pcinitrd para mayor información.





  5.3.2.  Creación de un disquete de inicio initrd


  Después de crear una imagen con pcinitrd, puede crear un disquete de
  inicio copiando el kernel, la imagen initrd comprimida, y algunos
  archivos de soporte para lilo a un disquete limpio. En el ejemplo
  siguiente, asumimos que el dispositivo raíz PCMCIA deseado es
  /dev/sda1:



              mke2fs /dev/fd0
              mount /dev/fd0 /mnt
              mkdir /mnt/etc /mnt/boot /mnt/dev
              cp -a /dev/fd0 /dev/sda1 /mnt/dev
              cp [kernel-image] /mnt/vmlinuz
              cp /boot/boot.b /mnt/boot/boot.b
              gzip < [initrd-image] > /mnt/initrd




  Genere un fichero /mnt/etc/lilo.conf que contenga:



              boot=/dev/fd0
              compact
              image=/vmlinuz
                  label=linux
                  initrd=/initrd
                  read-only
                  root=/dev/sda1




  Finalmente, invoque a lilo con:



              lilo -r /mnt




  Cuando lilo es invocado con -r, realiza todas las acciones tomando
  como directorio raíz el especificado. La razón para crear los archivos
  de dispositivo bajo /mnt/dev es que lilo no podrá usar esos archivos
  en /dev cuando se ejecute con este directorio raíz alternativo.


  5.3.3.  Instalación de una imagen initrd  en una unidad no-Linux


  Un uso común de la funcionalidad initrd puede darse en sistemas donde
  el disco duro interno está dedicado a otro sistema operativo. El
  kernel de Linux y la imagen initrd pueden ponerse en una partición no-
  Linux, y lilo o LOADLIN pueden configurarse para iniciar Linux desde
  esas imágenes.

  Asumiendo que tiene un kernel que se ha configurado para el
  dispositivo raíz apropiado, y una imagen initrd creada en otro
  sistema, la forma más fácil de iniciar Linux es utilizando LOADLIN,
  como:

              LOADLIN <kernel> initrd=<imagen-initrd>




  Una vez que pueda iniciar Linux en su máquina destino, puede instalar
  lilo para permitir que Linux se inicie directamente. Por ejemplo,
  digamos que /dev/hda1 es la partición no-Linux destino y /mnt puede
  usarse como un punto de montaje. Primero, genere un subdirectorio en
  el destino para los archivos de Linux:



              mount /dev/hda1 /mnt
              mkdir /mnt/linux
              cp [imagen-del-kernel] /mnt/linux/vmlinuz
              cp [imagen-initrd] /mnt/linux/initrd




  En este ejemplo, digamos que /dev/sda1 es la partición raíz de Linux
  deseada, en un disco duro SCSI montado vía un adaptador PCMCIA SCSI.
  Para instalar lilo, genere un archivo lilo.conf que contenga:



              boot=/dev/hda
              map=/mnt/linux/map
              compact
              image=/mnt/linux/vmlinuz
                      label=linux
                      root=/dev/sda1
                      initrd=/mnt/linux/initrd
                      read-only
              other=/dev/hda1
                      table=/dev/hda
                      label=windows




  La línea boot= dice que se instale el cargador de inicio en el MBR
  (master boot record) del dispositivo especificado. La línea root=
  identifica el sistema de archivos raíz deseado a usar después de
  cargar la imagen initrd, que puede resultar innecesario si la imagen
  del kernel ya se encuentra configurada de esta forma. La sección
  other= se usa para describir el otro sistema operativo instalado en
  /dev/hda1.

  Para instalar lilo en este caso, teclee:



              lilo -C lilo.conf




  Nótese que en este caso, el archivo lilo.conf usa rutas absolutas que
  incluyen /mnt. Hice esto en el ejemplo porque el sistema de archivos
  destino puede no soportar la creación de archivos de dispositivos para
  las opciones boot= y root=.



  6.  Problemas con tarjetas no soportadas



  6.1.  Configuración de tarjetas no reconocidas


  Asumiendo que su tarjeta está soportada por algún controlador
  existente, todo lo que se necesita hacer es añadir una entrada a
  /etc/pcmcia/config para decirle a cardmgr cómo identificar la tarjeta,
  y qué controlador(es) necesitan ser asociados a esta tarjeta.
  Consulte la página del manual de pcmcia para más información acerca
  del formato del archivo de configuración. Si inserta una tarjeta
  desconocida, cardmgr normalmente almacenará parte de información de la
  identificación en el registro del sistema, lo cual puede usarse para
  elaborar la entrada de configuración. Esta información puede mostrarse
  también con el comando cardctl ident.

  He aquí un ejemplo de cómo avisa cardmgr de una tarjeta no soportada
  en /usr/adm/messages



         cardmgr[460]: unsupported card in socket 1
         cardmgr[460]: product info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
         cardmgr[460]: manfid: 0x0101, 0x1234  function: 2 (serial)




  La entrada correspondiente en /etc/pcmcia/config podría ser:



              card "Megahertz XJ2288 V.34 Fax Modem"
                version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
                bind "serial_cs"




  o usar los códigos de ID más compactos del producto:



              card "Megahertz XJ2288 V.34 Fax Modem"
                manfid 0x0101, 0x1234
                bind "serial_cs"





  Puede usar * para comparar cadenas que no necesiten concordar
  exactamente, como los números de versión. Cuando haga nuevas entradas
  en la configuración, hay que ser cuidadosos para copiar las cadenas
  exactamente, preservando mayúsculas y minúsculas, y espacios en
  blanco.  Asegúrese también de que la entrada en la configuración tiene
  el mísmo número de cadenas que aparecen en el archivo de registro.

  Tenga en cuenta que puede especificar cualquier controlador para una
  tarjeta, pero si sólo está dando palos de ciego, no hay mucha razón
  para esperar que esto resulte productivo. Puede tener suerte y
  encontrar que su tarjeta está soportada por un controlador existente.
  Sin embargo, el resultado más probable es que el controlador no
  funcione, y puede tener efectos laterales desafortunados como el
  congelamiento de su sistema. A diferencia de la mayoría de los
  controladores de dispositivos, los cuales comprueban la pressencia de
  la tarjeta apropiada, el sondeo para un dispositivo PCMCIA se hace con
  cardmgr, y el controlador por sí mismo puede no verificar antes de
  intentar comunicarse con el dispositivo.

  Después de editar /etc/pcmcia/config, envíe una señal a cardmgr para
  recargar el archivo con:



              kill -HUP `cat /var/run/cardmgr.pid`




  Si configura una entrada para una tarjeta nueva, por favor, envíeme
  una copia para que pueda incluirla en el archivo de configuración
  estándar.


  6.2.  Soporte para una tarjeta ethernet compatible con NE2000


  Antes de empezar: este procedimiento sólo funcionará para tarjetas
  ethernet simples. Las tarjetas multifunción (por ejemplo, las tarjetas
  «combo» ethernet/módem) tienen una capa extra de complejidad en
  relación a cómo están integradas las dos funciones, y generalmente no
  pueden soportarse sin obtener algo de información de la configuración
  provista por el fabricante de la tarjeta. Usar el procedimiento
  siguiente con una tarjeta multifunción no resultará productivo en
  absoluto.

  Primero, compruebe si la tarjeta es reconocida por cardmgr. Algunas
  tarjetas que no están listadas en SUPPORTED.CARDS son realmente
  versiones OEM de tarjetas que sí están soportadas. Si encuentra una
  tarjeta como ésta, hágamelo saber para que pueda añadirla a la lista.

  Si su tarjeta no es reconocida, siga las instrucciones en la sección
  ``Configuración de tarjetas no reconocidas'' para crear una entrada en
  la configuración para su tarjeta, y relacionar la tarjeta con el
  controlador pcnet_cs. Reinicie cardmgr para utilizar el archivo de
  configuración actualizado.

  Si el controlador pcnet_cs dice que no puede determinar la dirección
  ethernet del hardware de la tarjeta, edite su nueva entrada en la
  configuración para relacionar la tarjeta con el controlador de memoria
  memory_cs. Reinicie cardmgr para utilizar el nuevo archivo de
  configuración actualizado. Necesitará conocer la dirección ethernet
  del hardware de la tarjeta. Esta dirección es una serie de seis
  números hexadecimales de dos dígitos, impresos normalmente en la misma
  tarjeta. Si no están impresos en la tarjeta, puede usar un controlador
  de DOS para mostrar la dirección. En cualquier caso, una vez que la
  sepa, ejecute:



              dd if=/dev/mem0a count=20 | od -Ax -t x1




  y busque el volcado de información de su tarjeta. Sólo los bytes pares
  están definidos, así que ignore los bytes impares del volcado. Anote
  el desplazamiento hexadecimal del primer byte de la dirección. Ahora,
  edite clients/pcnet_cs.c y busque la estructura hw_info.  Necesitará
  crear una nueva entrada para la tarjeta. El primer campo es el
  desplazamiento de memoria. Los siguientes tres campos son los primeros
  tres bytes de la dirección de hardware. El campo final contiene
  algunos indicadores de características especiales de la tarjeta; para
  empezar, pruebe estableciéndola a 0.

  Después de editar pcnet_cs.c, compile e instale el nuevo módulo.
  Edite nuevamente /etc/pcmcia/config/, y cambie la relación de
  memory_cs con pcnet_cs. Siga las instrucciones para recargar el
  archivo de configuración, y habrá terminado. Por favor mándeme copias
  de sus nuevas entradas de configuración a hw_info.

  Si no puede encontrar la dirección hardware de su tarjeta en el
  vaciado hexadecimal, como un último recurso, puede «forzar» la
  dirección cuando se inicializa el módulo pcnet_cs. Edite
  /etc/pcmcia/config.opts y añada una opción hw_addr, como esta:



              module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03"




  Por supuesto, sustituya su propia dirección de hardware de la tarjeta
  en el punto apropiado. Tenga en cuenta que si ha tenido que hacer
  esto, es muy difícil que su tarjeta sea genuinamente compatible con
  NE2000. De hecho, no estoy seguro de la existencia de tarjetas que no
  sean manejadas por alguno de los dos primeros métodos.


  6.3.  Tarjetas PCMCIA para unidades de disquete


  La interfaz para disquete PCMCIA que se usa en los Compaq Aero y otros
  equipos todavía no está soportada por este paquete. La dificultad para
  soportar el disquete Aero radica en que el Aero parece usar un
  controlador PCMCIA personalizado para soportar DMA en el disquete. Sin
  saber exáctamente cómo se hace esto, no hay forma de implementar
  soporte bajo Linux.

  Si la tarjeta del adaptador de disquete está presente cuando se
  inicia, la BIOS configurará la tarjeta, y Linux la identificará como
  una unidad de disquete normal. Cuando se cargan los controladores
  PCMCIA de Linux, notarán que la tarjeta ya está configurada y
  conectada al controlador de Linux, y este socket se dejará solo. Así
  que, la unidad puede usarse si está presente al momento de iniciar,
  pero la tarjeta no se puede intercambiar en caliente.


  6.4.  ¿Qué hay de las tarjetas Xircom?


  El paquete actual PCMCIA incluye un controlador para las tarjetas
  ethernet y ethernet/modem de Xircom, gracias al trabajo de Werner
  Koch. He dispuesto un foro especialmente para la discusión del
  desarrollo del controlador Xircom, en
  http://hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html.

  Durante mucho tiempo, las tarjetas Xircom no fueron soportadas porque
  Xircom tenía como política de la compañía no divulgar información
  técnica acerca de sus tarjetas. Sin embargo, han modificado sus
  reglas, y ahora, distribuyen información de los controladores...



  7.  Trucos para depurar e información de programación



  7.1.  Envío de informes de bugs  que son de utilidad


  La mejor forma de informar de bugs es usar las listas de mensajes de
  HyperNews en el servidor web de Linux PCMCIA. De este modo, otras
  personas podrán ver los problemas actuales (y reparaciones o trabajos
  relacionados, si están disponibles). He aqui algunas cosas que se
  deben incluir en los informes de bugs:


  ·  El tipo de sistema, y la salida del comando probe.

  ·  Qué tarjetas PCMCIA está usando.

  ·  Su versión del kernel de Linux, y la versión del controlador
     PCMCIA.

  ·  Cualquier cambio que haya hecho a los archivos de inicio en
     /etc/pcmcia, o al script de inicio de PCMCIA.

  ·  Todos los mensajes relacionados con PCMCIA en el registro de su
     sistema.

  Todos los módulos PCMCIA y el demonio cardmgr envían mensajes de
  estado al registro del sistema, que estará normalmente en sitios como
  /var/log/messages o /usr/adm/messages. Este archivo debe ser el primer
  lugar a comprobar cuando se esté rastreando un problema.  Cuando envíe
  una notificación de bug, incluya siempre el contenido de este archivo.
  Si tiene problemas para encontrar los mensajes de su sistema, revise
  /etc/syslog.conf para ver cuantas clases diferentes de mensajes se
  manejan.

  Antes de enviar una notificación de bug, por favor asegúrese que no
  esté usando una copia obsoleta del paquete de controladores. Aunque
  resulte gratificante leer informes sobre un bug que ya he reparado, no
  supone un uso particularmente constructivo de mi tiempo.

  Si no tiene acceso a web, puede enviarme los informes de bugs a
  dhinds@hyper.stanford.edu. Sin embargo, prefiero que sean introducidos
  en mi servidor web, así pueden ser vistos por otros.


  7.2.  Interpretación de los informes generados por los traps  del ker­
  nel


  Si su problema incluye un fallo del kernel, el vaciado del registro
  del fallo sólo es útil si puede traducir la dirección del error, EIP,
  o algo semejante. Las versiones recientes de klogd intentan traducir
  las direcciones de fallos basándose en el mapa actual de símbolos del
  kernel, pero puede que no funcione si el error se produce en un
  módulo, o si el problema es lo bastante severo como para que que klogd
  no pueda terminar de escribir la información del fallo en el registro
  del sistema.

  Si se localiza en el kernel principal, la dirección de fallo puede
  encontrarse en el archivo System.map. El cual puede estar instalado en
  /System.map o en /boot/System.map. Si está en un módulo, el comando nm
  proporciona la misma información; sin embargo, la dirección del fallo
  necesita ajustarse basándose en la dirección de carga del módulo.
  Digamos que experimenta el siguiente fallo del kernel:

              Unable to handle kernel NULL pointer dereference
              current->tss.cr3 = 014c9000, %cr3 = 014c9000
              *pde = 00000000
              Oops: 0002
              CPU:    0
              EIP:    0010:[<c2026081>]
              EFLAGS: 00010282




  La dirección de fallo es 0xc2026081. Si buscamos en System.map, vemos
  que esto está más allá de los límites del kernel, por ejemplo, es un
  módulo del kernel. Para determinar qué módulo, revise la salida de
  ksyms -m | sort



              Address   Symbol                            Defined by
              c200d000  (35k)                             [pcmcia_core]
              c200d10c  register_ss_entry                 [pcmcia_core]
              c200d230  unregister_ss_entry               [pcmcia_core]
                        ...
              c2026000  (9k)                              [3c574_cs]
              c202a000  (4k)                              [serial_cs]




  Así, 0xc2026081 está en el módulo 3c574_cs con un desplazamiento de
  0x0081 desde el inicio del módulo. Todavía no podemos ver más allá de
  este desplazamiento en 3c574_cs.o: cuando el kernel carga un módulo,
  inserta un encabezado en la dirección de carga del mismo, así el
  inicio real se desplaza desde la dirección mostrada en ksyms.  El
  tamaño del encabezado varía con la versión del kernel:  para encontrar
  el tamaño en su kernel, busque un módulo que exporte símbolos (como
  pcmcia_core), y compare la dirección del símbolo con la salida de nm
  para ese mismo símbolo. En este ejemplo, register_ss_entry se carga
  con un desplazamiento de 0xc200d10c - 0xc200d000 = 0x010c, mientras
  que nm pcmcia_core.o muestra el desplazamiento como 0x00c0, así que el
  tamaño del encabezado es 0x010c - 0x00c0 = 0x004c bytes.

  Regresando a 3c574_cs.o, nuestro desplazamiento de fallo es 0x0081, y
  restando el encabezado 0x004c, el desplazamiento real del módulo es
  0x0035. Ahora comprobando el resultado de un nm 3c574_cs.o | sort,
  observamos:



         0000002c d if_names
         0000002c t tc574_attach
         00000040 d mii_preamble_required
         00000041 d dev_info




  El fallo se localiza en tc574_attach().

  En este ejemplo, el fallo no causó un congelamiento total del sistema,
  así que ksyms puede ejecutarse después de haber tenido lugar el fallo.
  En otros casos, puede que tenga que deducir indirectamente las
  direcciones de carga del módulo. La misma secuencia de eventos cargará
  normalmente los módulos en el mismo orden y en las mismas direcciones.
  Si se produce un fallo cuando se inserta cierta tarjeta, obtenga la
  salida de ksyms antes de insertar la tarjeta, o con una tarjeta
  diferente insertada. Puede cargar manualmente los módulos
  controladores de la tarjeta con insmod y ejecutar ksyms antes de
  insertarla.

  Para profundizar, consulte man insmod, man ksyms, y man klogd. En el
  árbol de los fuentes del kernel, Documentation/oops-tracing.txt
  también es relevante. He aquí unas cuantas pistas para depurar el
  kernel:


  ·  Dependiendo del error, puede ser útil traducir direcciones en el
     Trazado de llamadas, usando el mismo procedimiento para la
     dirección de error principal.

  ·  Para diagnosticar un congelamiento silencioso, pruebe provocar el
     problema con X desactivado, porque los mensajes del kernel se
     envían a la consola en texto, y no serán visibles bajo X.

  ·  Si mata a klogd muchos de los mensajes del kernel harán eco
     directamente a la consola de texto, el cual puede ser útil si el
     problema impide a klogd escribir en el registro del sistema.

  ·  Para hacer que todos los mensajes del kernel se envíen a la
     consola, para kernels 2.1.x, si existe /proc/sys/kernel/printk,
     hacer:



              echo 8 > /proc/sys/kernel/printk





  ·  La combinación de teclas <RightAlt><ScrLk> imprime un vaciado del
     registro en la consola de texto. Esto puede funcionar en caso de
     que el sistema esté o no completamente sin responder, y la
     dirección EIP puede interpretarse como fallo del kernel.

  ·  Para los kernels 2.1.x configurados con CONFIG_MAGIC_SYSRQ
     activado, se pueden activar varias funciones de emergencia por
     medio de las combinaciones especiales de las teclas <Alt><SysRq>,
     que están documentadas en Documentation/sysrq.txt dentro del árbol
     de los fuentes del kernel.


  7.3.  Primeros auxilios al depurar a bajo nivel


  Los módulos PCMCIA contienen bastante código de depuración compilado
  de forma condicional. La mayor parte de este código está bajo el
  control de las definiciones del preprocesador de PCMCIA_DEBUG. Si no
  está definido, el código de depuración no se compilará. Si se
  establece a 0, se compilará pero no estará activo. Los números mayores
  especifican el incremento del nivel de detalle del registro. Cada
  módulo compilado con PCMCIA_DEBUG definido tendrá un parámetro entero,
  pc_debug, que controla el nivel de detalle de su salida. Esto puede
  ajustarse cuando se carga el módulo, así la salida puede controlarse
  en base a cada módulo sin necesidad de recompilar.

  Su configuración por omisión para syslogd puede descartar los mensajes
  de depuración del kernel. Para asegurarse de que se están registrando,
  edite /etc/syslog.conf y compruebe que los mensajes kern.debug se
  registren en algún lugar. Consulte man syslog.conf para más detalles.


  Hay algunas herramientas de depuración en el subdirectorio debug_tools
  dentro de la distribución de PCMCIA. Las utilidades dump_tcic y
  dump_i365 generan volcados completos de los controladores PCMCIA, y
  decodifican mucha de la información del registro.  Son útiles si tiene
  acceso a una hoja con los datos del chip controlador correspondiente.
  El comando dump_cis (dump_tuples en las distribuciones pre-3.0.2)
  lista el contenido de la CIS (Card Information Structure) (Estructura
  de Información de Tarjeta), y decodifica algunos bits importantes.
  dump_cisreg muestra los registros de configuración local de una
  tarjeta.

  El controlador de tarjetas de memoria memory_cs a veces también es
  útil para depurar problemas con PC Cards de 16 bits. Puede utilizarse
  con cualquier tarjeta, y no interfiere con otros controladores. Puede
  usarse para acceder directamente a los atributos de memoria o memoria
  común de cualquier tarjeta. De igual modo, con las tarjetas CardBus,
  el controlador memory_cb puede utilizarse con cualquier tarjeta de 32
  bits, para dar acceso directo a los espacios de direcciones de esa
  tarjeta. Revise las páginas del manual para más información.


  7.4.  /proc/bus/pccard


  A partir de los kernels 2.1.103, el paquete PCMCIA crea un árbol de
  información de estado bajo /proc/bus/pccard. La entrada memory muestra
  las posiciones de memoria para dispositivos PC Card en un formato
  similar a /proc/ioports. Cada socket tiene también su propio
  subdirectorio de entradas de estado. La entrada info identifica el
  controlador del host y describe sus características. La entrada exca
  es un volcado del registro ExCA compatible con Intel i82365sl que se
  configura para ese socket. Para los puentes CardBus, la entrada pci es
  el volcado del espacio de la configuración PCI del puente, y la
  entrada cardbus es el vaciado de los registros de configuración de
  CardBus.


  7.5.  Programación de controladores de servicios PCMCIA para nuevas
  tarjetas


  El Linux PCMCIA Programmer's Guide constituye la mejor documentación
  acerca de la interfaz de los controladores. La última versión estará
  siempre disponible en hyper.stanford.edu en /pub/pcmcia/doc, o vía WWW
  en http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html.

  Con los dispositivos relativamente similares a los dispositivos ISA
  normales, probablemente pueda Vd. usar parcialmente controladores
  Linux existentes. En algunos casos, el tropiezo más grande será
  modificar un controlador existente que pueda manejar la inserción y
  extracción de dispositivos después del momento de iniciar. De los
  controladores actuales, el controlador de tarjeta de memoria es el
  único controlador autónomo, que no depende de otras partes del kernel
  de Linux para hacer la mayor parte del trabajo sucio.

  En muchos casos, el mayor impedimento para soportar un nuevo tipo de
  tarjeta es el obtener información técnica por parte del fabricante.
  Puede ser difícil el encontrar a quién preguntar, o a quien explicar
  que información se necesita. Sin embargo, con pocas excepciones, es
  muy difícil, si no imposible, el implementar un controlador para una
  tarjeta sin información técnica por parte del fabricante.

  He escrito un controlador modelo con muchos comentarios que explican
  bastante cómo el controlador se comunica con los Servicios de
  Tarjetas; lo encontrará en la distribución fuente de PCMCIA en
  clients/dummy_cs.c.
  7.6.  Sugerencias para los autores de controladores PCMCIA


  He decidido que no es realmente factible para mi el distribuir todos
  los controladores de PCMCIA como parte del paquete PCMCIA. Cada
  controlador nuevo hace que el paquete principal sea incrementalmente
  más dificil de mantener, e incluir un controlador inevitablemente
  transfiere algo del trabajo de mantenimiento del autor del controlador
  hacia mí. En lugar de ello, decidiré caso por caso si se incluyen o no
  los controladores que sean contribuciones, basándome en la demanda de
  los usuarios y también en la facilidad de mantenerlos. Para los
  controladores que no se incluyen en el paquete principal, sugiero que
  los autores de los controladores adopten el esquema siguiente para
  empaquetar sus controladores de cara a su distribución.

  Los archivos controladores deben acomodarse en el mismo esquema del
  directorio que utiliza la distribución fuente de PCMCIA, así el
  controlador puede ser desempaquetado en la parte más alta del árbol de
  los fuentes de PCMCIA. Debe incluir los archivos fuentes (en
  ./modules/), una página del manual (en ./man/), y los archivos de
  configuración (en ./etc/ ). El directorio más alto debe incluir
  también un archivo README.

  El directorio de más alto nivel debe incluir un makefile, configurado
  para que make -f ... all y make -f ... install compilen el controlador
  e instalen los archivos apropiados. Si este archivo tiene una
  extensión .mk, será invocado automáticamente por el Makefile de más
  alto nivel para los destinos all e install. He aquí un ejemplo de cómo
  debe elaborarse un Makefile:



              # Un simple Makefile para un controlador de contribución
              FILES = sample_cs.mk README.sample_cs \
                      modules/sample_cs.c modules/sample_cs.h \
                      etc/sample etc/sample.opts man/sample_cs.4
              all:
                      $(MAKE) -C modules MODULES=sample_cs.o
              install:
                      $(MAKE) -C modules install-modules MODULES=sample_cs.o
                      $(MAKE) -C etc install-clients CLIENTS=sample
                      $(MAKE) -C man install-man4 MAN4=sample_cs.4
              dist:
                      tar czvf sample_cs.tar.gz $(FILES)




  Este Makefile usa los destinos de instalación que se definen en la
  versión 2.9.10 y versiones posteriores del paquete PCMCIA. Este
  makefile también incluye un destino dist para conveniencia del autor
  del controlador.  Probablemente desee añadir un número de versión al
  final del nombre del paquete (por ejemplo, sample_cs-1.5.tar.gz). Una
  distribución completa puede ser similar a:



              sample_cs.mk
              README.sample_cs
              modules/sample_cs.c
              modules/sample_cs.h
              etc/sample
              etc/sample.opts
              man/sample_cs.4


  De esta forma, cuando un controlador de contribución se desempaquete,
  se convierte en parte esencial del árbol de los fuentes de PCMCIA.
  Puede hacer uso de los archivos de encabezados de PCMCIA, así como
  también de la maquinaria para comprobar la configuración del sistema
  del usuario, y chequeo automático de dependencias, tal y como un
  controlador «normal».

  Aceptaré controladores preparados de acuerdo a esta especificación y
  los colocaré en el directorio /etc/pcmcia/contrib en mi servidor FTP,
  hyper.stanford.edu. El archivo README en este directorio describirá
  cómo desempaquetar un controlador de contribución.

  La interface de controlador no ha cambiado mucho a pesar del tiempo, y
  ha preservado casi siempre su compatibilidad con las versiones
  anteriores. Un controlador normalmente no necesitará actualizarse para
  revisiones menores en el paquete principal. Trataré de notificar a los
  autores de los controladores «externos» de los cambios que se requiera
  realizar a sus controladores.


  7.7.  Sugerencias para encargados de las distribuciones de Linux


  Si su distribución tiene herramientas para configuración del sistema
  que quiera que sean compatibles PCMCIA, por favor, use los archivos
  *.opts en /etc/pcmcia para su «integración». Dichos archivos no serán
  modificados si un usuario compila e instala una nueva versión del
  paquete PCMCIA. Si modifica los scripts principales de configuración,
  una instalación fresca sobreescribirá silenciosamente sus scripts
  personalizados y romperá la conexión con sus herramientas de
  configuración. Contacte conmigo si no está seguro de cómo escribir un
  script de opciones apropiado, o si necesita características
  adicionales.

  Resulta muy útil para los usuarios (y para mi) que documente cómo
  deriva su distribución del paquete PCMCIA que se describe en este
  documento. En particular, por favor documente los cambios al script de
  inicio y a los scripts de configuración. Si me manda la información
  apropiada, la incluiré en la sección ``Notas acerca de distribuciones
  de Linux específicas''.

  Cuando construya una distribución PCMCIA, considere el incluir los
  controladores aportados, que no son parte del paquete PCMCIA
  principal.  Por razones de mantenimiento, estoy tratando de limitar el
  tamaño del paquete principal, añadiendo solamente controladores nuevos
  si considero que son de interés general. Los demás controladores se
  distribuirán por separado, como se describe en la sección anterior. La
  división entre controladores generales y separados es algo arbitraria
  y en parte histórica, y no debería implicar diferencia alguna en
  cuanto a calidad.


  8.  Anexo: El INSFLUG


  El INSFLUG forma parte del grupo internacional Linux Documentation
  Project, encargándose de las traducciones al castellano de los Howtos,
  así como de la producción de documentos originales en aquellos casos
  en los que no existe análogo en inglés, centrándose, preferentemente,
  en documentos breves, como los COMOs y PUFs (Preguntas de Uso
  Frecuente, las FAQs. :) ), etc.

  Diríjase a la sede del Insflug para más información al respecto.

  En élla encontrará siempre las últimas versiones de las traducciones
  «oficiales»:  www.insflug.org. Asegúrese de comprobar cuál es la
  última versión disponible en el Insflug antes de bajar un documento de
  un servidor réplica.

  Además, cuenta con un sistema interactivo de gestión de fe de erratas
  y sugerencias en línea, motor de búsqueda específico, y más servicios
  en los que estamos trabajando incesantemente.

  Se proporciona también una lista de los servidores réplica (mirror)
  del Insflug más cercanos a Vd., e información relativa a otros
  recursos en castellano.

  En http://www.insflug.org/insflug/creditos.php3 cuenta con una
  detallada relación de las personas que hacen posible tanto esto como
  las traducciones.

  ¡Diríjase a http://www.insflug.org/colaboracion/index.php3 si desea
  unirse a nosotros!.

  «Cartel» Insflug, cartel@insflug.org.