Ethernet Autoprobing


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 autocom-probar el canal IRQ del dispositivo. El driver 3c503, por ejemplo, tiene una caracteristica especial que se-lecciona 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,0×300,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,0×340,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.

Califica este Artículo

Categoría: Conectividad y Redes.




Deja una respuesta