RHELのカーネルモジュール管理 – 関連する設定とツール

RHELのカーネルモジュール管理 – 関連する設定とツール

カーネルモジュールはLinuxの柔軟性と機能拡張の基盤です。RHELではカーネルモジュールの管理と設定を効率的に行うことで、システムの安定性とパフォーマンスを最大化できます。この記事では、RHELでのカーネルモジュール管理の基本から応用までを網羅します。

カーネルモジュールとは

カーネルモジュールはLinuxカーネルの機能を動的に拡張するコンポーネントで、ハードウェアのドライバやファイルシステムなどを追加できます。

使用するツールの概要

  • lsmod: 現在ロードされているモジュールのリストを表示
  • modprobe: モジュールの挿入・削除を管理
  • insmod/rmmod: モジュールの手動挿入・削除
  • depmod: モジュールの依存関係を解析

現在のカーネルモジュールの確認

ロードされているカーネルモジュールを確認するには以下を実行します。

lsmod

カーネルモジュールの詳細情報

特定のモジュールの詳細情報を表示するにはmodinfoを使用します。

modinfo <モジュール名>

カーネルモジュールのロード

モジュールをロードするにはmodprobeを使用します。

sudo modprobe <モジュール名>

カーネルモジュールのアンロード

モジュールを削除するには以下のコマンドを使用します。

sudo modprobe -r <モジュール名>

依存関係の管理

モジュールの依存関係を確認し、正しい順序でロードするにはdepmodを使用します。

sudo depmod -a

モジュールの手動操作

insmodとrmmodを使用して、モジュールを手動で挿入・削除します。

sudo insmod /path/to/module.ko
sudo rmmod <モジュール名>

カーネルモジュールの自動ロード設定

特定のモジュールをシステム起動時に自動でロードするには、/etc/modules-load.d/に設定ファイルを作成します。

echo "<モジュール名>" | sudo tee /etc/modules-load.d/<モジュール名>.conf

モジュールのブラックリスト設定

ロードを禁止するモジュールをブラックリストに追加するには、/etc/modprobe.d/に設定ファイルを作成します。

echo "blacklist <モジュール名>" | sudo tee /etc/modprobe.d/<モジュール名>.conf

モジュールのトラブルシューティング

ロードエラーが発生した場合、dmesgを確認してエラーの詳細を取得します。

dmesg | grep <モジュール名>

カーネルモジュールのコンパイル

独自のモジュールを作成するためのコンパイル手順を説明します。

  • カーネルヘッダをインストール: sudo yum install kernel-devel
  • モジュールコードの準備: C言語で作成
  • Makefileの作成
  • コンパイルの実行: make

動的デバイス設定とカーネルモジュール

udevを使用して特定のデバイスが接続されたときにモジュールをロードする設定を行います。

sudo nano /etc/udev/rules.d/99-custom.rules

ルール例:

KERNEL=="<デバイス名>", ACTION=="add", RUN+="/sbin/modprobe <モジュール名>"

カーネルモジュールのセキュリティ管理

不要なモジュールを削除し、セキュリティリスクを低減します。また、SELinuxを有効化してモジュール操作を制限します。

sudo semanage boolean --modify --on kernel_module_disable

まとめ

RHELでのカーネルモジュール管理は、システムの柔軟性と安定性を高める重要な要素です。適切なツールと設定を活用して、必要な機能を効果的に管理してください。