deshabilitar el módulo del núcleo que se compila en el núcleo (no cargado)

18

Mi servidor tiene dos tarjetas de red integradas de 1 Gbit y dos de 10 Gbit.

Necesito deshabilitar completamente las tarjetas de red de 1 Gbit, para que ifconfig -ano se muestren.

Las tarjetas de red usan diferentes módulos del núcleo. El uso de 10 Gbit ixgbey el uso de 1 Gbit igb.

01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
Subsystem: Dell Ethernet 10G 4P X520/I350 rNDC
Kernel driver in use: ixgbe

05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
Subsystem: Dell I350 Gigabit Network Connection
Kernel driver in use: igb 

Ambos ixgbey igbse compilan estáticamente en el núcleo (no como un módulo cargable). Necesito deshabilitar el módulo usando los parámetros de arranque del kernel.

He intentado agregar lo siguiente a mi kernel, pero no tiene ningún efecto:

igb.blacklist=yes
igb.enable=0
igb.disable=yes

las tarjetas de red igb siguen mostrando

¿Cómo puedo desactivar igb por completo?

Martin Vegter
fuente

Respuestas:

30

Debería poder incluir en la lista negra el igb"módulo", incluso cuando está incorporado, al poner en la lista negra su función de inicialización: agregar

initcall_blacklist=igb_init_module

a los parámetros de arranque de su kernel.

Consulte ¿Cómo deshabilito el soporte de I2C Designware cuando no está construido como un módulo? para información de fondo. La receta general aquí es buscar el módulo en el código fuente del kernel y buscar funciones que tengan el __initatributo: solo debería haber una fácilmente identificable como la función de inicialización principal (típicamente referida en una module_initdeclaración). Lista negra de eso, y el controlador no se inicializará.

Stephen Kitt
fuente
44
Para aquellos a quienes les importa, el initcall_blacklistparámetro apareció en Linux 3.16 .
Ruslan
1
<modulename>_init_moduleCuál es el nombre canónico para cada uno y todo lo que se puede construir como un módulo?
Bananguin
1
@Bananguin desafortunadamente no, se llaman bastantes ..._init_moduleo ..._module_initno, pero no todos siguen esos patrones.
Stephen Kitt