Guía de Administración de Redes con Linux | ||
---|---|---|
Anterior | Capítulo 3. Configurancion del hardware de red | Siguiente |
Las versiones actuales de Linux soportan una gran variedad de tarjetas Ethernet. La mayoria de los drivers fueron escritos por Donald Becker, que es el autor de los drivers para una familia de tarjetas basadas en el chip de National Semiconductor 8390; estos son conocidos como las Series de Drivers de Becker. Aunque muchos desarrolladores tambien han contribuido, actualmente hay algunas tarjetas Ethernet comunes que no estan soportadas por Linux. La lista de las tarjetas Ethernet soportadas crece continuamente, asi que si su tarjeta de red no esta soportada ahora, pronto lo estara.
Algunas veces en la temprana historia de Linux hemos intentado hacer un listado de todas las tarjetas Ethernet soportadas, pero esto podria llevarnos mucho tiempo y espacio. Afortunadamente, Paul Gortmaker mantiene una lista con cada una de las tarjetas soportadas y el metodo para hacerlas funcionar bajo linux, [1] Este es enviado mensualmente al grupo de noticias comp.os.linux.answers, y tambien esta disponible en cualquiera de los mirrors de la web del Linux Documentation Project.
Aun si esta seguro de saber como instalar una tarjeta Ethernet particular en su maquina, a menudo merece la pena echar un vistazo a lo que pone en el Ethernet HOWTO. Podra encontrar mucha informacion a parte de los simples asuntos de configuracion. Por ejemplo, puede ahorrarle un monton de dolores de cabeza conocer el comportamiento de muchas tarjetas Ethernet basadas en DMA que usan el mismo canal DMA que la controladora SCSI Adaptec 1542 por defecto. Si no cambia una de ellas a un canal DMA diferente puede terminar con la tarjeta Ethernet escribiendo paketes de datos en lugares al azar de su disco duro.
Para usar cualquiera de las tarjetas Ethernet soportadas con Linux, debe usar un kernel precompilado procedente de alguna de las principales distribuciones de Linux. Estos generalmente tienen modulos disponibles para todos los drivers soportados, y el proceso de instalacion normalmente permite seleccionar que drivers quiere cargar. A largo plazo, sin embargo, es mejor contruirse su propio kernel y compilarlo solo con los drivers que necesita; esto ahorra espacio y memoria.
Muchos de los drivers Ethernet de Linux son lo suficientemente listos para saber como encontrar a su tarjeta Ethernet. Esto le ahorra tener que decirle al kernel donde esta. El Ethernet HOWTO tiene un listado donde pone que drivers usan autoverificacion y en que orden buscan por las direcciones E/S a la tarjeta.
Hay tres limitaciones en el codigo de autoverificacion. Primero, este no reconoce bien todas las tarjetas. Esto es especialmente cierto para algunos clones de tarjetas habituales. Segundo, el kernel no autocomprobara para buscar mas de una tarjeta a no ser que se le ordene. Esto fue una concisa decision de diseño, asumiendo que se queria tener el control sobre que tarjeta es asignada a cada interface. La mejor manera de hacer esto con seguridad es configurar manualmente cada tarjeta Ethernet en su maquina. Tercero, el driver puede que no busque en las direcciones en que su tarjeta esta configurada. Generalmente hablando, los drivers autocomprobaran en las direcciones en que el dispositivo en particular es capaz de ser configurado, pero algunas veces ciertas direcciones son ignoradas para evitar conflictos de hardware con otros tipos de tarjetas que usan normalmente la misma direccion.
Las tarjetas de red PCI suelen ser detectadas correctamente. Pero si esta usando mas de una tarjeta, o si la autodeteccion fallo, tiene una forma de decirle al kernel la direccion base y el nombre de la tarjeta.
En el arranque puede dar al kernel informacion y mandatos que cualquiera de los componentes de este leeran. Este mecanismo le permite enviar informacion al kernel que el driver Ethernet pueda usar para localizar a su tarjeta Ethernet o hacer que la detecte.
Si usa lilo para arrancar, puede enviarle al kernel parametros especificandolos a traves de la opcion append en el fichero lilo.conf. Para informar al kernel acerca de un dispositivo Ethernet puede escribir los siguientes parametros:
ether=irq,base_addr,[param1,][param2,]name |
Los primeros cuatro parametros son numericos, mientras que el ultimo es el nombre del dispositivo. Los parametros irq, base_addr, y name son necesarios, pero los dos parametros param son opcionales. Si cualquiera de los valores numericos es puesto a cero, el kernel determinara el valor por medio de la autoverificacion.
El primer parametro especifica el IRQ asignado al dispositivo. Por defecto, el kernel intentara autocomprobar el canal IRQ del dispositivo. El driver 3c503, por ejemplo, tiene una caracteristica especial que selecciona un IRQ libre de entre el 5, 9, 3, 4 y configura la tarjeta para usar uno. El parametro base_addr proporciona la direccion base de E/S de la tarjeta, un valor de 0 le dira al kernel que pruebe las direcciones listadas arriba.
Varios drivers usan los dos parametros siguentes de forma diferentes. Para tarjetas de memoria-compartida, como la WD80x3, estos especificaran las direcciones de principio y final del area de memoria compartida. Otras tarjetas normalmente usan el param1 para especificar el nivel de informacion para debuging que es mostrada. Con valores del 1 al 7 variara la cantidad de informacion mostrada, con 8 no se mostrara nada; con 0 se usara el valor por defecto. El driver 3c503 usa el param2 para elegir entre el transceptor (transceiver) interno (por defecto) o el transceptor externo (el valor de 1). El anterior usa el conector BNC de la tarjeta, el posterior usa el puerto AUI. Los argumentos de param no son necesarios en todo sino tiene nada especial que configurar.
El primer argumento no numerico es interpretado por el kernel como el nombre del dispositivo. Debe especificar un nombre de dispositivo para cada tarjeta Ethernet.
Si tiene dos tarjetas Ethernet, puede dejar que linux autodetecte una e indicarle los parametros de la segunda con lilo, pero probablemente querra configurar manualmente las dos. Si decide que el kernel busque la primera y configurar manualmente la segunda, tendra que asegurarse de que el kernel no ha encontrado accidentalmente la segunda tarjeta primero, o cualquiera que no quiera que sea registrada. Haga esto introduciendo en lilo la opción reserve, con esto le dice al kernel que evite la comprobacion de la direccion base E/S que usa la segunda tarjeta. Para hacer que Linux instale una segunda tarjeta Ethernet en 0x300 como eth1, tendra que usar los siguientes argumentos en el kernel:
reserve=0x300,32 ether=0,0x300,eth1 |
La opcion reserve asegura que ningun driver accedera a la direccion E/S de la segunda tarjeta cuando compruebe algun dispositivo. Tambien puede usar los parametros del kernel para evitar la autoverificacion para eth0 :
reserve=0x340,32 ether=0,0x340,eth0 |
Tambien puede desactivar la autoverificacion. Debe de hacer esto, por ejemlo, para detener la busqueda de una tarjeta Ethernet que ha quitado temporalmente. Desabilitar la autoverificacion es tan simple como especificar el base_addr con un –1:
ether=0,-1,eth0 |
Para indicar al kernel estos parametros antes de arrancar, introducira los parametros en el prompt "boot:" del lilo. Para que lilo muestre el prompt "boot:", tiene que pulsar una de las siguientes teclas: Control, Alt o Shift, mientras lilo este arrancando. Si pulsa la tecla del tabulador en el prompt, le aparecera la lista de kernels que puede arrancar. Para arrancar un kernel con los parametos suministrados escriba el nombre del kernel que desea que arranque, seguido de un espacio, acompañandolo con el parametro que desea. Cuando pulse la tecla Enter, lilo cargara ese kernel y lo iniciara con el parametro que ha escrito.
Para que este cambio ocurra automaticamente en cada arranque, introduzca los parametros en el fichero /etc/lilo.conf usando la palabra append=. Quedando algo parecido a esto por ejemplo:
boot=/dev/hda root=/dev/hda2 install=/boot/boot.b map=/boot/map vga=normal delay=20 append="ether=10,300,eth0" image=/boot/vmlinuz-2.2.14 label=2.2.14 read-only |
Despues de que haya editado lilo.conf, debe ejecutar lilo para activar el cambio.
[1] | en el Ethernet HOWTO, Paul puede ser localizado en gpg109@rsphy1.anu.edu.au |