Linux カーネルモジュールは、 他のモジュールが利用できるようなサービス ("シンボル" と呼ばれる) を提供することができます (コード内において
EXPORT_SYMBOL バリアントを用いて行われます)。 2 つめのモジュールがこのシンボルを利用していたら、 2 つめのモジュールは、 明らかに
1 つめのモジュールに依存していることになります。 このような依存関係は、 非常に複雑になることがあります。
depmod は /lib/modules/version 以下にあるモジュールを読み込んで、 何というシンボルをエクスポートしているか、
何というシンボルを必要としているかを確認した上で、 モジュールの依存関係の一覧を生成します。 デフォルトでは、 その一覧を modules.dep
に書き込みます。 またバイナリハッシュ形式として modules.dep.bin を同一ディレクトリ内に書き込みます。
コマンドラインからファイル名が指定された場合は、 そのモジュールのみが検査されます (モジュールがすべて一覧表示されていなければ、
この機能はほぼ役に立ちません)。 depmod はまた、 modules.symbols という名のファイル内に、
モジュールによって提供されるシンボルの一覧を生成します。 そのバイナリハッシュ形式は、 modules.symbols.bin に生成します。
モジュールが特別なデバイス名 (devname) を提供するものであって、 (systemd-tmpfiles などのユーティリティーによって)
システム起動時に /dev を有効化する必要がある場合、 depmod は modules.devname というファイルを出力します。
version が指定された場合は、 現在のカーネルバージョン (uname -r によって返される) ではなく、
指定されたカーネルバージョンのディレクトリを用います。
オプション
-a, --all
-
すべてのモジュールを調査します。 このオプションはデフォルトでは、 コマンドラインからファイル名を何も指定しなかった場合に利用できます。
-A, --quick
-
このオプションを指定すると、 処理を行う前に、 modules.dep ファイルよりも、 モジュールが新しいかどうかがチェックされます。
新しくなければ、 ファイルを再生成することなく、 すぐに終了します。
-b basedir, --basedir basedir
-
指定するモジュールが、 その時点で (通常の) ディレクトリ /lib/modules/version にないが、ステージング領域にある場合に、
ディレクトリ名の先頭につく basedir を指定することができます。 この basedir は、 出力先である modules.dep
ファイルでは取り除かれます。 したがって、 すぐに通常のディレクトリに移動させることができます。 このオプションを用いるのは、
ディストリビューションベンダーであり、 depmod を後で実行することなく、 メタデータファイルを事前生成したい場合です。
-C, --config file or directory
-
このオプションは、 デフォルトの設定ディレクトリ /etc/depmod.d/ を上書きします。
-e, --errsyms
-
-F と合わせて用いた場合に、 このオプションは、 モジュールが必要としているシンボルの中で、
他のモジュールやカーネルからは提供されていないものを表示します。 モジュールによってシンボルが提供されていない場合には、
カーネルから提供されているものとして扱うのが普通です (理想的には、 そうであるべきです)。 ただし、
追加してアップデートしたサードパーティー製のドライバーが、 正しくインストールされていなかったり、 適切にビルドされていなかったりした場合に、
この仮定は成り立たなくなります。
-E, --symvers
-
-e と合わせて用いた場合に、 このオプションは、 モジュールが提供するシンボルバージョンの中で、 Module.symvers
を通じてカーネルが提供するシンボルバージョンに一致しないものを表示します。 このオプションは -F とともに用いることはできません。
-F, --filesyms System.map
-
カーネルのビルド時に System.map が提供されるので、 この -e オプションを使えば、 未解決のシンボルを表示できます。
このオプションは -E とともに用いることはできません。
-h, --help
-
ヘルプメッセージを表示して終了します。
-n, --show, --dry-run
-
これを指定すると、 生成結果である modules.dep やその他のマップファイルを、 モジュールディレクトリに書き込まずに、
標準出力へ書き出します。
-P
-
アーキテクチャーによっては、 シンボルの先頭に無関係なプレフィックスがつけられる場合があります。 このオプションは、 無視したいプレフィックス
(たとえば '_') を指定します。
-v, --verbose
-
depmod の詳細 (verbose) モードでは、 各モジュールが依存するシンボルすべてと、 そのシンボルを提供するモジュールのファイル名を
(stdout に) 出力します。
-V, --version
-
プログラムのバージョンを表示して終了します。 古いカーネル上において実行する場合には、 以降の注意事項を参照してください。
-w
-
依存関係、エイリアス、シンボルバージョンなどに重複があった場合に警告します。
著作権
この man ページの元々の著作権表記は Copyright 2002, Rusty Russell, IBM Corporation です。 一部は
Copyright Jon Masters, and others です。
関連項目
depmod.d(5), modprobe(8), modules.dep(5)
著者
Jon Masters <jcm@jonmasters.org>
-
開発者
Robby Workman <rworkman@slackware.com>
-
開発者
Lucas De Marchi <lucas.de.marchi@gmail.com>
-
開発者
Index
- 名前
-
- 書式
-
- 説明
-
- オプション
-
- 著作権
-
- 関連項目
-
- 著者
-
This document was created by
man2html,
using the manual pages.
Time: 07:09:00 GMT, June 24, 2022