desativar módulo do kernel que é compilado no kernel (não carregado)

18

Meu servidor possui duas placas de rede integradas de 1 Gbit e 10 Gbit.

Preciso desativar completamente as placas de rede de 1 Gbit, para que ifconfig -anão as mostrem.

As placas de rede usam diferentes módulos do kernel. O uso de 10 Gbit ixgbee o 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 ixgbee igbsão compilados estaticamente no kernel (não como um módulo carregável). Preciso desativar o módulo usando os parâmetros de inicialização do kernel.

Tentei anexar o seguinte ao meu kernel, mas não tem efeito:

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

as placas de rede igb ainda estão aparecendo

Como posso desativar o igb completamente?

Martin Vegter
fonte

Respostas:

30

Você deve conseguir colocar o igb“módulo” na lista negra , mesmo quando embutido, na lista negra de sua função de inicialização: add

initcall_blacklist=igb_init_module

aos parâmetros de inicialização do seu kernel.

Consulte Como desabilito o suporte ao I2C Designware quando ele não é construído como um módulo? para informações básicas. A receita geral aqui é procurar o módulo no código-fonte do kernel e procurar funções que possuam o __initatributo - deve haver apenas um facilmente identificável como a principal função de inicialização (normalmente referida em uma module_initdeclaração). Lista negra que, e o driver não será inicializado.

Stephen Kitt
fonte
4
Para quem importa, o initcall_blacklistparâmetro apareceu no Linux 3.16 .
Ruslan
11
é <modulename>_init_moduleo nome canônico para cada um e tudo o que pode ser construído como um módulo?
Bananguin 13/09/18
11
@Banguanguin, infelizmente, não, existem alguns chamados ..._init_moduleou ..._module_initmas nem todos seguem esses padrões.
Stephen Kitt