Capítulo 3


Configuración del Hardware de Red

3.1 Dispositivos, Controladores, y todo lo demás
3.2 Configuración del núcleo

3.2.1 Opciones del núcleo de Linux 1.0 o Versiones Posteriores
3.2.2 Opciones del núcleo de Linux 1.1.14 y Versiones Posteriores

3.3 Una Visita a los Dispositivos de Red de Linux
3.4 Instalación Ethernet

3.4.1 Cableado de Ethernet
3.4.2 Tarjetas Compatibles
3.4.3 Autoverificación de red Ethernet

3.5 El controlador PLIP
3.6 Los controladores SLIP y PPP

3.1 Dispositivos, Controladores, y todo lo demás

Hasta ahora, hemos estado hablando bastante sobre los interfaces de red pero sin explicar realmente que es lo que pasa cuando el "código de red" en el núcleo accede a una parte del hardware. Para ello, y antes que nada, tenemos que hablar un poco sobre los conceptos de interface y controladores.

Primero, evidentemente, esta el hardware por sí mismo; por ejemplo, una tarjeta Ethernet es: una oblea de Silicio, atiborrada de montones de pequeños chips con estúpidos números en el lomo e insertada en una ranura de su PC. Esto es lo que por lo general denominamos un dispositivo.

Para poder utilizar la tarjeta Ethernet son necesarias una serie de funciones especiales definidas en el núcleo de Linux que serán capaces de entender la forma particular de acceso al dispositivo. Esta serie de funciones son los denominados controladores1 del dispositivo. Por ejemplo, Linux tiene controladores de dispositivos para varias marcas de tarjetas Ethernet que son muy parecidas en su funcionamiento. Son conocidos como los "Controladores de la Serie Becker", debido a su autor, Donald Becker. Otro ejemplo puede ser el del controlador D-Link, que gestiona un adaptador de bolsillo D-Link conectado a un puerto paralelo.

Pero ¿qué es lo que queremos decir con que un controlador "gestione" un dispositivo? Volvamos a la tarjeta Ethernet que examinamos antes. El controlador tiene que ser capaz de comunicarse de alguna forma con la lógica interna de la tarjeta: tiene que enviar órdenes y datos a la tarjeta, mientras que la tarjeta debe transmitir al controlador cualquier dato recibido.

_____________________________________________
1 N. del T.: Con frecuencia, la bibliografía especializada en español también los llama manejadores

 

Figura 3.1: Relación entre controladores, interfaces, y hardware.

 

En un PC, esta comunicación tiene lugar a través de un área de memoria de E/S que se corresponde con los registros internos de la tarjeta y a la inversa. Todas las órdenes y datos que el núcleo envía a la tarjeta tienen que ir a través de estos registros. El área de memoria de E/S de la tarjeta se describe por lo general mediante su dirección base o de comienzo. Direcciones habituales para tarjetas Ethernet son la 0x300 o la 0x360.

Normalmente no hay que preocuparse por factores de hardware como las direcciones base, ya que en tiempo de arranque el núcleo hace un intento para detectar la localización de la tarjeta. Esto se denomina autoverificacion2, que implica que el núcleo lea varias posiciones de memoria y compare los datos leídos con los que debería haber si existiese una tarjeta Ethernet instalada allí. De todas maneras, puede haber tarjetas Ethernet que no sean detectadas automáticamente; esto ocurre a veces con tarjetas Ethernet baratas que no son replicas exactas de tarjetas estándar de otros fabricantes. Por otro lado, el núcleo intentara detectar un único dispositivo Ethernet al arrancar. Si se utiliza mas de una tarjeta, hay que indicárselo explícitamente al núcleo.

Otro de los parámetros que se pueden decir de forma explícita al núcleo es el canal de petición de interrupción. Los componentes hardware normalmente interrumpen al núcleo cuando tienen necesidad de que éste se ocupe de ellos, por ejemplo cuando han llegado datos, o se presenta una condición especial. En un PC, las interrupciones pueden comunicarse mediante uno de los 15 canales de interrupción numerados 0,1 y del 3 al 15. El número de interrupción asignado a un componente hardware se denomina su número de petición de interrupción, o IRQ3 4.

_____________________________________________
2 N. del T.: Del inglés autoprobing

 

Como se explicaba en el capítulo 2, el núcleo accede a un dispositivo mediante lo que llamábamos una interfaz. Las interfaces ofrecen un conjunto abstracto de funciones que es el mismo para todo tipo de hardware. Por ejemplo, con funciones para enviar o recibir datagramas.

Los interfaces se identifican mediante nombres. Estos nombres se definen internamente en el núcleo, y no son ficheros de dispositivos del directorio /dev. Nombres típicos para los interfaces Ethernet son eth0, eth1, etc. La asignación de interfaces a los dispositivos depende normalmente del orden en el que los dispositivos son configurados; por ejemplo la primera tarjeta Ethernet instalada será eth0, la siguiente eth1, y así sucesivamente. Una excepción a esta regla son las interfaces SLIP y algunas otras, que son asignadas de forma dinámica; es decir, al establecerse una conexión SLIP, se asigna una interface al puerto serie.

El gráfico de la figura 3.1 muestra la relación entre el hardware, los controladores de dispositivos e interfaces.

Al arrancar, el núcleo muestra cada dispositivo que es detectado, y que interfaces se están instalando. Lo siguiente es un extracto de la pantalla de arranque:

.
.
This processor honours the WP bit even when in supervisor mode. Good.Floppy drive(s): fd0 is 1.44M
Swansea University Computer Society NET3.010
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.1 (4 channels) OPTIMIZE FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
SLIP: version 0.7.5 (4 channels)
CSLIP: code copyright 1989 Regents of the University of California
dl0: D-Link DE-600 pocket adapter, Ethernet Address: 00:80:C8:71:76:95
Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
Linux version 1.1.11 (okir@monad) #3 Sat May 7 14:57:18 MET DST 1994


_____________________________________________
3 Los IRQs 2 y 9 son los mismos debido a que el PC tiene dos procesadores de interrupciones en cascada con 8 IRQs cada uno; el procesador secundario esta conectado al IRQ 2 del primario.
4 N. del T.: Del inglés Interrupt ReQuest

 

Esta indica que el núcleo ha sido compilado para TCP/IP, y se incluyen los controladores para SLIP, CSLIP, y PPP. La tercera línea antes del final indica que se ha detectado un adaptador de bolsillo D-Link e instalado como el interface dl0. Si usted tiene un tipo diferente de tarjeta Ethernet, el núcleo mostrara normalmente una línea comenzando por eth0, seguida por el tipo de tarjeta detectado. Si usted tiene una tarjeta Ethernet instalada pero no se refleja en ningún mensaje, significa que el núcleo es incapaz de detectar su tarjeta adecuadamente. Trataremos este problema posteriormente.

 

3.2 Configuración del núcleo

La mayoría de las versiones de Linux se distribuyen con discos de arranque que funcionan en casi cualquier PC. Esto significa que el núcleo tiene en esos discos todo tipo de controladores configurados que rara vez utilizara, pero que ocupan un espacio innecesario en el sistema de memoria ya que con el núcleo no puede hacerse swapping. Por tanto, sería conveniente crear un núcleo propio, incluyendo solo los controladores que realmente necesite o desee.

Al trabajar con un sistema Linux, le deberá resultar familiar el proceso de construcción del núcleo. Los conceptos básicos de como realizarlo se explican en la Guía de Matt Welsh: "Instalación y primeros pasos", que también forma parte de la serie de Documentación del Proyecto Linux. Por tanto, en esta sección solo trataremos las opciones de configuración que afectan a la red.

Al ejecutar make config, se le preguntara por una serie de configuraciones generales, por ejemplo si desea emulación matemática del núcleo o no, etc. Una de las preguntas será si desea o no soporte para red TCP/IP. Si desea un núcleo capaz de trabajar con la red debe ser contestada con "y" (SI).

 

3.2.1 Opciones del núcleo de Linux 1.0 o Versiones Posteriores

Tras completar la parte de opciones generales, se pasara a configurar distintos componentes: controladores SCSI, etc. La siguiente lista contiene las preguntas que son sobre el soporte de red. Nótese que el conjunto de opciones de configuración esta en constante cambio debido al continuo desarrollo. Una lista típica de opciones que ofrecen los núcleos de versiones entre la 1.0 y la 1.1 se parece a ésta (los comentarios están en cursiva):

*
* Network device support
*
Network device support? (CONFIG ETHERCARDS) [y]

A pesar de que se muestre la contestación por defecto entre corchetes, la pregunta debe ser contestada con y si desea utilizar cualquier tipo de dispositivos de red, no importa si son Ethernet, SLIP o PPP. Si contesta a la pregunta con y, se activara automáticamente el soporte para dispositivos tipo Ethernet. El soporte para otros tipos de controladores de red debe ser activado por separado:

SLIP (seríal line) support? (CONFIG SLIP) [y]
SLIP compressed headers (SL COMPRESSED) [y]
PPP (point-to-point protocol) support (CONFIG PPP) [y]
PLIP (parallel port) support (CONFIG PLIP) [n]

Estas preguntas conciernen a los diversos protocolos de nivel de enlace soportados por Linux. SLIP permite transportar datagramas IP a través de líneas serie. La opción de compresión de cabecera proporciona el soporte CSLIP, una técnica que reduce las cabeceras TCP/IP a tres bytes. Tenga en cuenta que esta opción del núcleo no activa automáticamente el soporte para CSLIP, solamente proporciona las funciones necesarias del núcleo para ello.

PPP es otro de los protocolos para enviar tráfico a la red a través de líneas serie. Es mucho mas flexible que SLIP, y no se limita a IP, sino que, una vez que se implemente, también soportara IPX. Ya que el soporte para PPP ha sido incluido hace poco, esto opción puede no aparecer en su núcleo.

PLIP proporciona una forma de enviar datagramas IP a través de un puerto paralelo. Se utiliza generalmente para comunicar dos PCs bajo DOS. El resto de las preguntas son acerca de tarjetas Ethernet de diversos fabricantes. A medida que se desarrollan mas controladores, la lista de preguntas se hace mayor. Si desea construir un núcleo que quiera utilizar en varias máquinas, tiene la posibilidad de activar mas de un controlador.

 

NE2000/NE1000 support (CONFIG EN2000) [y]
WD80*3 support (CONFIG WD80x3) [n]
SMC Ultra support (CONFIG ULTRA) [n]
3c501 support (CONFIG EL1) [n]
3c503 support (CONFIG EL3) [n]
HP PCLAN support (CONFIG HPLAN) [n]
AT1500 and EN2100 (LANCE and PCnet-ISA) support (CONFIG LANCE) [n]
AT1700 support (CONFIG AT1700) [n]
DEPCA support (CONFIG DEPCA) [n]
D-Link DE600 pocket adaptor support (CONFIG DE600) [y]
AT-LAN-TEC/RealTek pocket adaptor support (CONFIG ATP) [n]
*
* CD-ROM drivers
*
...

 

Por último, en la sección del sistema de ficheros, el script de configuración le preguntara, entre otras cosas, si desea soporte para NFS (networking filesystem), el sistema de ficheros en red. NFS le permitirá exportar sistemas de ficheros a diversos nodos, de forma que parezcan como si estuviesen en un disco duro normal conectado a la máquina local.

NFS filesystem support (CONFIG NFS FS) [y]

 

3.2.2 Opciones del núcleo de Linux 1.1.14 y Versiones Posteriores

Comenzando con Linux 1.1.14, que incluía una versión alpha de IPX, el proceso de configuración varió muy poco. Ahora las opciones de carácter general preguntan si se desea soporte de red en general. A continuación aparecen un par de preguntas adicionales.

*
* Networking options
*
TCP/IP networking (CONFIG INET) [y]

Para utilizar protocolos TCP/IP, se debe contestar con y. Pero aunque conteste de forma negativa todavía será capaz de poder compilar el núcleo para que soporte IPX.

IP fordwarding/gatewaying (CONFIG IP FORWARD) [n]

Tendrá que activar esta opción si su sistema actúa como un puente entre dos redes Ethernet, o entre una red Ethernet y un enlace SLIP, etc. Aunque no cuesta nada activar esta opción por defecto, podría querer desactivarla para configurar la máquina como un cortafuegos5. Los cortafuegos son nodos que se conectan a una o mas redes, pero no encaminan tráfico entre ellos. Se utilizan normalmente para proporcionar a los usuarios en una empresa acceso a Internet con un riesgo mínimo para la red interna. A los usuarios se les permitirá acceder al cortafuegos y utilizar servicios Internet, pero las máquinas de la empresa estarán protegidas de ataques externos ya que cualquier conexión entrante no puede cruzar el cortafuegos.

*
* (it is safe to leave these untouched)
PC/TCP compatibility mode (CONFIG INET PCTCP) [n]

Esta opción evita incompatibilidades con algunas versiones de PC/TCP, una implementación comercial de TCP/IP basada en DOS para PCs. Si activa esta opción, todavía será capaz de comunicarse con máquinas UNIX normales, pero bajara el rendimiento cuando el enlace sea lento.

_____________________________________________
5 N. del T.: Del inglés firewall

 

Reverse ARP (CONFIG INET RARP) [n]

Esta función activa RARP, Protocolo de Resolución de Direcciones Inverso. RARP se utiliza en clientes sin disco y terminales X para pedir su dirección IP al arrancar. Deberá activar RARP solo cuando planee que su máquina sea un servidor para este tipo de clientes.

El último paquete de utilidades de red (net-0.32d ) contiene una pequeña utilidad llamada rarp que permite añadir direcciones de nodos a una cache RARP.

Assume subnets are local (CONFIG INET SNARL) [y]

Al mandar datos TCP, el núcleo tiene que dividir los envíos en diversos paquetes antes de pasárselo al nivel IP. Para máquinas accesibles en redes locales como Ethernet, se utilizaran paquetes mas grandes que para máquinas cuyos datos son enviados a través de enlaces de larga distancia.6 Si no se activa la opción SNARL, el núcleo asumirá como locales solo a aquellas redes con las que en ese momento tenga una interface. Si revisa la red de clase B en la Universidad Groucho Marx, toda la red de clase B es local pero la mayoría de los hosts mantienen una interface con solo una o dos subredes. Si se activa la opción SNARL, el núcleo asumirá todas las subredes como locales y utilizara paquetes grandes cuando se comunique con todos los nodos del campus.

Si no desea utilizar tamaños de paquete pequeños para enviar datos a máquinas especificas (si, por ejemplo, utiliza un enlace SLIP para la transmisión de datos), tendrá que hacerlo mediante la opción mtu del encaminamiento (route), que se describe brevemente al final de este capítulo.

Disable NAGLE algorithm (normally enabled) (CONFIG TCP NAGLE OFF) [n]

La formula de Nagle es un método heurístico para evitar enviar paquetes IP particularmente pequeños, también denominados pequegramas7. Los pequegramas son utilizados normalmente por herramientas de red interactivas que transmiten pulsaciones únicas de teclas, como telnet o rsh (remote shell). Los pequegramas pueden llegar a ser particularmente ineficientes bajo enlaces de banda estrecha como SLIP. El algoritmo de Nagle intenta evitarlos reteniendo por poco tiempo la transmisión de datos TCP en algunas circunstancias.

Es recomendable desactivar el algoritmo de Nagle si tiene graves problemas por paquetes perdidos.

_____________________________________________
6 Esto evita la fragmentación por enlaces que tienen un tamaño de paquete máximo muy pequeño.
7 N. del T.: Del inglés tinygrams

 

The IPX protocol (CONFIG IPX) [n]

Activa la capacidad de soportar el protocolo IPX, el protocolo de transporte utilizado por Novell Networking; que sigue todavía bajo desarrollo, y aun no es realmente útil. Una ventaja de esto será cuando algún día se intercambien datos con utilidades IPX basadas en DOS, y encaminen tráfico entre redes Novell mediante un enlace PPP. El soporte para protocolos de alto nivel de redes Novell no esta todavía a la vista, ya que las especificaciones de estos protocolos tienen un coste económico muy elevado.

A partir de la versión 1.1.16 del núcleo, Linux soporta otro tipo de controlador: el controlador vacío (dummy). La siguiente pregunta aparece hacia el comienzo de la sección de controladores de dispositivos:

Dummy net driver support (CONFIG DUMMY) [y]

El controlador vacío no hace realmente gran cosa, pero es bastante útil en máquinas aisladas o conectadas mediante SLIP. Es básicamente un interface en bucle cerrado. La razón de tener este tipo de interface es que en las máquinas que se conectan con SLIP que no disponen de Ethernet, es necesario tener un interface que continuamente maneje las direcciones IP. Esto se discute mas profundamente en las sección La Interface Comodín del capítulo 5.

 

3.3 Una Visita a los Dispositivos de Red de Linux

El núcleo de Linux soporta controladores de hardware de diversas clases. En esta sección se introducen brevemente las familias de controladores disponibles, y los nombres de interfaces que utilizan.

Hay un conjunto de nombres estándares para los interfaces en Linux, que se enumeran a continuación. La mayoría de los controladores soportan mas de un interface, en cuyo caso las interfaces se numeran de la forma: eth0, eth1, etc.

lo Interface de bucle local o de lazo. Se utiliza para realizar pruebas, y para un par de aplicaciones de red. Funciona como un circuito cerrado en el que cualquier datagrama que se le pase como parámetro será inmediatamente devuelto a la capa de red del sistema. En el núcleo siempre hay un dispositivo de bucle local, no tiene sentido tener mas de uno.

ethn Tarjeta Ethernet n -sima. Este es el nombre de interface genérico para la mayoría de las tarjetas Ethernet.

dln Esta interface accede a un adaptador de bolsillo D-Link DE-600, otro dispositivo Ethernet. Tiene un carácter un poco especial ya que esta conectado a un puerto paralelo.

sln Interface SLIP n -sima. Las interfaces SLIP se asocian a líneas serie en el orden en el que son instalados; por ejemplo, sl0, será la primera línea serie en ser configurada para SLIP, etc. El núcleo soporta hasta cuatro interfaces SLIP.

pppn Interface PPP n -sima. Como ocurre con las interfaces SLIP, una interface PPP se asocia a una línea serie una vez que se ha convertido a modo PPP. De momento, se pueden soportar hasta cuatro interfaces de este tipo.

plipn Interface PLIP n -sima. PLIP transporta datagramas IP en líneas paralelas. Se soportan hasta tres interfaces PLIP. El controlador PLIP asigna las interfaces en tiempo de arranque, y se mapean a los puertos paralelos.

 

Para otros controladores de interfaces que puedan ser añadidos en el futuro como RDSI (Red Digital de Servicios Integrados) o AX.25, se utilizaran otros nombres. Controladores como el de IPX (protocolo Novell de red) o AX.25 (utilizado por radio aficionados) están ya en desarrollo, aunque todavía en versiones preliminares (alpha).

En las secciones siguientes se discutirán los detalles de uso de los controladores anteriores.

 

3.4 Instalación Ethernet

El código de red actual de Linux soporta diversas marcas de tarjetas Ethernet. Donald Becker (becker@cesdis.gsfc.nasa.gov) desarrollo la mayoría de los controladores, una familia para tarjetas basadas en el chip 8390 de National Semiconductor; y se la conoce como los la Serie de Controladores Becker. También hay un par de productos de D-Link, entre ellos el adaptador de bolsillo D-Link que permite acceder a una red Ethernet a través de un puerto paralelo. Un controlador para este dispositivo fue programado por Bjorn Ekwall (bjorn@blox.se), mientras que el controlador DEPCA lo programo David C. Davies (davies@wanton.lkg.dec.com).

 

3.4.1 Cableado de Ethernet

Si usted esta instalando una red Ethernet por primera vez en su vida, son necesarios algunos comentarios respecto al cableado. Ethernet tiene una caracteristicas muy especiales de cableado. El cable debe terminar en ambos extremos con una resistencia de 50 Ohm, y no debe tener ninguna ramificacion (p.e. tres cables conectados en estrella). Si esta utilizando cable coaxial fino con conectores BNC en forma de T, estos conectores deben estar directamente conectados al de la tarjeta; no debe insertarse el cable directamente.

Si se conecta a una instalación con cable grueso, debe conectar el ordenador utilizando un transceptor (a veces denominado Unidad de Conexión Ethernet). Puede conectarse el transceptor a un puerto AUI de 25 pines de la tarjeta mediante un cable protegido.

 

3.4.2 Tarjetas Compatibles

Una lista completa de las tarjetas compatibles esta disponible en los Ethernet HOWTOs, publicada mensualmente en comp.os.linux.announce por Paul Gortmaker.8

Incluimos una lista de las tarjetas mas conocidas y utilizadas que soporta Linux. La lista actual del HOWTO es casi tres veces mayor. Aunque encuentre su tarjeta en esta lista, búsquela también en el HOWTO; a veces hay detalles importantes sobre el modo de operación de estas tarjetas. Por ejemplo, algunas tarjetas Ethernet basadas en DMA que utilizan los mismos canales DMA que los que el controlador de SCSI Adaptec 1542 usa por defecto. Si no se cambia el canal de DMA en alguno de las dos, la tarjeta Ethernet podría escribir paquetes de datos en posiciones arbitrarias del disco duro.

3Com EtherLink
Se soporta 3Com EtherLink tanto 3c503 como 3c503/16, además de las versiones 3c507 y 3c509. La 3c501 también se soporta aunque es demasiado lenta como para merecer la pena.

Novell Eagle
Se soportan Novell Eagle NE1000 y NE2000, así como diversas clónicas. También soporta las NE1500 y NE2100.

Western Digital/SMC
Hay que incluir entre las compatibles a la Western Digital/SMC WD8003 y WD8013 (igualmente la SMC Elite y la SMC Elite Plus), y también la nueva SMC Elite 16 Ultra.

Hewlett Packard
Las HP 27252, HP 27247B, y la HP J2405A.

D-Link
El adaptador de bolsillo D-Link DE-600, DE-100, DE-200 y DE-220-T. También hay un kit de ampliación para la DE-650-T, denominado tarjeta PCM-CIA9.

DEC DEC DE200 (32K/64K), DE202, DE100, y DEPCA rev E.

Allied Teliesis

AT1500 y AT1700.

_____________________________________________
8 Paul puede ser localizado en gpg109@rsphysse.anu.edu.au.
9 Puede conseguirse - junto con otro material relacionado con Laptop - en tsx-11.mit.edu, en packages/laptops.

 

Para utilizar cualquiera de estas tarjetas con Linux, debe utilizar un núcleo precompilado de una de las distribuciones de Linux. Estas versiones incluyen normalmente controladores para todas las tarjetas. Aunque a la larga será mejor confeccionarse su propio núcleo y compilarlo solo con los controladores que se necesiten en ese momento.

 

3.4.3 Autoverificacion de red Ethernet

En tiempo de arranque, el código para Ethernet intentara localizar la tarjeta y determinar su tipo. Se comprueban por orden las siguientes direcciones:

Tarjeta

Verificación de las direcciones

WD/SMC

SMC 16 Ultra

3c501

3c503

NEx000

HP

DEPCA

0x300, 0x280, 0x380, 0x240

0x300, 0x280

0x280

0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2a0, 0x2e0

0x300, 0x280, 0x320, 0x340, 0x360

0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240

0x300, 0x320, 0x340, 0x360

 

El código de autoverificación tiene dos limitaciones. Una de ellas es que no reconoce todas las tarjetas correctamente. Esto ocurre frecuentemente con algunas de las tarjetas clónicas más baratas, pero también con algunas tarjetas WD80x3. La otra limitación es que el núcleo no verificará mas de una tarjeta por defecto. Esto se hace así porque se asume que se desea tener control sobre que tarjeta es asignada a que interface.

Si esta utilizando mas de una tarjeta, o si el proceso de autoverificación no consigue detectar su tarjeta, debe indicar explícitamente al núcleo el nombre y dirección base de la tarjeta.

Con Net-3, se tienen dos posibilidades diferentes ante un caso de fallo en la autoverificación. Una de ellas es cambiar o añadir información en el fichero del código fuente del núcleo drivers/net/Space.c, que contiene toda la información sobre controladores. Solo es recomendable en el caso de que el código de red le sea familiar. Una forma mucho mejor es proporcionar al núcleo esta información en tiempo de arranque. Si utiliza lilo al arrancar el sistema, puede pasarle parámetros al núcleo, especificándolos mediante la opción append en el fichero lilo.conf. Por ejemplo, para informar al núcleo sobre la existencia de un dispositivo Ethernet, puede pasarse el siguiente parámetro:

ether=irq , dir_base , param1 ,param2 ,nombre

Los cuatro primeros argumentos son numéricos, mientras que el último es el nombre de un dispositivo. Todos los valores numéricos son opcionales: si se omiten o se dejan a cero, el núcleo intentara averiguar su valor mediante autoverificación, o utilizando un valor por defecto.

El primer parámetro indica el IRQ asignado al dispositivo. Por defecto, el núcleo intentará autodetectar el canal IRQ del dispositivo. El controlador 3c503 tiene un funcionamiento especial seleccionando un canal libre IRQ de la lista 5, 9, 3, 4, y configura la tarjeta para utilizar esta línea.

El parámetro dir_base define la dirección base de E/S de la tarjeta; si vale cero, el núcleo probara con las direcciones de la lista anterior.

Los dos parámetros restantes pueden ser utilizados de forma diferente por controladores diferentes. Para tarjetas de memoria compartida como la WD80x3, especifican la dirección de comienzo y de fin del área de memoria compartida. Otras tarjetas utilizan normalmente el param1 para seleccionar el nivel de información de depuración para el usuario. Los valores del 1 al 7 denotan niveles de detalle en la información, mientras que el valor 8 desactiva todos; por defecto se toma el valor cero. El controlador 3c503 utiliza el param2 para seleccionar el transceptor interno (por defecto) o un transceptor externo (valor 1). El primero utiliza un conector de tarjeta tipo BNC; el último utiliza su puerto AUI.

Si se tienen dos tarjetas Ethernet, puede hacerse que Linux autodetecte una de ellas, y pasar los parámetros de la segunda mediante lilo. Sin embargo, hay que estar seguros de que el controlador accidentalmente no encuentra la segunda tarjeta primero, en cuyo caso la otra no se detectara. Esto se consigue pasando la opción reserve a lilo, que indica explícitamente al núcleo que no verifique el espacio de E/S reservado para la segunda tarjeta.

Por ejemplo, para hacer que Linux instale una segunda tarjeta Ethernet en la dirección (0x300) como eth1, hay que pasarle los siguientes parámetros al núcleo:

reserve=0x300,32 ether=0,0x300,eth1

La opción reserve asegura que ningún controlador accede al espacio de E/S del núcleo cuando verifica algún dispositivo. También pueden utilizarse los parámetros del núcleo para evitar realizar la verificación para eth0:

reserve=0x340,32 ether=0,340,eth0

Para evitar completamente la fase de autoverificación, se especifica el argumento

dir_base a -1:
ether=0,-1,eth0

 

3.5 El controlador PLIP

PLIP permite trabajar con una Línea Paralela IP, y es una forma barata de interconexión cuando se desea conectar solamente dos máquinas. Utiliza un puerto paralelo y un cable especial, alcanzando velocidades entre 10kBps a 20kBps.

PLIP fue desarrollado en principio por Crynwr, Inc. Su diseño es mas que ingenioso (o, si se prefiere, mas propio de un hacker): durante muchos años, los puertos paralelos del PC se utilizaban como puertos para impresora unidireccionales; es decir las ocho líneas de datos podrían ser utilizados solamente para envíos desde el PC al dispositivo periférico, pero no en sentido inverso. El PLIP saca un mejor provecho utilizando la línea de estado número cinco del puerto, que se limita a transferir todos los datos simplemente como nibbles (es decir, medio byte). Hoy en día, estos puertos unidireccionales no son muy utilizados. Por tanto también hay una extensión denominada modo 1 que utiliza la interface completa de 8 bits.

Actualmente Linux solo soporta el modo 0. A diferencia de versiones mas antiguas del código que maneja el PLIP, ahora se intenta hacerlo compatible con las implementaciones PLIP de Cynwr, y para el controlador PLIP en el NCSA telnet 10. Para conectar dos máquinas utilizando PLIP, se necesita un cable especial que se vende en algunas tiendas como cable de "Impresora Nula" ("Null Printer") o "Turbo Laplink". Es posible fabricarlo de forma casera, en el Apéndice A se indica como.

El controlador PLIP para Linux es el trabajo de un número casi incontable de personas. Actualmente esta mantenido por Niibe Yutaka. Si se compila en el núcleo, configura una interface de red para cada posible puerto de impresora, con plip0 correspondiendo al puerto paralelo lp0, plip1 correspondiendo a lp1, etc. El mapeado del interface a los puertos es ahora mismo el siguiente:

Interface

Puerto E/S

IRQ

plip0

plip1

plip2

0x3BC

0x378

0x278

7

7

5

_____________________________________________
10 El NCSA telnet es un programa bastante conocido para DOS que trabaja con TCP/IP en redes Ethernet o PLIP, y soporta telnet, FTP y algunas otras aplicaciones sencillas.

 

Si se tiene configurado el puerto de la impresora de forma diferente, hay que cambiar estos valores en el fichero drivers/net/Space.c del código fuente de Linux, y construir un nuevo núcleo.

Este mapeado no implica que no se puedan utilizar los puertos paralelos de forma normal. Solo son accedidos por el controlador de PLIP cuando el interface correspondiente ha sido configurado como activo.

 

3.6 Los controladores SLIP y PPP

SLIP (Seríal Line IP, Protocolo Internet en Línea Serie), y PPP (Point-to-Point Protocol, Protocolo Punto-a-Punto) son protocolos muy utilizados para enviar paquetes IP a través de enlaces serie. Varias instituciones ofrecen acceso telefónico SLIP y PPP a máquinas conectadas a Internet: esto proporciona conectividad IP a los particulares (algo que de otra forma sería difícil de conseguir debido al elevado coste de otros tipos de conexiones).

Para trabajar con SLIP o PPP, no son necesarias modificaciones en el hardware; puede utilizarse cualquier puerto serie. Ya que es especifica la configuración del puerto serie para interconexión TCP/IP, se le dedicara un capítulo aparte. Para mas información consultar el capítulo 4.