web-dev-qa-db-ja.com

カーネルでコンパイルされた(ロードされていない)カーネルモジュールを無効にする

私のサーバーには、2つの1ギガビットおよび2つの10ギガビットオンボードネットワークカードがあります。

1ギガビットネットワークカードを完全に無効にする必要があるので、ifconfig -aはそれらを表示しません。

ネットワークカードは異なるカーネルモジュールを使用します。 10ギガビットはixgbeを使用し、1ギガビットは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を完全に無効にするにはどうすればよいですか?

18
Martin Vegter

組み込みの場合でも、初期化関数をブラックリストに登録することで、igb“モジュール”をブラックリストに登録できるはずです。

initcall_blacklist=igb_init_module

カーネルの起動パラメータに。

背景情報については、 モジュールとしてビルドされていない場合にI2C Designwareサポートを無効にするにはどうすればよいですか? を参照してください。ここでの一般的なレシピは、カーネルソースコードでモジュールを探し、__init属性を持つ関数を探すことです。メインの初期化関数(通常、module_init宣言)。これをブラックリストに登録すると、ドライバーは初期化されません。

30
Stephen Kitt