どーも!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 | 現在読み込まれているモジュール一覧を表示する |
depmod | modules.depを再生成する |
modules.depを確認するときの注意点
- カーネルバージョンごとに別ファイルが存在する
- 手動編集は基本的に非推奨
- 通常は
depmodが自動生成する
Linuxのモジュール管理を理解すると、
- ドライバトラブル
- カーネル関連の問題調査
にも役立ちます!
まとめ
modules.depはモジュール依存関係を管理するファイルmodprobeが参照して自動読み込みを行う- 更新は
depmod -aで実施する - 手動編集は非推奨
以上です!
ここまで読んでいただきありがとうございました!

コメント