.\" Copyright (c) 1994, 1995 Jacques Gelinas (jacques@solucorp.qc.ca) .\" Copyright (c) 1995, 1999 Bjorn Ekwall (bj0rn@blox.se) .\" This program is distributed according to the Gnu General Public License. .\" See the file COPYING in the base distribution directory .\" .\" Japanese Version Copyright (c) 2000 NAKANO Takeo all rights reserved. .\" Translated Thu 12 Oct 2000 by NAKANO Takeo .\" Updated Sun 28 Jan 2001 by Kentaro Shirakata .\" Updated Tue 4 Apr 2001 by Kentaro Shirakata .\" Updated Fri 30 Nov 2001 by Kentaro Shirakata .\" Updated Mon 18 Mar 2002 by Kentaro Shirakata .\" Updated Sun 23 Feb 2003 by Kentaro Shirakata .\" .TH MODPROBE 8 "February 4, 2002" Linux "Linux Module Support" .SH 名前 modprobe \- ローダブルモジュールの高レベル管理 .SH 書式 .hy 0 .B modprobe [\-adnqv]\ [\-C\ \fIconfig\fR]\ module\ [symbol=value\ ...] .br .B modprobe [\-adnqv] [\-C\ \fIconfig\fR] [\-t\ \fItype\fR] pattern .br .B modprobe \-l [\-C\ \fIconfig\fR] [\-t\ \fItype\fR] pattern .br .B modprobe \-c [\-C\ \fIconfig\fR] .br .B modprobe \-r [\-dnv] [\-C\ \fIconfig\fR] [module ...] .br .B modprobe -Vh .SH このマニュアルについて このマニュアルは、Linux Kernel 2.4 の時代に使われていた modutils パッケージの \fBmodprobe\fP の説明で、古いものです。現在ではたいていの場合、 kmod パッケージの \fBmodprobe\fP が使われています。(2022/12/02, Linux JM Project) .SH オプション .TP .BR \-a ", " \-\-all 最初にロードに成功した後に停止するのではなく、 マッチしたモジュールを\fBすべて\fPロードする。 .TP .BR \-c ", " \-\-showconfig 現在用いられている設定を表示する。 .TP \fB\-C\fR,\ \fB\-\-config\fR\ \fIconfig\fR 設定ファイルを \fI/etc/modules.conf\fR ではなく \fIconfig\fR にする。 .RI ( /etc/modules.conf はなくてもよい)。 環境変数 \fBMODULECONF\fR でも設定ファイルを /etc/modules.conf (あるいは推奨しないが \fI/etc/conf.modules\fR) から変更できる。 .TP 環境変数 .B UNAME_MACHINE をセットすると、modutils は uname() システムコールの machine フィールドの 代わりにこの変数の値を用いる。 これは主に 32 ビットユーザー空間で 64 ビットモジュールをコンパイルする (またはその逆)場合に用いる。 現在の modutils はモジュールに対する完全なクロスビルドモードに対応しておらず、 ホストアーキテクチャの 32 ビット版と 64 ビット版を選択できるだけである。 .TP .BR \-d ", " \-\-debug モジュールのスタックの内部表現に関する情報を表示する。 .TP .BR \-h ", " \-\-help オプションの一覧を表示して直ちに終了する。 .TP .BR \-k ", " \-\-autoclean ロード済みのモジュールに "autoclean" を設定する。 カーネルが .B modprobe に足りない機能をモジュールとして提供するよう依頼するときに用いられる。 \fB\-k\fR オプションを指定すると、自動的に \fB\-q\fR オプションも有効になる。 これらのオプションは自動的に \fBinsmod\fR に送られる。 .TP .BR \-l ", " \-\-list マッチするモジュールをリストする。 .TP .BR \-n ", " \-\-show 実際には動作を行わず、何が行われるかを表示する。 .TP .BR \-q ", " \-\-quiet \fBinsmod\fR がモジュールのインストールに失敗しても報告しない。 黙って他の可能性を試しながら通常のように継続する。 このオプションは自動的に \fBinsmod\fR に送られる。 .TP .BR \-r ", " \-\-remove コマンドラインでモジュールが指定されればモジュール (のスタック) を削除する。 されなければ autoclean を実行する。 .TP .BR \-s ", " \-\-syslog 標準エラー出力にではなく syslog を経由してレポートする。 このオプションは自動的に \fBinsmod\fR に送られる。 .TP \fB\-t\fR\ \fImoduletype\fR;\ \fB\-\-type\fR\ \fImoduletype\fR 指定したタイプのモジュールだけを扱う。 modprobe は、ディレクトリパスに "/\fImoduletype\fR/" をこの形で含むモジュールだけしか対象にしない。 \fImoduletype\fR にはディレクトリを複数の階層で指定しても良い。例えば "\fB\-t\fR\ \fIdrivers/net\fR" とすれば、 \fIxxx/drivers/net/\fR およびそのサブディレクトリにあるモジュールだけを 対象にする。 .TP .BR \-v ", " \-\-verbose すべてのコマンドを、実行される通りに表示する。 .TP .BR "\-V, \-\-version" \fBmodprobe\fR のバージョンを表示する。 .TP .B 注意: モジュール名にはパス ('/') や末尾の '.o' を含めてはならない。 例えば、 'slip' は .B modprobe に対する正当なモジュール名だが、 '/lib/modules/2.2.19/net/slip' や 'slip.o' は不正である。 これはコマンドラインと設定ファイルの両方に適用されるルールである。 .SH 説明 \fBmodprobe\fR と \fBdepmod\fRは、Linux のモジュール化されたカーネルを、 あらゆるユーザー、管理者、ディストリビューションの作成者にとって より管理しやすいものにするために作成された。 .PP \fBmodprobe\fR は Makefile に似た形式で依存関係を記述したファイルを用いる。 これは \fBdepmod\fR によって作成されるもので、 あらかじめ定められたディレクトリツリーに置かれたモジュールのセットから、 関連するファイル (群) を自動的にロードするためのものである。 .PP \fBmodprobe\fRはモジュールのセット (単一のモジュールであることも、 依存関係にあるモジュールのスタックであることもある) のロードに用いられる。 また、特定のタグがつけられたすべてのモジュールをロードするのにも用いられる。 .PP \fBmodprobe\fRはモジュールスタックに必要とされるベースモジュールを、 依存関係を記述したファイル \fImodules.dep\fR の記述にしたがって すべてロードする。これらのモジュールのどれかをロードできないと、 現在のセッションでロードされたモジュールスタックの全体が 自動的にアンロードされることになる。 .PP \fBmodprobe\fRがモジュールをロードするやりかたは 2 種類ある。 ひとつめ (プローブモード) は、 (\fIpattern\fR で定義された) リストからモジュールをロードしようとする。 モジュールがひとつロードできると、\fBmodprobe\fRはただちに停止する。 これはイーサネットドライバのリストから モジュールをひとつロードするような場合に利用できるだろう。 .PP もうひとつの方では、\fBmodprobe\fRはリストの\fBすべての\fPモジュールを ロードする。以下の「\fB例\fP」の記述を参照のこと。 .PP \fB\-r\fRオプションをつけると、 modprobe は自動的にモジュールのスタックを アンロードする("\fBrmmod \-r\fR"と同様)。 "\fBmodprobe \-r\fR"とだけすると、 使われていない autoload されたモジュールを削除すると同時に、 設定ファイル \fI/etc/modules.conf\fR の記述にしたがって 削除の前処理・後処理用のコマンドを実行する。 .PP \fB\-l\fR オプションと\fB\-t\fRオプションを同時に指定すると、 利用可能なすべてのモジュールのうち、特定のタイプのものだけが表示される。 .PP \fB\-c\fRオプションを指定すると、 現在用いられている設定が表示される (デフォルト + 設定ファイル)。 .SH 設定 \fBmodprobe\fR(と\fBdepmod\fR)の動作は、設定ファイル \fI/etc/modules.conf\fRによって変更できる (このファイルはなくてもよい)。 .PP このファイルに記述できる内容の詳細や、\fBdepmod\fRと \fBmodprobe\fRが用いるデフォルトの設定に関しては \fBmodules.conf\fR(5)を参照のこと。 .PP モジュールがカーネルによって "autoload" された場合は、 削除の前処理・後処理のコマンドは\fB実行されない\fPことに注意。 将来サポートされる予定の「永続型モジュール保存 (persistent module storage)」 に期待して欲しい。 .\"NAKANO 訳語? .PP 削除の前後処理の機能を用いたい場合は、 kerneld の autoload を使わないようにして、 以下のような行を \fBcrontab\fR に書きこむ必要がある (これは kmod システムによっても用いられる)。 以下では autoclean を 2 分おきに行っている。 .sp .nf */2 * * * * test \-f /proc/modules && /sbin/modprobe \-r .fi .SH 動作ルール \fBmodprobe\fRは、現在のカーネルリリース向けにコンパイルされたモジュールを 含むディレクトリをまず最初に見る。 そこにモジュールがなければ、\fBmodprobe\fRはカーネルバージョンに共通の ディレクトリ (2.0, 2.2 など) を見る。 そこにもモジュールがなければ、 デフォルトのリリース以外のモジュールを含むディレクトリを見る。 .PP 新しい Linux をインストールしたときは、モジュールをそのカーネルのリリース (とバージョン) に対応したディレクトリに移動すべきである。 そしてこのディレクトリから「デフォルト」のディレクトリに シンボリックリンクをはるようにする。 .PP 新しいカーネルをコンパイルして"\fBmake modules_install\fR" コマンドを実行すると、新しいディレクトリは作成するが、 「デフォルト」のリンクは変更しない。 .PP カーネルの配布に含まれないモジュールを入手したら、 それは \fI/lib/modules\fR 以下のバージョンには依存しないディレクトリに 配置するとよい。 .PP 以上がデフォルトの動作であるが、これは \fI/etc/modules.conf\fR の記述によって変更できる。 .SH 例 .TP .B modprobe \-t net "net" という名前のディレクトリにあるモジュールのどれかひとつをロードする。 どれかのモジュールのロードに成功するまで、各モジュールがひとつづつ試みられる。 .TP .B modprobe \-a \-t boot "boot"という名前のディレクトリにあるすべてのモジュールがロードされる。 .TP .B modprobe slip これを実行すると、 s1hc.o というモジュールがまだロードされていなければロードしようとする。 slip モジュールには s1hc モジュールの機能が必要だからである。 この依存関係は、\fBdepmod\fRによって (これ以前に) 自動的に生成された \fImodules.dep\fR というファイルに記述されている。 .TP .B modprobe \-r slip slip モジュールをアンロードする。 s1hc モジュールも自動的にアンロードする (ただし ppp のような他のモジュールによって利用されていない場合)。 .SH ファイル .nf .IR /etc/modules.conf ( /etc/conf.modules も使えるが推奨しない) .IR /lib/modules/*/modules.dep , .I /lib/modules/* .fi .SH 関連項目 .BR depmod "(8), " lsmod "(8), " kerneld "(8), " ksyms "(8), " rmmod (8) .SH セーフモード 実効 UID が 実 UID と異なる場合、 \fBmodprobe\fR は入力を非常に慎重に扱う。 最後のパラメータは(たとえ'-'で始まっていても)モジュール名として扱われる。 一つのモジュール名だけが指定でき、"変数=値"の形のオプション指定は禁止される。 モジュール名は常に文字列として扱われ、セーフモードではメタ展開は行われない。 しかし、設定ファイルから読み込んだデータはメタ展開を行う。 .PP modprobe がカーネルから起動された場合、実効 UID は実 UID と異なるかもしれない。 これはカーネルが 2.4.0-test11 以上の時に真となる。 理想的な世界では \fBmodprobe\fR は カーネルが正しいパラメータだけを modprobe に渡すと信用することが出来た。 しかし高レベルカーネルコードは未検証のパラメータを直接ユーザーから modprobe に渡すので、 少なくとも一つのローカル root exploit が発生する。 それで、もはや modprobe はカーネルからの入力を信用しない。 .PP .ne 8 \fBmodprobe\fR は環境変数が以下の文字列しか含まない場合、 自動的にセーフモードとなる。 .nf HOME=/ TERM=linux PATH=/sbin:/usr/sbin:/bin:/usr/bin .fi これは昔のカーネルのように実 UID と実効 UID が同じであっても、 カーネル 2.2 から 2.4.0-test11 までの カーネルから modprobe が起動されたことを検出する。 .SH ログ記録コマンド \fI/var/log/ksymoops\fR ディレクトリが存在し、\fBmodprobe\fR がモジュールを 読み込み・削除できるようなオプションを付けて起動されていた場合、 modprobe は実行したコマンドと返り値を \fI/var/log/ksymoops/`date\ +%Y%m%d.log`\fR のファイル名で記録する。 この自動ログ記録を停止するオプションはない。 もしこのような記録をさせたくなければ、 \fI/var/log/ksymoops\fR ディレクトリを作らなければよい。 もしディレクトリを作るなら、root が所有してモードは 644 か 600 にし、 毎日ぐらいのペースで \fBinsmod_ksymoops_clean\fR を実行するべきである。 .SH 必要なユーティリティ .BR depmod "(8), " insmod (8) .SH 注意 \fBmodprobe\fR に与えるパターンが (シェルによって解釈されずに) 意図通りに解釈されるようにするには、 パターンにエスケープが必要となることが多いだろう。 .SH バグ \fBmodprobe\fR\ [ \fB\-V\fR\ |\ \fB\-\-version\fR ] は直ちに終了するべきである。 しかしながら、現在はバージョン情報を表示した後、 何もオプションが指定されなかったかのように振舞う。 .SH 著者 Jacques Gelinas (jack@solucorp.qc.ca) .br Bjorn Ekwall (bj0rn@blox.se)