Linuxカーネルモジュールの管理方法:ロード、アンロード、依存関係

  • URLをコピーしました!

Linuxシステムにおいて、カーネルモジュールは、必要に応じてカーネルに動的に機能を追加する役割を果たします。
例えば、新しいハードウェアを追加した際、そのデバイスをカーネルが認識し、動作させるためにモジュールが必要です。
ここでは、カーネルモジュールの管理コマンドを詳細に解説します。

目次

lsmod: ロードされているカーネルモジュールを一覧表示

lsmodは、現在ロードされているカーネルモジュールを簡潔に一覧表示します。
表示される項目には、モジュール名、モジュールサイズ、使用回数があります。
これにより、システムで動作中のモジュールを把握できます。

使用例:
lsmod
結果例:
Module                  Size  Used by
nls_utf8               16384  1
nls_cp437              20480  1
vfat                   20480  1
ポイント
  • Size: モジュールのサイズ(メモリ使用量)
  • Used by: 他のモジュールやプロセスがそのモジュールを利用している数

modprobe: カーネルモジュールをロードまたはアンロード

modprobeは、モジュールを動的にロード(挿入)またはアンロード(削除)するための主要なコマンドで、
依存関係のあるモジュールも自動で処理します。
insmodrmmodに比べて高機能で、依存関係の管理が容易です。

モジュールのロード:
sudo modprobe module_name
モジュールのアンロード:
sudo modprobe -r module_name
主なオプション:
  • -r: モジュールの削除
  • -v: 詳細な出力を表示(ロード時の情報確認)
  • -n: 実際にはロードせずシミュレート

:
無線ネットワークアダプターのドライバーモジュールをロードする場合:

sudo modprobe rtl8188eu

モジュール依存関係の解決
modprobeは、依存関係がある場合でも適切にすべての関連モジュールをロード
またはアンロードしてくれるため、手動での管理が必要ありません。

insmod / rmmod: モジュールの手動挿入と削除

insmodrmmodは、特定のカーネルモジュールを手動で挿入または削除する低レベルコマンドです。
modprobeが依存関係を自動で解決するのに対し、insmodrmmodは依存関係を処理しません。
これは、手動でモジュールを管理する必要がある特殊な場合に使われます。

使用例:モジュールの挿入
sudo insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/driver_name.ko
使用例:モジュールの削除
sudo rmmod driver_name
オプション:
  • insmodはモジュールのファイルパスを指定して挿入します。
  • rmmodはモジュールを削除しますが、依存関係がある場合は失敗します。
使用例
  • 特定のドライバーモジュールをテストする際などに利用されます。

depmod: モジュール依存関係の生成

depmodは、カーネルモジュールの依存関係を解析し、
/lib/modules/$(uname -r)/modules.depというファイルを生成します。


modprobeは、このファイルを使用して依存関係を解決します。
モジュールの更新やカーネルのバージョンが変更された場合には、
このコマンドで依存関係を最新の状態に保ちます。

使用例:
sudo depmod

カーネルのモジュールツリー全体の依存関係を再構築し、
これにより、modprobeがモジュールの依存関係を適切に処理できるようになります。

設定ファイルとモジュールのブラックリスト化

カーネルモジュールの自動ロードやブラックリスト設定は、
/etc/modprobe.d/ディレクトリにある設定ファイルで管理します。
特定のモジュールを自動でロードしたくない場合、モジュールをブラックリストに追加します。

ブラックリスト化の手順:
  1. /etc/modprobe.d/blacklist.confという設定ファイルを作成、または編集します。
  2. 自動でロードしたくないモジュール名を記述します。
記述例:
blacklist module_name

この設定を追加することで、システム起動時に該当モジュールが自動的にロードされなくなります。

まとめ

Linuxカーネルモジュールの管理は、システムの柔軟性を高め、
ハードウェアやソフトウェアの問題を解決するのに役立ちます。
lsmodでモジュールの状態を確認し、modprobeを使って依存関係を処理しつつモジュールを管理します。


また、insmodrmmodはより細かい制御が可能で、
depmodによってモジュール依存関係を最新に保つことが重要です。
設定ファイルを使って、モジュールの自動ロードやブラックリストの設定も管理できます。

    目次