3.10. システムの起動時にカーネルモジュールが自動的にロードされないようにする
対応する コマンドを使用して、modprobe
設定ファイルにモジュールを一覧表示することで、起動プロセス中にシステムが自動的にカーネルモジュールを読み込むことを阻止できます。
前提条件
-
この手順のコマンドには root 権限が必要です。
su -
を使用して root ユーザーに切り替えるか、コマンドの前にsudo
を付けます。 -
kmod
パッケージがインストールされている。 - 現在のシステム設定に、拒否する予定のカーネルモジュールが必要ないことを確認する。
手順
lsmod
コマンドを使用して、現在実行中のカーネルに読み込まれているモジュールを一覧表示します。$ lsmod Module Size Used by tls 131072 0 uinput 20480 1 snd_seq_dummy 16384 0 snd_hrtimer 16384 1 …
出力で、読み込みを阻止するモジュールを特定します。
または、
/lib/modules/<KERNEL-VERSION>/kernel/<SUBSYSTEM>/
ディレクトリーに読み込まれないようにするアンロードしたカーネルモジュールを特定します。以下に例を示します。$ ls /lib/modules/4.18.0-477.20.1.el8_8.x86_64/kernel/crypto/ ansi_cprng.ko.xz chacha20poly1305.ko.xz md4.ko.xz serpent_generic.ko.xz anubis.ko.xz cmac.ko.xz…
拒否リストとして機能する設定ファイルを作成します。
# touch /etc/modprobe.d/denylist.conf
任意のテキストエディターで、カーネルへの自動読み込みから除外するモジュール名を
blacklist
設定コマンドと組み合わせます。以下に例を示します。# Prevents <KERNEL-MODULE-1> from being loaded blacklist <MODULE-NAME-1> install <MODULE-NAME-1> /bin/false # Prevents <KERNEL-MODULE-2> from being loaded blacklist <MODULE-NAME-2> install <MODULE-NAME-2> /bin/false …
blacklist
コマンドは、モジュールが、拒否リストにない別のカーネルモジュールの依存関係として読み込まれることを阻止しないため、install
行も定義する必要があります。この場合、システムはモジュールをインストールする代わりに/bin/false
を実行します。ハッシュ記号で始まる行は、ファイルをより読みやすくするために使用可能なコメントです。注記カーネルモジュールの名前を入力する際には、
.ko.xz
拡張子は名前の末尾に追加しないでください。カーネルモジュール名には拡張子はありません。ただし、対応するファイルには拡張子があります。再構築を行う前に、現在の初期 RAM ディスクイメージのバックアップコピーを作成します。
# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
または、カーネルモジュールの自動読み込みを阻止するカーネルバージョンに対応する初期 RAM ディスクイメージのバックアップコピーを作成します。
# cp /boot/initramfs-<VERSION>.img /boot/initramfs-<VERSION>.img.bak.$(date +%m-%d-%H%M%S)
新しい初期 RAM ディスクイメージを生成して、変更を適用します。
# dracut -f -v
システムで現在使用中のものとは異なるカーネルバージョンの初期 RAM ディスクイメージを構築する場合は、ターゲット
initramfs
とカーネルバージョンの両方を指定します。# dracut -f -v /boot/initramfs-<TARGET-VERSION>.img <CORRESPONDING-TARGET-KERNEL-VERSION>
システムを再起動します。
$ reboot
この手順で説明している変更は、システムを再起動しても持続されます。拒否リストにキーカーネルモジュールを誤って記載した場合、システムを不安定または操作不能な状態に切り換えることができます。
関連情報
- ソリューション記事 How do I prevent a kernel module from loading automatically? を参照してください。
-
modprobe.d(5)
およびdracut(8)
の man ページ を参照してください。