2012-01-02 18 views

答えて

15

depmodは直接的な依存関係を計算するだけでなく、ハードウェア識別子とそれを処理するモジュール間のマッピングも作成します。これは、検出されたハードウェアに対してロードする正しいモジュールを見つけるために使用されます。

なぜuserspaceのようなデマンドロードをしないのかについては、カーネルリンカが意図的にファイルシステムにアクセスできないためです。カーネルの哲学は、ファイルシステムのレイアウトは完全にユーザー空間に依存しているので、foo.ko/lib/modules/3.0.1/drivers/somesubsys/foo.koにあるという保証はありません。そのため、カーネルはユーザ空間ユーティリティ(depmodやmodprobeなど)を使ってモジュールの生データをロードする必要がある順に渡します。ユーザー空間がこのジョブで失敗すると、単にエラーが返され、ユーザー空間が混乱に対処できます。

+1

ですが、modprobeはモジュール内の情報から依存関係を解決し、対応する依存モジュールを最初に調べることができますか? – PypeBros

+3

depmodはmodprobeの使用のためにこの依存情報のキャッシュを構築します。実際には、この情報のためにすべてのモジュールをスキャンするのにはかなりの時間がかかるので、modprobeを呼び出すたびにそれをしたくない – bdonlan

関連する問題