付録G カーネルモジュールが自動的にロードされないようにする手順

モジュールを直接読み込むか、別のモジュールから依存関係として読み込むか、起動プロセス中に読み込むかに拘らず、カーネルモジュールが自動的に読み込まれないようにします。

手順

  1. モジュール名は、modprobe ユーティリティーの設定ファイルに追加する必要があります。このファイルは、設定ディレクトリー /etc/modprobe.d に配置する必要があります。

    この設定ディレクトリーの詳細は、modprobe.d の man ページを参照してください。

  2. モジュールは、以下のいずれかで読み込まれる設定になっていないことを確認してください。

    • /etc/modprobe.conf
    • /etc/modprobe.d/*
    • /etc/rc.modules
    • /etc/sysconfig/modules/*
    # modprobe --showconfig <_configuration_file_name_>
  3. モジュールが出力に表示される場合は、そのモジュールが無視され、読み込まれないことを確認します。

    # modprobe --ignore-install <_module_name_>
  4. 読み込まれている場合は、実行中のシステムからモジュールの読み込みを解除します。

    # modprobe -r <_module_name_>
  5. システム固有の設定ファイルに blacklist 行を追加して、モジュールを直接ロードしないようにします(例: /etc/modprobe.d/local-dontload.conf)。

    # echo "blacklist <_module_name_> >> /etc/modprobe.d/local-dontload.conf
    注記

    このモジュールが必須の場合や、別のモジュールの任意の依存関係の場合には、この手順ではモジュールの読み込みは回避されません。

  6. オプションのモジュールがオンデマンドで読み込まれないようにします。

    # echo "install <_module_name_>/bin/false" >> /etc/modprobe.d/local-dontload.conf
    重要

    除外したモジュールが他のハードウェアに必要な場合は、除外してしまうと予期しない結果が生じる可能性があります。

  7. initramfs のバックアップコピーを作成します。

    # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.$(date +%m-%d-%H%M%S).bak
  8. カーネルモジュールが initramfs の一部である場合は、初期 ramdisk イメージを再構築し、そのモジュールを省略します。

    # dracut --omit-drivers <_module_name_> -f
  9. 現在のカーネルコマンドラインパラメーターを取得します。

    # grub2-editenv - list | grep kernelopts
  10. <_module_name_>.blacklist=1 rd.driver.blacklist=<_module_name_> を、生成された出力に追加します。

    # grub2-editenv - set kernelopts="<> <_module_name_>.blacklist=1 rd.driver.blacklist=<_module_name_>"

    以下に例を示します。

    # grub2-editenv - set kernelopts="root=/dev/mapper/rhel_example-root ro crashkernel=auto resume=/dev/mapper/rhel_example-swap rd.lvm.lv=rhel_example/root rd.lvm.lv=rhel_example/swap <_module_name_>.blacklist=1 rd.driver.blacklist=<_module_name_>"
  11. kdump initramfs のバックアップコピーを作成します。

    # cp /boot/initramfs-$(uname -r)kdump.img /boot/initramfs-$(uname -r)kdump.img.$(date +%m-%d-%H%M%S).bak
  12. kdump initramfs から省略するには、rd.driver.blacklist=<_module_name_>/etc/sysconfig/kdumpKDUMP_COMMANDLINE_APPEND 設定に追加します。

    # sed -i '/^KDUMP_COMMANDLINE_APPEND=/s/"$/ rd.driver.blacklist=module_name"/' /etc/sysconfig/kdump
  13. kdump initrd への変更を適用するには、kdump サービスを再起動します。

      # kdumpctl restart
  14. kdump の初期 ramdisk イメージを再構築します。

      # mkdumprd -f /boot/initramfs-$(uname -r)kdump.img
  15. システムを再起動します。

G.1. モジュールの一時削除

モジュールを一時的に削除できます。

手順

  1. modprobe を実行して、現在読み込まれているモジュールを削除します。

    # modprobe -r <module name>
  2. モジュールをアンロードできない場合は、プロセスまたは別のモジュールがそのままモジュールを使用している可能性があります。その場合は、プロセスを終了し、上記で作成した modpole コマンドを別のタイミングで実行してモジュールをアンロードします。