【Linux】modules.depファイルとは?役割や確認方法をわかりやすく解説

Linux

どーも!marusukeです!

この記事では以下の内容をわかりやすく解説します!

  • modules.depでできること
  • modules.depの確認方法
  • modules.depに関連するコマンド

modules.depとは?

modules.dep は、Linuxカーネルモジュールの依存関係を記録したファイルです。

Linuxでは、機能ごとに「カーネルモジュール」と呼ばれる部品を必要に応じて読み込みます。

そのとき、

「どのモジュールが、どのモジュールを必要としているか」

を管理しているのが modules.dep です。

保存場所

/lib/modules/$(uname -r)/modules.dep

$(uname -r) は現在利用中のカーネルバージョンを表示します。

modules.depの場所

/lib/modules/カーネルバージョン/modules.dep

このファイルを利用することで、Linuxは必要なモジュールを自動的に読み込みます。

特に modprobe コマンドは、modules.dep を参照して依存モジュールもまとめてロードします。

例えばこんな感じ

ネットワークドライバを読み込む際、

  • 必要な別モジュール
  • 共通ライブラリ的なモジュール

も自動で読み込まれます。

modprobeコマンドは modules.dep を見ながら必要なモジュールを自動で読み込みます。(依存関係を解決しながらロードするということです)

カーネルモジュールとは?

カーネルモジュールとは、Linuxカーネルに機能を追加するための部品です。

例えば以下のような機能があります。

  • USB機器の制御
  • ネットワークドライバ
  • ファイルシステム対応
  • GPUドライバ

必要なときだけ読み込めるため、メモリ使用量を抑えられるメリットがあります。


modules.depの例

$ cat /lib/modules/$(uname -r)/modules.dep | head

kernel/drivers/net/mii.ko:
kernel/drivers/net/ethernet/intel/e1000/e1000.ko: kernel/drivers/net/mii.ko
kernel/drivers/usb/storage/usb-storage.ko: kernel/drivers/usb/common/usb-common.ko

出力結果の見方

以下の行に注目してください。

kernel/drivers/net/ethernet/intel/e1000/e1000.ko:
kernel/drivers/net/mii.ko

これは、

e1000.ko モジュールが mii.ko に依存している

ことを意味します。

つまり、e1000.ko を読み込む前に mii.ko が必要になります。


modules.depを更新する方法

新しいカーネルモジュールを追加した場合は、depmod コマンドで依存関係を再生成できます。

$ sudo depmod -a

このコマンドを実行すると、modules.dep が最新状態に更新されます。

注意

  • modules.dep手動編集は非推奨a
  • 通常は depmod が自動生成する

誤って編集すると、モジュールの自動読み込みに失敗する場合があります。

modules.depに関連するコマンド

コマンド説明
modprobe依存関係を考慮してモジュールを読み込む
insmodモジュールを直接読み込む(依存関係は考慮しない)
lsmod現在読み込まれているモジュール一覧を表示する
depmodmodules.depを再生成する

modules.depを確認するときの注意点

  • カーネルバージョンごとに別ファイルが存在する
  • 手動編集は基本的に非推奨
  • 通常は depmod が自動生成する

Linuxのモジュール管理を理解すると、

  • ドライバトラブル
  • カーネル関連の問題調査

にも役立ちます!

まとめ

  • modules.dep はモジュール依存関係を管理するファイル
  • modprobe が参照して自動読み込みを行う
  • 更新は depmod -a で実施する
  • 手動編集は非推奨

以上です!
ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました