Kernel

禁用在核心中編譯的核心模組(未載入)

  • September 13, 2018

我的伺服器有兩個 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 

兩者ixgbeigb在核心中靜態編譯(不是作為可載入模組)。我需要使用核心引導參數禁用模組。

我嘗試將以下內容附加到我的核心中,但沒有效果:

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

igb網卡還在顯示

如何完全禁用 igb?

igb即使是內置的,您也應該能夠通過將其初始化功能列入黑名單來將“模組”列入黑名單:添加

initcall_blacklist=igb_init_module

到核心的引導參數。

請參閱未將 I2C 設計件支持建構為模組時如何禁用它?背景資訊。這裡的一般方法是在核心原始碼中查找模組,並查找具有該__init屬性的函式——應該只有一個易於辨識為主要初始化函式(通常在module_init聲明中引用)。將其列入黑名單,驅動程序將不會被初始化。

引用自:https://unix.stackexchange.com/questions/468024