書式
depmod [-b basedir] [-e]
[-E Module.symvers]
[-F System.map] [-n] [-v] [-A]
[-P prefix] [-w] [version]
depmod [-e]
[-E Module.symvers]
[-F System.map] [-n] [-v]
[-P prefix] [-w] [version]
[filename...]
説明
Linux
のカーネルモジュールは、(「シンボル」と呼ばれる)
サービスを
(コード中で EXPORT_SYMBOL
バリアントの 1
つを使用して)
ほかのモジュールが使えるように提供することができます。
あるモジュールがそうしたシンボルを使用している場合、
そのモジュールがシンボルを提供する側のモジュールに依存していることは明白です。
こうした依存関係は、かなり複雑になることがあります。
depmod は、/lib/modules/version
以下にある各モジュールを読み込み、
それがどんなシンボルをエクスポートし、どんなシンボルを必要としているかを特定して、
モジュールの依存関係のリストを作成します。デフォルトでは、このリストは、
上記ディレクトリに置かれる
modules.dep
と、それをバイナリハッシュ化した
modules.dep.bin
という名前のファイルに書き込まれます。
なお、ファイル名をコマンドラインで指定した場合は、そうしたモジュールのみが調べられます
(すべてのモジュールを指定しないかぎり、これが役に立つことはめったにありません)。
depmod
はまた、モジュールが提供するシンボルのリストを作成し、modules.symbols
というファイルと、そのバイナリハッシュ版の
modules.symbols.bin
に書き込みます。最後に、depmod
は、モジュールがスペシャルデバイス名を供給している場合は、modules.devname
という名前のファイルを出力します。そうしたスペシャルデバイス名は、普通ブート時に
(systemd-tmpfiles
のようなユーティリティによって)
/dev
ディレクトリに配置されます。
引数に version
を指定した場合は、現在稼働中のカーネルバージョン
(uname -r
で返ってくるもの)
ではなく、指定したカーネルバージョンのモジュールディレクトリが使用されます。
オプション
-a, --all
すべてのモジュールを調べます。このオプションは、
コマンドラインでファイル名を一つも指定しなかった場合、デフォルトで有効になります。
-A, --quick
このオプションを指定すると、処理を行う前にモジュール群にざっと目を通して、
modules.dep
ファイルより新しいモジュールがあるかどうかを調べます。もしなければ、
modules.dep
などのファイルを作り直さず、何のメッセージも出さずに終了します。
-b basedir, --basedir basedir
対象となるモジュール群が、現在、(標準の)
ディレクトリ /lib/modules/version
になく、準備領域 (a staging
area) にある場合、
準備領域で標準ディレクトリ名に先行するディレクトリ名
basedir
を指定することができます。この
basename は、作成される
modules.dep
ファイルでは取り除かれるので、作成されたファイルは、
そのまま標準の場所に移動することができます。あなたがディストリビューターであり、
depmod
を後であらためて実行しないでも済むように、
一連のメタデータファイルを前もって作っておく必要があるならば、
このオプションを使用するとよいでしょう。
-C, --config file or directory
/etc/depmod.d
にあるデフォルトの設定ディレクトリの代わりに、
このオプションで指定するものを使用します。
-e, --errsyms
このオプションは、-F
オプションと一緒に使用した場合、
あるモジュールが必要としているシンボルに、
ほかのモジュールやカーネルによって供給されていないものがあると、
そのシンボルを報告します。通常、モジュールによって提供されていないシンボルがあれば、
それはカーネルによって提供されるものと見なされます
(完璧な世界でなら、そうなっているはずです)。しかし、その想定が外れることもあります。
特に、サードパーティ製のドライバを後日アップデートしたとき、
それがきちんとインストールされていなかったり、正しくビルドされていなかったりすると、
そうなります。
-E, --symvers Module.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
は、各モジュールが依存しているすべてのシンボルと、
そのシンボルを提供しているモジュールのファイル名を
(標準出力に)
書き出します。
-V, --version
プログラムのバージョンを表示して終了します。
-w
依存関係、エイリアス、シンボルバージョンなどに重複がある場合に警告します。
著作権
このマニュアルページの最初の版は、"Copyright
2002, Rusty Russell, IBM Corporation"
でした。現在では、"Copyright
Jon Masters, and others"
の部分もあります。
関連項目
著者
Jon Masters <jcm@jonmasters.org>
開発者
Robby Workman <rworkman@slackware.com>
開発者
Lucas De Marchi <lucas.de.marchi@gmail.com>
開発者