カーネルモジュールをブラックリストに登録する方法は?


回答:


44

注:ブラックリストは、カーネルイメージに組み込まれているモジュール(つまり、別のファイルを介してロードされていないモジュール)では機能ません.ko

/etc/modprobe.d/blacklistファイルを開き、次の構文を使用してドライバー名を追加するだけです。

blacklist driver-name

編集:12.10(12.04?)以降のバージョンでは、ファイルは /etc/modprobe.d/blacklist.conf

ボックスを再起動し、lsmodコマンドを使用してLinuxカーネルのモジュールのステータスを表示します

:これdriver-nameは、目的のブラックリストドライバーの名前です。たとえば、NICカードドライバーを無効にする場合lspci -vは、ターミナルでコマンドコマンドを使用して、LANカードのカーネルドライバーの名前を見つけることができます。
たとえば、私の出力は次のとおりです。

........
........ 
6:00.0イーサネットコントローラー:Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express(rev 02)
    サブシステム:Lenovoデバイス3861
    フラグ:バスマスター、高速デバイス、レイテンシ0、IRQ 46
    b8000000のメモリ(64ビット、プリフェッチ不可)[サイズ= 64K]
    [無効]の拡張ROM
    機能: 
    使用中のカーネルドライバー:tg3
    カーネルモジュール:tg3
........
........

ここで、ドライバはtg3です。tg3の代わりに(またはドライバー)を書く必要がありますdriver-name

たくさんの情報がここにあります


7
私の場合(Lubuntu 12.10)では、/etc/modprobe.d/blacklistファイルはありません。/etc/modprobe.d/blacklist.confファイルがあります
-Abdull

1
アップグレード中の競合を避けるために、ユーザーがモジュールをブラックリストに別のファイルに保存することをお勧めします(serverfaultのこのコメントを参照)。
アレクサンダーポズドネエフ

1
blacklist.confファイルが存在する必要はありません。あなたはmy-mom-is-awesomeそこに呼ばれるファイルを置くことができ、それは動作するでしょう。特定のファイルを作成したい場合は、好きな名前を作成してくださいblacklist-nouveau
doug65536

@ doug65536この質問は7年前に投稿されましたが、もちろん状況は変わります。あなたが持っているUbuntuバージョンで新しい質問を作成するだけで、人々はあなたを助けることができます
LnxSlck

@LnxSlck以前のコメントで表明された混乱に対処していました。私は助けが欲しくありませんでした。古いコンテンツに投稿しないという強迫観念は何ですか?腐ったままにしておきますか?人々は今でもこれを見つけており、他の人も同じ質問をします。
doug65536

28

構文を使用してブートするときに、grubコマンドライン(Linuxライン)で一時的にブラックリストに追加することもできます。

module_to_blacklist.blacklist=yes

1
この「一時的な」期間はどれくらいですか?次の起動まで?
セス

1
セス、ブート中に編集した場合は、1回のブートだけの一時的なものです。/etc/grub.d/スクリプトまたは/ etc / default / grubを使用して編集する場合、永続的です。
ピーター

1
どうやらこれはi915:では機能しませんi915: unknown parameter 'blacklist' ignored
ラファウチエラク14

5
これとの違いは何modprobe.blacklist=module_to_blacklistですか?
ザズ

4
または、カーネルパラメーターを使用しますmodprobe.blacklist=module_to_blacklist(詳細man modprobeについては参照)
カールリヒター

11

少なくともUbuntu 16.04 LTSでモジュールをブラックリストに登録する別の方法は、カーネルコマンドラインに次の行を追加することです。

modprobe.blacklist=MODULE_NAME

/ etc / modprobeシステムを使用するのが最善の方法ですが、これはブート時にGRUBコマンドラインを編集することでピンチで使用できる代替手段です。

/ etc / default / grubを編集してGRUB_CMDLINE_LINUX_DEFAULT変数に追加することにより、これを永続的にすることもできます。たとえば、私の/ etc / default / grubには次のものがあります。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

それから私は走りupdate-grub2、それからupdate-initramfs -u。再起動後、起動後にモジュールがロードされない限り、モジュールは解放されます。

このメソッドはELバリアント(RHEL、CentOS、SciLinux)でも機能しますが、grubとinitrdを更新するには、そのディストリビューションのメソッドを使用する必要があります。

(nouveauをブラックリストに登録しようとしている人への注意:を実行してXをロードしないようにしてくださいsystemctl set-default multi-user.target。そうでない場合、Xが起動するとnouveauが再度ロードされます!)


4

最近のリリースでは、ブラックリストファイルでinstallディレクティブを使用する必要があります

install modulename /bin/false

上記の「モジュール名」をモジュールの名前に置き換えます。これにより、ロードが強制的に防止されます。

modprobe.confのマニュアルにインストールディレクティブに関する詳細情報があります。

man modprobe.conf

2
これは非常に役立ちます。ブラックリストエントリがあっても判明した/etc/modprobe/blacklist.confので、モジュールはで手動でロードできますmodprobe <module_name>install <module_name> /bin/falseメソッドを使用すると、必要に応じてこれが失敗します。
RawwrBag

3

これらのソリューションはいずれも、16.04 LTS for i915.koでは機能しませんでした。

私が見つけた(汚い)解決策は、名前を変更することでした

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

残念ながら、外部VGA画面はもう認識されません:{


6
必要なのはsudo update-initramfs -u、/ etc / modeprobe.d /ファイルを変更した後です
イヴァンブラック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.