付録E カーネルモジュールの自動読み込みの回避

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

手順

  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. システムを再起動します。

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

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

手順

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

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