名前
modprobe.d - modprobe 用の設定ディレクトリ概要
/lib/modprobe.d/*.conf /usr/local/lib/modprobe.d/*.conf /run/modprobe.d/*.conf /etc/modprobe.d/*.conf説明
モジュールには依存関係があるので、 modprobe コマンドは、複数のモジュールを追加したり、取り外したりすることがありますが、そのため、 そうした個々のモジュールにどんなオプションを使うべきかを指定する方法が必要になります。 /etc/modprobe.d ディレクトリの直下にあるファイルで、.conf という拡張子で終わるもののすべてが、必要に応じて、そうしたオプションを指定しています。 そうしたファイルは、使いやすいエイリアス、 すなわちモジュールの別名を作るためにも使用することができます。 また、そうしたファイルによって、(二つ以上のモジュールを組み込むといった) 特別な要求を持つモジュールのために、標準の modprobe の動作を全面的に変更することもできます。 モジュール名やエイリアス名では (後者の場合も、ほかのモジュール名と同様に)、- や _ を名前の一部に使うことができます。アンダースコアへの変換が自動的に行われるので、 モジュールコマンドのすべてにおいて、どちらを使っても同じであることに留意してください。 modprobe.d の下にあるファイルの書式は単純です。1 行 1 コマンドで、空行や '#' で始まる行は無視されます (後者はコメントを付けるのに使えます)。 行末に 1 個の '\' があると、その行は次の行に続くことになります。 これを使うと、ファイルの見かけがちょっとよくなります。コマンド
alias wildcard modulenameこのコマンドを使えば、モジュールに別名を付けることができます。たとえば、"alias
my-mod really_long_modulename"
と指定すると、"modprobe
really_long_modulename" の代わりに
"modprobe my-mod"
を使うことができます。シェル式のワイルドカードも使用できるので、
"alias my-mod* really_long_modulename"
と指定すれば、 "modprobe
my-mod-something"
でも同じ効果があります。
ほかのエイリアスに対するエイリアスは作れませんが
(そんなことをしたら、わけが分からなくなります)、
エイリアスにもオプションを指定することはできます。その場合は、
ほかにもオプションがあれば、そこに追加されることになるわけです。
(訳注:
このオプションは、
modprobe(8) の「書式」で
module parameter
と言われているもののことで、そうしたオプションを、実モジュールに対してだけでなく、
エイリアスに対しても、コマンドラインや、下記の
options
コマンドで指定できるということ。
alias
コマンド中でエイリアスにオプションまで指定できるというわけではありません。)
気をつけていただきたいのですが、
モジュールは、自前のエイリアスを内蔵していることもあり、
modinfo
を使えば、それを見ることができます。
そうしたエイリアスは
(訳注:
モジュールを特定するとき)
最後の手段として利用されます
(すなわち、指定された名前の実モジュールがなく、その名前に対応する
install, remove, alias
コマンドも設定ファイル中にない場合)。
blacklist modulename
モジュールは、自前のエイリアスを内蔵していることがあります。たいていの場合、
そうしたエイリアスは、そのモジュールがサポートしているデバイスを表していて、
"pci:123..."
といったものです。こうした「内蔵」エイリアスも、通常の
"alias"
キーワードによって置き換えることができますが、
二つ以上のモジュールが、どちらも同じデバイスをサポートしていたり
(訳注:
すなわち、同じ名前の内蔵エイリアスを持っていたり)、
あるモジュールが、実際にはサポートしていないデバイスをサポートしていると、
無効な主張をしていたりすることもあります。そうした場合に
blacklist
キーワードを使うと、そのモジュールの内蔵エイリアスをすべて無視せよと指示することになります。
install modulename command...
このコマンドは、modprobe
に対して、いつもどおりカーネルにモジュールを組み込む代わりに、
指定されたコマンドを実行するように指示します。
指定するコマンドには任意のシェルコマンドが使えるので、
どのような複雑な処理を望もうと、それを実行することができます。たとえば、
モジュール "fred"
は、モジュール "barney"
がすでにインストールされているときの方が、うまく動作するとします
(しかし、前者は後者に依存しているわけではないので、
modprobe
は後者を自動的にロードしようとはしません)。そういう場合は、"install
fred /sbin/modprobe barney; /sbin/modprobe --ignore-install fred"
と、設定ファイルに書いておけばよいのです。そうすれば、
希望する動作が行われることになります。
--ignore-install
に注意してください。これは、二番目の
modprobe
が、ほかならぬこの
install
コマンドを繰り返し実行しないようにしているのです。
以下の remove
の項も参照してください。
このコマンドは、モジュールに補助的な依存モジュールを提供するという課題に対する一つの解決策ですが、
長期的に見て、将来もそうである保証はありません。
それどころか、このコマンドは、将来のリリースのある時点で、
いずれ廃棄されるだろうとか、非推奨であるとかの警告に置き換えることが予定されています。
このコマンドを使用すると、mkinitrd
のようなディストリビューション固有のユーティリティが、
依存するモジュールを自動的に判断しようとするとき、作業が複雑になるのです
(なぜなら、現状では、そうしたユーティリティは、
install
コマンドがやっていそうなことを、何らかの方法で解読しなければならないからです)。
完璧な世界でなら、このコマンドを使わないでも、モジュールは、
依存関係の情報を漏れなく提供することでしょう。実際、ゆるやかな依存関係のサポートを
Linux
カーネルの内部で実装しようとする作業が、現在進行しています。
このコマンド中で、"$CMDLINE_OPTS"
という文字列を使用すると、
modprobe
のコマンドラインでオプションを指定した場合に、そのオプションが
"$CMDLINE_OPTS"
に置き換わります
(訳注:
このオプションは、上の
alias
コマンドの訳注でも述べましたが、
modprobe(8) の「書式」で module
parameter
と言われているもののことです)。この動作は重宝なことがあります。
なぜなら、ユーザとしては、"modprobe
fred opt=1"
とコマンドライン上で指定したら、
設定ファイル中に
install
コマンドが存在する場合でも、モジュール
fred に "opt=1"
という引数が渡ってほしいと思うからです。そこで、上記の例でこれを使うと、
"install fred /sbin/modprobe barney; /sbin/modprobe --ignore-install fred
$CMDLINE_OPTS" になります。
options modulename option...
このコマンドを使えば、モジュール
modulename
(エイリアスであっても構いません)
がカーネルに組み込まれるたびに、それにオプションを付け加えることができます。
組み込みは、( modprobe
modulename を使って)
直接行われるか、
組み込もうとするモジュールがこのモジュールに依存しているために行われるかを問いません。
すべてのオプションは、まとめて付け加えられます。そうしたオプションには、
モジュールそのものやエイリアスに対して
options
コマンドで指定したものあれば、コマンドラインで指定したものもあるわけです。
remove modulename command...
これは上記の
install
コマンドに似ていますが、"modprobe
-r"
が実行されるときに、呼び出される点が異なっています。
softdep modulename pre: modules... post: modules...
softdep
コマンドを使えば、
ゆるやかな、すなわち使用・不使用が任意なモジュールの依存関係を指定できます。
modulename
というモジュールは、
そうした使用・不使用が任意なモジュールをインストールしないでも、使うことができます。
でも、たいていの場合、何らかの機能が使えないことになります。
たとえば、ある記憶装置の
HBA (ホストバスアダプタ)
用のドライバは、
管理機能を使うためには、別のモジュールをロードする必要があるかもしれません。
前依存モジュールや後依存モジュール
(訳注: 上記 softdep
の書式の pre: や post: に続く
modules...) は、modulename
という引数によって指定されたメインモジュールの前後に、
modprobe が
順番に組み込み
(あるいは、取り外し)
を試みるほかのモジュールの名前やエイリアスのリストです。
用例: "softdep c pre: a b post: d e"
という設定がなされているとします。このとき、"modprobe
c"
を実行するのは、この
softdep
コマンドを設定せずに、"modprobe
--all a b c d e"
を行うのと同じことです。なお、--use-blacklist
のようなフラグは、指定されたすべてのモジュールに適用されますが、
モジュールパラメータが適用されるのは、モジュール
c だけです。
注意: 同じ modulename
引数を取る install や remove
コマンドが設定ファイル中にあっても、
softdep
が優先されます。
互換性
kmod の将来のバージョンでは、上で述べたように、 install の使用は避けるべきだとの強い警告が出ることになるでしょう。 そうなるのは、カーネル中でのゆるやかな依存関係に対するサポートが完成したときのことです。 そうしたサポートでは、ゆるやかな依存関係の情報をモジュール内で直接提供することによって、 kmod ユーティリティ内での softdep による現在のサポートを補完することになるでしょう。著作権
このマニュアルページの最初の版は、"Copyright 2004, Rusty Russell, IBM Corporation" でした。現在では、Jon Masters ほか数名によって保守されています。関連項目
modprobe(8), modules.dep(5)著者
Jon Masters <[email protected]>開発者
Robby Workman <[email protected]>
開発者
Lucas De Marchi <[email protected]>
開発者
2021/01/29 | kmod |