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
この手順で説明されている変更は、システムの再起動後も 有効なまま維持されます。重要なカーネルモジュールを誤って拒否リストに指定すると、システムが不安定または操作不能な状態になる可能性があります。