禁用在内核中编译的内核模块(未加载)

禁用在内核中编译的内核模块(未加载)

我的服务器有两个 1 Gbit 和两个 10 Gbit 板载网卡。

我需要完全禁用 1 Gbit 网卡,这样就ifconfig -a不会显示它们。

网卡使用不同的内核模块。 10 Gbit 使用ixgbe,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 

ixgbe都是igb在内核中静态编译的(不是作为可加载模块)。我需要使用内核启动参数禁用该模块。

我尝试将以下内容附加到我的内核中,但没有效果:

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

igb 网卡仍然显示

如何才能完全禁用igb?

答案1

您应该能够igb通过将其初始化函数列入黑名单来将“模块”列入黑名单,即使是内置的:

initcall_blacklist=igb_init_module

到你的内核的启动参数。

当 I2C Designware 未构建为模块时,如何禁用 I2C Designware 支持?了解背景信息。这里的一般方法是在内核源代码中查找模块,并查找具有该__init属性的函数 - 应该只有一个易于识别的主初始化函数(通常在声明中引用module_init)。将其列入黑名单,驱动程序将不会被初始化。

相关内容