Las versiones actuales de GNU/Linux soportan una gran variedad de tarjetas Ethernet.
La mayoria de los controladores fueron escritos por Donald Becker, que es el
autor de los controladores para una familia de tarjetas basadas en el chip de National
Semiconductor 8390; éstos son conocidos como las Series de Controladores de Becker.
Aunque muchos desarrolladores también han contribuido, actualmente hay algunas
tarjetas Ethernet comunes que no están soportadas por GNU/Linux. La lista de las
tarjetas Ethernet soportadas crece continuamente, así que si su
tarjeta de red no esta soportada ahora, pronto lo estará.
Algunas veces en la temprana historia de GNU/Linux hemos intentado
hacer un listado de todas las tarjetas Ethernet soportadas, pero esto
podría llevarnos mucho tiempo y espacio. Afortunadamente, Paul Gortmaker
mantiene una lista con cada una de las tarjetas soportadas y el método para
hacerlas funcionar bajo GNU/Linux, [1] Éste es enviado mensualmente al grupo de noticias comp.os.linux.answers, y también está disponible
en cualquiera de las réplicas de la web del Linux Documentation Project.
Aun si está seguro de saber como instalar una tarjeta Ethernet particular
en su máquina, a menudo merece la pena echar un vistazo a
lo que pone en el Ethernet HOWTO. Podrá encontrar mucha información
a parte de los simples asuntos de configuración. Por ejemplo, puede
ahorrarle un montón 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 omisión. 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 GNU/Linux, debe usar
un núcleo precompilado procedente de alguna de las principales distribuciones de GNU/Linux.
Estos generalmente tienen modulos disponibles para todos los controladores soportados, y
el proceso de instalación normalmente permite seleccionar qué controladores quiere cargar.
A largo plazo, sin embargo, es mejor contruirse su propio núcleo y compilarlo sólo
con los controladores que necesita; esto ahorra espacio y memoria.
Muchos de los controladores Ethernet de GNU/Linux son lo suficientemente listos
para saber como encontrar a su tarjeta Ethernet. Esto le ahorra tener que
decirle al núcleo dónde está. El Ethernet HOWTO tiene un listado donde
pone qué controladores usan autoverificación y en qué orden buscan por las
direcciones E/S a la tarjeta.
Hay tres limitaciones en el código de autoverificación. Primero, éste no
reconoce bien todas las tarjetas. Esto es especialmente cierto para algunos
clones de tarjetas habituales. Segundo, el núcleo no autocomprobará para buscar
más de una tarjeta a no ser que se le ordene. Esto fue una concisa decisión
de diseño, asumiendo que se quería tener el control sobre qué tarjeta es asignada
a cada interfaz. La mejor manera de hacer esto con seguridad es configurar
manualmente cada tarjeta Ethernet en su máquina. Tercero, el controlador puede que
no busque en las direcciones en que su tarjeta está configurada.
Generalmente hablando, los controladores autocomprobarán 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 dirección.
Las tarjetas de red PCI suelen ser detectadas correctamente. Pero si está usando
más de una tarjeta, o si la autodetección falla, tiene una forma de decirle
al núcleo la dirección base y el nombre de la tarjeta.
En el arranque puede dar al núcleo información y mandatos que cualquiera de los
componentes de éste leerán. Este mecanismo le permite enviar información al núcleo
que el controlador Ethernet pueda usar para localizar a su tarjeta Ethernet o hacer
que la detecte.
Si usa lilo para arrancar, puede enviarle al núcleo parámetros
especificándolos a través de la opción
append en el fichero
lilo.conf. Para informar al núcleo acerca de
un dispositivo Ethernet puede escribir los siguientes parámetros:
ether=irq,base_addr,[param1,][param2,]name |
Los primeros cuatro parámetros son numéricos, mientras que el último es el
nombre del dispositivo. Los parámetros irq,
base_addr, y
name son necesarios, pero los dos parámetros
param son opcionales. Si cualquiera de los
valores numéricos es puesto a cero, el núcleo determinará el valor por
medio de la autoverificación.
El primer parámetro especifica el IRQ asignado al dispositivo. Por defecto,
el núcleo intentará autocomprobar el canal IRQ del dispositivo. El controlador 3c503,
por ejemplo, tiene una característica especial que selecciona un IRQ libre
de entre el 5, 9, 3, 4 y configura la tarjeta para usar uno.
El párametro base_addr proporciona la dirección base de
E/S de la tarjeta, un valor de 0 le dirá al núcleo que pruebe las direcciones listadas
arriba.
Varios controladores usan los dos parámetros siguentes de forma diferentes.
Para tarjetas de memoria-compartida, como la WD80x3, éstos especificarán las
direcciones de principio y final del área de memoria compartida. Otras tarjetas
normalmente usan el param1 para especificar el nivel de
información para debuging que es mostrada. Con valores del 1 al 7 variará la
cantidad de información mostrada, con 8 no se mostrará nada; con 0 se usará el valor por
omisión.
El controlador 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 si no tiene nada especial que configurar.
El primer argumento no numerico es interpretado por el núcleo 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 parámetros de la segunda con lilo,
pero probablemente querrá configurar manualmente las dos. Si decide
que el núcleo busque la primera y configurar manualmente la segunda,
tendrá que asegurarse de que el núcleo 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 núcleo 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, tendrá que usar
los siguientes argumentos en el núcleo:
reserve=0x300,32 ether=0,0x300,eth1 |
La opción reserve asegura que ningún controlador accederá
a la dirección E/S de la segunda tarjeta cuando compruebe algún dispositivo. También
puede usar los parámetros del núcleo para evitar la autoverificación para
eth0 :
reserve=0x340,32 ether=0,0x340,eth0 |
También puede desactivar la autoverificación. Debe de hacer esto, por ejemlo,
para detener la búsqueda de una tarjeta Ethernet que ha quitado temporalmente.
Deshabilitar la autoverificación es tan simple como especificar el
base_addr con un –1:
Para indicar al núcleo éstos parámetros antes de arrancar, introducirá los parámetros
en el indicador "boot:" del lilo. Para que lilo muestre
el indicador "boot:", tiene que pulsar una de las siguientes
teclas: Control, Alt o Shift, mientras
lilo esté arrancando. Si pulsa la tecla del tabulador
en el indicador, le aparecerá la lista de núcleos que puede arrancar.
Para arrancar un núcleo con los parámetos suministrados escriba el nombre
del núcleo que desea que arranque, seguido de un espacio, acompañándolo
con el parámetro que desea. Cuando pulse la tecla Enter,
lilo cargará ese núcleo y lo iniciará con el parámetro
que ha escrito.
Para que este cambio ocurra automáticamente en cada arranque, introduzca los
parámetros 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 |
Después de que haya editado lilo.conf, debe ejecutar
lilo para activar el cambio.