MODULES.CONF(5) MODULES.CONF(5)
名前
modules.conf - カーネルモジュールのロードに対する設定ファイル
説明
modprobe(8) (および depmod(8)) の動作は、設定ファイル /etc/modules.conf
によって変更できる (このファイルは無くてもよい)。
設定ファイルは行単位で解釈される。
全ての空行と、’#’ 文字以降の行末までは無視される。
行末が ’\’ になっている行は次の行に継続する。
残りは指定行 (directive) であり、すべて以下のフォーマットのいずれかに従
う:
[add] above module module_list
alias alias_name result
[add] below module module_list
define VARIABLE WORD
depfile=A_PATH
else
elseif EXPRESSION
endif
if EXPRESSION
include PATH_TO_CONFIG_FILE
insmod_opt=GENERIC_OPTIONS_TO_INSMOD
install module command ...
keep
[add] options module MODULE_SPECIFIC_OPTIONS
path=A_PATH
path[TAG]=A_PATH
generic_stringfile=A_PATH
pcimapfile=A_PATH
isapnpmapfile=A_PATH
usbmapfile=A_PATH
parportmapfile=A_PATH
ieee1394mapfile=A_PATH
pnpbiosmapfile=A_PATH
[add] probe name module_list
[add] probeall name module_list
prune filename
post-install module command ...
post-remove module command ...
pre-install module command ...
pre-remove module command ...
remove module command ...
persistdir directory_name
各 指定行に与える引数の解釈では、シェルのメタキャラクタが有効になる。す
なわち、ワイルドカードやコマンドのバッククォートといった、シェルでの 技
が利用できる。
path[misc]=/lib/modules/1.1.5?/local
path[net]=/lib/modules/‘uname -r‘/net
危 険: ユーザーが指定した入力にシェル展開を適用するのは大きなセキュリテ
ィ上のリスクがある。 modutils は信頼できるデータに対してのみシェルコ マ
ン ドのメタ展開を行う。基本的にこれは設定ファイルのデータのみを展開する
ことを意味する。 modutils では、ユーザーは modprobe を (自分自身の設 定
ファイルを指定して) root 権限で実行することはできない、と仮定している。
ユーザーからの入力を指定して modutils を root 権限で起動するプログラ ム
(カーネルを含む) は、正確に一つだけのユーザー入力パラメータを渡し、かつ
セーフモードに設定しないと、ローカルで root を奪取される危険がある。 セ
ーフモードの詳細については modprobe を参照のこと。
各指定は複数回繰り返してもよい。指定によっては、前に add を置くこともで
きる。これがないと、指定した module_list が以前の module_list を置き 換
えるが、これがあると module_list が以前の module_list に追加される。
記法 (SEMANTICS)
A_PATH は タ ー ゲ ッ ト へ の 完 全 な パ ス名である。 `uname -r` や
`kernelversion`. といったシェルのメタキャラクタを A_PATH に用いても よ
い。
こ れらの 2 つのコマンドは、 (modprobe や depmod のような) ユーティリテ
ィの内部でも、現在のカーネルのリリースとバージョン (それぞれ 2.2.3 や
2.2 など) を表すものとして認識されている。
WORD は空白文字以外からなるシーケンスである。もし ’ や " や ‘ が文字列
にあると、対応する ’, ", ‘ にマッチするまでの全ての文字 (空白文字も) が
そ の文字列に含まれることになる。全ての WORD は、その後メタキャラクタの
ルールにしたがって展開される。展開した結果が二つ以上のワードになった 場
合は、結果のうち最初のワードだけが用いられる。
EXPRESSION は以下のいずれかである。
WORD compare_op WORD
compare_op は ==, !=, <, <=, >=, > のいずれかである。両 WORD が
文字列として比較される。
-n WORD compare_op WORD
compare_op は ==, !=, <, <=, >=, > のいずれかである。両 WORD が
数値として比較される。
WORD WORD の展開に失敗するか、展開した結果が "0" (zero), "false", ""
(empty) のいずれかであれば、展開結果の値は FALSE となる。それ 以
外の場合は展開結果の値は TRUE となる。
-f FILENAME
FILENAME が存在するかどうかのテスト。
-k "autoclean" が有効になっているかどうか (すなわちカーネルから呼ば
れたかどうか) のテスト。
! EXPRESSION
式の否定も式である。
文法 (SYNTAX)
以下に有効な指定について説明する。
define VARIABLE WORD
putenv("VARIABLE=WORD") を実行する。この指定は変数の作成・変更の
いずれも行える。変数は環境に作られるので、現在のセッションで実行
される全てのコマンドから利用できる。
depfile=A_PATH
依存関係ファイルへのパス。これは depmod によっ て 作 成 さ れ 、
modprobe によってモジュールとその依存モジュールを探すために利用
される。通常はデフォルトの値を用いるべきである。以下を参照のこと
。
if EXPRESSION
式 EXPRESSION が TRUE と解釈されたら、 else, elseif, endif のい
ずれかにマッチするまでの全ての指定行が実行される。 FALSE と解 釈
されたら、それらの指定行は無視される。 if 行は、内部の最大値であ
る 20 までネストできる。
注意: path 指定行を条件式内部で処理することは避け て 欲 し い 。
modprobe には「賢い頭脳」が組み込まれているので、 path 指定行の
条件処理は、単に混乱を生むだけである。ほんとです。
else これより前での if または elseif 指定行での式の評価が FALSE で あ
り 、 else があれば、ここまでの指定行は無視され、これ以降 endif
までの指定行が処理される。
elseif EXPRESSION
これより前に置かれた if または elseif での式評価の結果 が FALSE
で 、 こ こ での式評価の結果が TRUE であれば、次に elseif, else,
endif のいずれかが現れるまでの指定行が処理される。
endif これは設定ファイルにおける条件処理を制御する if, elseif, else の
チェインを終了させる。
if EXPRESSION
any config lines
elseif EXPRESSION
any config lines
else
any config lines
endif
else と elseif は無くてもよい。
include PATH_TO_CONFIG_FILE
別々のプラットフォームや設定を一つの設定ファイルで扱うのは、非常
に複雑になる場合がある。 if の条件によって include 指定行を用 い
れば、この取り扱いは簡単になる。
insmod_opt=GENERIC_OPTIONS_TO_INSMOD
insmod に (他では指定できないような) 特殊なオプションが必要な場
合は、このオプションで起動の度にそれらを追加することが可能である
。特殊な状況を除いて、通常は insmod の標準的なデフォルトのオプシ
ョンを変更する必要はない。
keep このワードが path の記述を含む行の前に置かれた場合は、デフォルト
のパスのセットは保存され、それに追加される。これがない場合の通常
の振舞いでは、パスのセットが設定ファイルで置き換えられる。
path=A_PATH
path[TAG]=A_PATH
A_PATH 引数はモジュールを探すディレクトリの追加分を指定 す る 。
path 指定行は、オプションのタグをとることができる。これはそのモ
ジュールの目的に関する情報を多少なりとも示し、また modprobe の動
作をいくらか自動化する。この "path" キーワードに追加されるタグは
角括弧 [] で括られる。タグがない場合は、 "misc" タグが指定された
かのように動作する。
非常に有用なタグとして、 boot がある。これはブート時にロードしな
ければならないモジュールを保有しているすべてのディレクトリをマー
クするために利用できる。
なお keep 指定行を使えば、 path 指定行によるデフォルトのパスの置
き換えを防ぐことができる。
generic_stringfile=A_PATH
これは generic_string ファイルへのパスである。このフ ァ イ ル は
depmod によって作成され、モジュールからの文字列情報が必要なイン
ストールスクリプトが利用する。通常はデフォルトの値を用いるべきで
ある。以下を参照のこと。
pcimapfile=A_PATH
これは pcimap ファイルへのパスである。このファイルは depmod によ
って作成され、インストールスクリプトが pci デバイスをサポート す
るモジュールを検索する際に用いられる。通常はデフォルトの値を用い
るべきである。以下を参照のこと。
isapnpmapfile=A_PATH
これは isapnpmap ファイルへのパスである。このファイル は depmod
に よって作成され、インストールスクリプトが ISA PNP デバイスをサ
ポートするモジュールを検索する際に用いられる。通常はデフォルトの
値を用いるべきである。以下を参照のこと。
usbmapfile=A_PATH
これは usbmap ファイルへのパスである。このファイルは depmod によ
って作成され、インストールスクリプトが USB デバイスをサポート す
るモジュールを検索する際に用いられる。通常はデフォルトの値を用い
るべきである。以下を参照のこと。
parportmapfile=A_PATH
これは parportmap ファイルへのパスである。このファイルは depmod
に よって作成され、インストールスクリプトが parport デバイスをサ
ポートするモジュールを検索する際に用いられる。通常はデフォルトの
値を用いるべきである。以下を参照のこと。
ieee1394mapfile=A_PATH
これは ieee1394map ファイルへのパスである。このファイルは depmod
によって作成され、インストールスクリプトが ieee1394 デバイスをサ
ポートするモジュールを検索する際に用いられる。通常はデフォルトの
値を用いるべきである。以下を参照のこと。
pnpbiosmapfile=A_PATH
これは pnpbiosmap ファイルへのパスである。このファイルは depmod
に よって作成され、インストールスクリプトが pnpbios デバイスをサ
ポートするモジュールを検索する際に用いられる。通常はデフォルトの
値を用いるべきである。以下を参照のこと。
alias alias_name result
"alias" 指 定 行 は モ ジ ュ ー ルに別名をつけるために用いる。
/etc/modules.conf に
alias iso9660 isofs
のような行があれば、実際にはそのようなモジュー ル が な く て も
modprobe iso9660 のように書くことができるようになる。
なお
alias some_module off
と いう行は、modprobe にそのモジュールのロード要求を無視させる。
また
alias some_module null
というエイリアスは、some_module への要求を常に成功させるが、しか
し 実際にはそのモジュールはインストールされない。これは above や
below 指定行で作成されるスタックのベースとして利用できる。
alias 指定のレベルは深くなっても良い (訳注: alias の alias の
alias... としてかまわない)。全てのエイリアスは、実際に物理的に存
在しているモジュールを探すべく、再帰的に展開される。エイリアスの
実際の深さの限界は、おおよそ 1000 程度になっている。これは以下の
ようなループを検知するためである。
alias a b
alias b a
alias マッピングの最終的な結果がいずれのモジュールにもマッチしな
け れば、 modprobe はその結果に probe と probeall をマップする。
これらも成功しなければ、そのモジュールは見付からなかったことにな
る。したがって以下のような指定は気が利いていると言える (devfs よ
り)。
alias /dev/sg* /dev/sg
probeall /dev/sg scsi-hosts sg
モジュール A が実際に存在する場合にも、モジュール A をモジュール
B へのエイリアスとしてマップすることはできる。しかしこれは誤解の
元であるので推奨できない。歴史的な理由から、カーネルのサウンドシ
ス テムには sound.o というモジュールがある。しかしサウンドの開発
者たちも、 sound をユーザサウンドカード用モジュールへのエイリ ア
スとしたい、すなわち "alias sound sb" としたいことがあるかもしれ
ない。この要求をサポートし、なおかつ「オプションをエイリアスに与
え ることが可能」という定められた動作を維持するために、 modprobe
はモジュール名のエイリアス展開を、その名前が modules.dep に見 付
か った場合には行わない (見付からなければ展開する)。これはエイリ
アスと実際のモジュールのあり得る全ての組み合わせに対して期待され
た動作をするとは限らないので、実際に存在するモジュールと同じ名前
へのエイリアスは避けるべきなのである。
[add] probe name module_list
[add] probeall name module_list
これらの指定行は name が modprobe のコマンドラインで要求されたモ
ジュール名である場合に限って利用できる。効果としては、 name への
要求があると、 module_list にあるモジュールが、指定の順序で試 さ
れ る。二つの指定行の違いは、 probe はモジュールの挿入が一度成功
すればそこで試行を終了するのに対して、 probeall はリストの最後ま
で続ける点にある。終了ステータスは、いずれかのモジュールのインス
トールに成功したかどうかを反映する。 add が前に付加されると、 新
しいリストを前のリストに置き換えるのではなく追加する。
prune filename
インストールされているカーネルに対するモジュールディレクトリのト
ップには、モジュールではないファイルがおかれている。これら に は
modules.dep, modules.generic_string, modules.pcimap,
modules.isapnpmap, modules.usbmap, modules.parportmap,
modules.ieee1394map, modules.pnpbiosmap のほか、カーネルソースツ
リーへのビルド用 symlink など、インストールプロセスがビルドツ リ
ーから保存しておきたいと考えたファイルが含まれる。これらに対して
depmod が "not an ELF file" という警告を発するのをやめさせるには
、 これらのモジュールでないファイルが prune リストに入っていなけ
ればならない。 depmod は組み込みの prune リストを持っており、 こ
れにはいかなるカーネルビルドにおいても存在するファイルが含まれて
いるので、削除することはできない。自分のファイルをこのモジュール
デ ィレクトリのトップに追加したら、各 filename に対して prune 宣
言を加えると良い。注意: prune リストは path のトップディレクトリ
をスキャンするとき、かつそのディレクトリが標準的なサブディレクト
リ名リスト以下、高々一つのサブディレクトリしか含まない場合にしか
( すなわちカーネルのインストールでビルドされたトップディレクトリ
のように見える場合にしか) 参照されない。 prune リストは path の
サブディレクトリには効力を持たない。
[add] options [-k] module [MODULE_SPECIFIC_OPTIONS]
エイリアスされた名前も含め、すべてのモジュール名はそれぞれ固有の
options 指定行を持つことができる。エイリアスに対して指定されたオ
プションは、より「基本的な」名前に対して指定されたオプションより
も高い優先度を持つ。このルールは options 指定行の衝突を解決す る
際に利用される。コマンドラインで指定されたオプションは、最も高い
優先度を持つ。モジュール名の前に -k があると、たとえ modprobe が
autoclean オプション -k で実行されていた場合でも、モジュールは
autoclean されなくなる。 add が前に付加されると、新しいリスト を
前 のリストに置き換えるのではなく追加する。 alias の結果が実際の
モジュールでなければ、その alias のチェーンによって構成 さ れ た
options は 、probe[all] を 呼 ぶ 前 に 捨 て ら れ る 。
MODULE_SPECIFIC_OPTIONS のどれかにシェルにとって特別な文字 (スペ
ー ス ・ コ ンマ・括弧) が含まれている場合には、そのオプションは
’"..."’ で括らなければならない。 ’’ は modules.conf の内部で オ
プションを区切り、 "" はオプションがシェルに渡されるときにそれを
区切る。以下に例を示す。
abc=’"def,ghi jkl (xyz)"’
[add] above module module_list
この指定行は、あるモジュールのモジュールスタックの上に他のモジュ
ー ルセットを "pull in" するのに利用できる。結果は lsmod(8) コマ
ンドの出力で見ることができる。 above 指 定 行 は 依 存 関 係 が
modules.dep ファイルには記述できないほど複雑なような状況下で有用
である。これは post-install および pre-remove 指定行の最適化され
た場合であるとみなすことができる。モジュールのインストールに失敗
しても、 modprobe の終了ステータスには影響しないことに注意。 add
が前に付加されると、新しいリストを前のリストに置き換えるのではな
く追加する。
[add] below module module_list
この指定行は、あるモジュールのモジュールスタックの下に他のモジュ
ールセットを "push" するのに利用できる。結果は lsmod(8) コマンド
の出力で見ることができる。 below 指定行は依存関係が modules.dep
ファイルには記述できないほど複雑なような状況下で有用である。これ
は pre-install および post-remove 指定行の最適化された場合である
と み な す ことができる。モジュールのインストールに失敗しても、
modprobe の終了ステータスには影響しないことに注意。 add が前に付
加されると、新しいリストを前のリストに置き換えるのではなく追加す
る。
以下の指定行はモジュールのロード・アンロードの際に特定のコマンドを実 行
したい場合に利用できる (指定しなくてもよい)。エイリアスされたモジュール
名に対してもこれらの指定は可能で、エイリアス展開後のモジュール名に対 す
る指定が他にあれば、それらとともに適切な順序で実行される。
pre-install module command
指 定 し たモジュールをインストールする前に command を実行する。
below 指定行も参照のこと。
install module command
指定したモジュールをインストールする際に、デフォルトの insmod で
はなく command を実行する。
post-install module command
指 定 し たモジュールをインストールした後に command を実行する。
above 指定行も参照のこと。
pre-remove module command
指定したモジュールを削除する前に command を実行する。 above 指定
行も参照のこと。
remove module command
指定したモジュールを削除する際に、デフォルト (組み込み) の rmmod
ではなく command を実行する。
post-remove module command
指定したモジュールを削除した後に command を実行する。 below 指定
行も参照のこと。
persistdir=directory_name
rmmod が永続モジュールパラメータを含むモジュールを削除する時、 (
おそらく) 修正されたパラメータを directory_name の下に保存する。
modprobe が永続モジュールパラメータを含むモジュールをロードする
時、以前の値を directory_name の下から探す。 persistdir はモジュ
ールがロードされた時に読み込み可能で、モジュールがアンロードされ
た時に書き込み可能でなければ な ら な い 。 デ フ ォ ル ト 値 は
/var/lib/modules/persist である。多くの Linux ディストリビューシ
ョンはファイルシステムをマウントする前にモジュールをロードするが
、これは永続データに関する問題を引き起こすかもしれない。 /var が
別のパーティションにあって、モジュールがロードされてからマウント
される場合、 insmod は永続データを読み込めない。 /var が別のパー
ティションにある場合には、二つの選択肢がある。
1) persistdir にルートパーティションのディレクト リ 、 例 え ば
/lib/modules/persist を指定する。これは rmmod が実行されるとき
にルートパーティションが書き込み可能であることを仮定している。
2) ファイルシステム関係のモジュールを全て最初にロードし、 /var
パ ーティションをマウントし、それから残りのモジュールをロードす
る。これはファイルシステムに永続データがないことを仮定してい る
。
デフォルトの設定
設定ファイル ’/etc/modules.conf’ がない場合や、あるいは指定行の上書き変
更がない場合には、以下のデフォルトが用いられる。
depfile=/lib/modules/‘uname -r‘/modules.dep
generic_stringfile=/lib/modules/‘uname -r‘/modules.generic_string
pcimapfile=/lib/modules/‘uname -r‘/modules.pcimap
isapnpmapfile=/lib/modules/‘uname -r‘/modules.isapnpmap
usbmapfile=/lib/modules/‘uname -r‘/modules.usbmap
parportmapfile=/lib/modules/‘uname -r‘/modules.parportmap
ieee1394mapfile=/lib/modules/‘uname -r‘/modules.ieee1394map
pnpbiosmapfile=/lib/modules/‘uname -r‘/modules.pnpbiosmap
path[boot]=/lib/modules/boot
path[toplevel]=/lib/modules/‘uname -r‘
path[toplevel]=/lib/modules/‘kernelversion‘
path[toplevel]=/lib/modules/default
path[toplevel]=/lib/modules
persistdir=/var/lib/modules/persist
alias と options 指定行に対しても一連のデフォルト設定がある。このセット
は 継続的に拡張されているので、ここにはリストしない。 (現在の) デフォル
トのセットは、 /etc/modules.conf ファイルがないときに modprobe -c コ マ
ンドを実行すれば閲覧できる。
全ての options 指定行は、以下のようにモジュールに必要なオプションを指定
する。
modprobe de620 bnc=1
これらのオプションは /etc/modules.conf ファイルに与えられているオプショ
ンと、 modprobe のコマンドラインによって上書きされる。
エイリアスされたモジュールにも options 指定行は (されていないモジュール
と) 同じように使うことができる。これは例えばダミーのモジュールに便利 で
ある。
alias dummy0 dummy
options dummy0 -o dummy0
別の設定ファイル
歴史的な理由から、もし /etc/modules.conf が存在しないと、 modutils は代
わりに /etc/conf.modules を読む。しかしこの古い名前の利用は推奨できない
。 /etc/modules.conf に置き換えるべきである。このバージョンの modutils
では、 /etc/conf.modules があると警告メッセージを発する。以降のバージョ
ン ではエラーメッセージを出してモジュールのロードを行わないことになるだ
ろう。
関連項目
depmod(8), modprobe(8), insmod(8)
著者
Bjorn Ekwall
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa