Cómo asignar el controlador e1000e al adaptador Ethernet

Cómo asignar el controlador e1000e al adaptador Ethernet

¿Existe alguna forma de indicarle a un adaptador Ethernet que utilice un determinado controlador? ¿O tal vez la forma en que funciona es tener una forma de indicarle a un controlador que admita un adaptador específico?

Tengo un sistema que ejecuta un sistema operativo RHEL Server 7.3 instalado recientemente (kernel 3.10.0-514.el7.x86_64), donde el controlador e1000e no está vinculado a un adaptador Ethernet I219-LM integrado. Esta condición se encontró mientras investigaba por qué el adaptador no funciona correctamente. El otro adaptador Ethernet, que funciona bien, es una tarjeta PCI conectada al MB.

Un simple lspcidice:

# lspci | grep net
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
06:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)

Detallado lspcipara el dispositivo I219-LM no informa un controlador en uso:

# lspci -v -s 00:1f.6
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
    Subsystem: Intel Corporation Device 0000
    Flags: fast devsel, IRQ 16
    Memory at a1700000 (32-bit, non-prefetchable) [size=128K]
    Capabilities: [c8] Power Management version 3
    Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [e0] PCI Advanced Features
    Kernel modules: e1000e

Por el contrario, el mismo comando para el otro adaptador indica que el dispositivo está utilizando e1000e:

# lspci -v -s 06:00.0
06:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)
    Subsystem: Intel Corporation PRO/1000 PT Server Adapter
    Flags: bus master, fast devsel, latency 0, IRQ 130
    Memory at a1320000 (32-bit, non-prefetchable) [size=128K]
    Memory at a1300000 (32-bit, non-prefetchable) [size=128K]
    I/O ports at 4000 [disabled] [size=32]
    Expansion ROM at a1340000 [disabled] [size=128K]
    Capabilities: [c8] Power Management version 2
    Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [e0] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Device Serial Number [edited]
    Kernel driver in use: e1000e
    Kernel modules: e1000e

Tengo otro sistema disponible, que utiliza el mismo sistema operativo y tipo de adaptador I219-LM integrado (y que funciona correctamente), donde verifiqué que, efectivamente, el controlador debería estar vinculado al dispositivo.

Al navegar por las áreas /sys/bus/pci/drivers/e1000ey /sys/devices/pci0000:00/0000:00:1f.6se han mostrado un par de cosas que faltan:

  1. En la .../drivers/e1000ecarpeta, hay un enlace suave que usa la dirección PCI del adaptador 82572EI que apunta al /sys/devices/área, pero ninguno con la del adaptador I219-LM. En comparación, en el mencionado sistema de "control" hay enlaces para todos los adaptadores que tiene.
  2. En la /sys/devices/pci0000:00/0000:00:1f.6zona no existe ningún driverenlace suave. Sin embargo, ese vínculo suave está presente en la carpeta correspondiente para el otro adaptador ( ../pci0000:00/0000:06:00.0), apuntando a la /sys/bus/pci/drivers/e1000eruta como debería.

Avíseme si se necesita más información para ayudarme con esto.

Gracias.

Respuesta1

Creo que me encontré con una situación similar a esta en RHEL7.9 con hardware más nuevo. Todo se reduce a que Red Hat soporte los nuevos controladores NIC asu versióndel conductor. Por lo tanto, el hardware más nuevo a veces puede estar por delante de lo que admite en ese momento. Sé que la versión de su NIC ahora es compatible con RHEL7, ya que tengo una estación de trabajo que usa esa NIC y todo funciona. En mi caso, una nueva torre de precisión de Dell tenía una NIC I219-LM que necesitaba una versión del controlador que Red Hat no admitiría para compatibilidad con RHEL7 (ahora compatible con RHEL8). Estaba arrancando PXE, por lo que fue un poco de trabajo extra hacer que esa parte funcionara.

Para que el arranque PXE funcione correctamente, tuve que actualizar la imagen initrd que se usó para iniciar el arranque e instalar mi imagen, pero como eso no está realmente dentro del alcance de esta pregunta, lo omitiré.

Puede obtener el controlador del sitio web de Intel.página de descarga e1000eo puedes usar el repositorio kmod (enlace kmod e1000e). En mi caso, estaba arrancando e instalando paquetes PXE desde un servidor Spacewalk, así que agregué el paquete kmod-e1000e a mi repositorio y lo instalé durante el proceso de compilación. El paquete kmod-e1000e es la opción más fácil porque no debería sobrescribirse en las actualizaciones del kernel en el futuro.

TL;DR Red Hat puede ser pésimo en cuanto a compatibilidad con controladores, por lo que instalar un controlador más nuevo por separado puede solucionarlo.

PD: Estaré encantado de escribir cómo hacer que las botas PXE funcionen si es necesario.

información relacionada