付録E カーネルモジュールの自動読み込みの回避
モジュールを直接読み込むか、別のモジュールから依存関係として読み込むか、起動プロセス中に読み込むかにかからず、カーネルモジュールが自動的に読み込まれないようにします。
手順
モジュール名は、
modprobe
ユーティリティーの設定ファイルに追加する必要があります。このファイルは、設定ディレクトリー/etc/modprobe.d
に配置する必要があります。この設定ディレクトリーの詳細は、
modprobe.d
の man ページを参照してください。モジュールが以下のいずれかで読み込まれるように設定されていないか確認してください。
-
/etc/modprobe.conf
-
/etc/modprobe.d/*
-
/etc/rc.modules
-
/etc/sysconfig/modules/*
# modprobe --showconfig <_configuration_file_name_>
-
出力にモジュールが表示される場合は、そのモジュールが無視され、読み込まれないことを確認します。
# modprobe --ignore-install <_module_name_>
読み込まれている場合は、実行中のシステムからモジュールの読み込みを解除します。
# modprobe -r <_module_name_>
システム固有の設定ファイルに
blacklist
行を追加して、モジュールを直接読み込まないようにします (例:/etc/modprobe.d/local-dontload.conf
)。# echo "blacklist <_module_name_> >> /etc/modprobe.d/local-dontload.conf
注記必須モジュールの場合や、別のモジュールにおいて任意の依存関係にある場合、この手順を実行してもモジュールの読み込みは回避されません。
オプションのモジュールがオンデマンドで読み込まれないようにします。
# echo "install <_module_name_>/bin/false" >> /etc/modprobe.d/local-dontload.conf
重要除外したモジュールが他のハードウェアで必要とされている場合、除外してしまうと予期しない結果が生じる可能性があります。
initramfs
のバックアップコピーを作成します。# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.$(date +%m-%d-%H%M%S).bak
カーネルモジュールが
initramfs
の一部である場合は、初期ramdisk
イメージを再構築し、そのモジュールを省略します。# dracut --omit-drivers <_module_name_> -f
現在のカーネルコマンドラインパラメーターを取得します。
# grub2-editenv - list | grep kernelopts
<_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_>"
kdump initramfs
のバックアップコピーを作成します。# cp /boot/initramfs-$(uname -r)kdump.img /boot/initramfs-$(uname -r)kdump.img.$(date +%m-%d-%H%M%S).bak
kdump initramfs
から省略するには、rd.driver.blacklist=<_module_name_>
を/etc/sysconfig/kdump
のKDUMP_COMMANDLINE_APPEND
設定に追加します。# sed -i '/^KDUMP_COMMANDLINE_APPEND=/s/"$/ rd.driver.blacklist=module_name"/' /etc/sysconfig/kdump
kdump initrd
への変更を適用するには、kdump
サービスを再起動します。# kdumpctl restart
kdump
の初期ramdisk
イメージを再構築します。# mkdumprd -f /boot/initramfs-$(uname -r)kdump.img
- システムを再起動します。
E.1. モジュールの一時削除
モジュールを一時的に削除できます。
手順
modprobe
を実行して、現在読み込まれているモジュールを削除します。# modprobe -r <module name>
-
モジュールの読み込みを解除できない場合、そのモジュールはプロセスまたは別のモジュールで使用されている可能性があります。その場合はプロセスを終了し、上記で作成した
modpole
コマンドを別のタイミングで実行してモジュール読み込みを解除します。