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


18

私のサーバーには2つの1ギガビットと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を完全に無効にするにはどうすればよいですか?

回答:


30

igb初期化機能をブラックリストに追加することにより、組み込み時でも「モジュール」をブラックリストに登録できるはずです。

initcall_blacklist=igb_init_module

カーネルのブートパラメータに。

モジュールとしてビルドされていないI2Cデザインウェアサポートを無効にする方法をご覧ください背景情報。ここでの一般的なレシピは、カーネルソースコードでモジュールを探し、__init属性を持つ関数を探すことです。メインの初期化関数(通常はmodule_init宣言で参照される)として容易に識別できるもののみが必要です。ブラックリストに登録すると、ドライバーは初期化されません。


4
重要な人のために、initcall_blacklistパラメータはLinux 3.16に登場しました。
ルスラン

1
<modulename>_init_module、モジュールとして構築できるすべての正規名ですか?
バナンイン

1
@Bananguinは残念ながらそうではありませんが、呼ばれる..._init_moduleor はかなりあります..._module_initが、それらすべてがこれらのパターンに従っているわけではありません。
スティーブンキット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.