3.10. システムの起動時にカーネルモジュールが自動的にロードされないようにする

対応する コマンドを使用して、modprobe 設定ファイルにモジュールを一覧表示することで、起動プロセス中にシステムが自動的にカーネルモジュールを読み込むことを阻止できます。

前提条件

  • この手順のコマンドには root 権限が必要です。su - を使用して root ユーザーに切り替えるか、コマンドの前に sudo を付けます。
  • kmod パッケージがインストールされている。
  • 現在のシステム設定に、拒否する予定のカーネルモジュールが必要ないことを確認する。

手順

  1. 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…
  2. 拒否リストとして機能する設定ファイルを作成します。

    # touch /etc/modprobe.d/denylist.conf
  3. 任意のテキストエディターで、カーネルへの自動読み込みから除外するモジュール名を 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 拡張子は名前の末尾に追加しないでください。カーネルモジュール名には拡張子はありません。ただし、対応するファイルには拡張子があります。

  4. 再構築を行う前に、現在の初期 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)
  5. 新しい初期 RAM ディスクイメージを生成して、変更を適用します。

    # dracut -f -v
    • システムで現在使用中のものとは異なるカーネルバージョンの初期 RAM ディスクイメージを構築する場合は、ターゲット initramfs とカーネルバージョンの両方を指定します。

      # dracut -f -v /boot/initramfs-<TARGET-VERSION>.img <CORRESPONDING-TARGET-KERNEL-VERSION>
  6. システムを再起動します。

    $ reboot
重要

この手順で説明している変更は、システムを再起動しても持続されます。拒否リストにキーカーネルモジュールを誤って記載した場合、システムを不安定または操作不能な状態に切り換えることができます。

関連情報