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


18

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

我需要完全禁用1-Gbit网卡,以便ifconfig -a不显示它们。

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

双方ixgbeigb在内核中(而不是作为一个可加载模块)静态编译。我需要使用内核引导参数禁用该模块。

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

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

igb网卡仍在显示

如何完全禁用igb?

Answers:


30

igb即使将其内置,您也应该能够通过将其初始化功能列入黑名单,从而将该“模块”列入黑名单:

initcall_blacklist=igb_init_module

到内核​​的启动参数。

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


4
对于那些重要的人,该initcall_blacklist参数出现在Linux 3.16中
Ruslan '18

1
<modulename>_init_module每一个和一切的规范名称,可以建成一个模块?
Bananguin

1
不幸的是,@ Bananguin并非如此,有很多人叫..._init_module或,..._module_init但他们并非全部遵循这些模式。
斯蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.