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

20

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

Eu preciso desativar completamente as placas de rede de 1 Gbit, para que ifconfig -a não as mostre.

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

Eu tentei anexar o seguinte ao meu kernel, mas ele não tem efeito:

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

as placas de rede igb ainda estão sendo exibidas

Como posso desativar o igb completamente?

    
por Martin Vegter 10.09.2018 / 15:21

1 resposta

29

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

initcall_blacklist=igb_init_module

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

Veja Como eu 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 por funções que tenham o atributo __init - deve haver apenas um prontamente identificável como a função principal de inicialização (normalmente referida em uma declaração module_init ). Lista negra, e o driver não será inicializado.

    
por 10.09.2018 / 16:08