EN JA
DEVD.CONF(5)
DEVD.CONF(5) FreeBSD File Formats Manual DEVD.CONF(5)

名称

devd.confdevd(8) のための設定ファイル

解説

一般的な構文

devd(8) 設定は、2 つの一般的な機能、ステートメントとコメントから成ります。すべてのステートメントは、セミコロンで終わります。多くのステートメントは、同様にセミコロンで終了するサブステートメントを含むことができます。

次のステートメントがサポートされています:

attach
新しくアタッチされたデバイスが前述の基準にマッチするとき、実行する各種のマッチする基準とアクションを指定します。
detach
新しくデタッチされたデバイスが前述の基準にマッチするとき、実行する各種のマッチする基準とアクションを指定します。
nomatch
現在カーネルにロードされるデバイスドライバが (新しい) デバイスを要求しないとき、実行する各種のマッチする基準とアクションを指定します。
notify
カーネルがユーザーランドにイベント通知を送信するとき、実行する各種のマッチする基準とアクションを指定します。
options
devd(8) の操作のための各種のオプションとパラメータを指定します。

ステートメントは、設定ファイル中にどんな順序でも現れることができ、要求されるたびごとに繰り返すことができます。各ステートメントとそれらのサブステートメントの構文と意味のさらなる詳細は、以下に説明されます。

options を除いて、各ステートメントには、それに関連している優先度 (任意の数値) があり、ここで、‘ 0’は、最も低い優先度に定義されます。 2 つのステートメントが同じイベントに適合するなら、最も高い優先度のステートメントのアクションのみ実行されます。このような方法で、特別な注意を必要とするデバイスまたは通知のために一般的なステートメントを上書きすることができます。

ステートメントの一般的な構文は、次の通りです:

statement priority { 
 substatement "value"; 
 ... 
 substatement "value"; 
};

サブステートメント

次のサブステートメントは、 options ステートメントの中でサポートされます。
directory/some/path”;
devd(8) が、更なる設定ファイルとして、"*.conf"と名前が付けられたすべてのファイルを読み込むディレクトリのリストに与えられたディレクトリを追加します。いくつもの directory ステートメントを使用することができます。
pid-file/var/run/devd.pid”;
PID ファイルを指定します。
set regexp-name(some|regexp)”;
正規表現を作成して、それを変数 regexp-name に割り当てます。変数は、設定ファイルの残りの至るところで利用可能です。文字列が‘ !’で始まり、文字列の残りによって書式化された正規表現がマッチしないなら、マッチします。すべての正規表現には、それらの周りに暗黙の‘ ^$’があります。

次のサブステートメントは、 attachdetach ステートメントの中でサポートされています。

actioncommand”;
適合が成功したときに実行するコマンド。例“ /etc/pccard_ether $device-name start
classstring”;
これは、“ matchclass”“ string””の省略表現です。
device-name “string”;
これは、“ matchdevice-name”“ string””の省略表現です。これは、 string というデバイスに適合します。それには、以前に作成され正規表現を含む正規表現または変数が許されます。“ device-name”変数は、後の action ステートメントで使用可能です。
matchvariable”“ value”;
value の内容が正規表現である variable に対して value の内容を適合させます。 device-name ステートメントがすべてのデバイスの適合を処理するので、 attach でも detach イベントの間でも必要としません。変数の部分的なリストについては、下記を参照してください。
media-typestring”;
ネットワークデバイスについて、 media-type は、与えられたメディアタイプがあるデバイスに適合します。有効なメディアタイプは、次の通りです: “ Ethernet”, “ Tokenring”, “ FDDI”, “ 802.11”と“ ATM”です。
subdevicestring”;
これは、“ matchsubdevice”“ string””の省略表現です。

次のサブステートメントは、 nomatch ステートメントの中でサポートされます。

actioncommand”;
上記と同様。
matchvariable”“ value”;
value の内容が正規表現である variable に対して value の内容を適合させます。変数の部分的なリストについては、下記を参照してください。

次のサブステートメントは、 notify ステートメントの中でサポートされています。“ notify”変数は、このステートメント内で利用可能であり、イベントを配信したシステムとサブシステムに依存する値を含んでします。

actioncommand”;
適合が成功したときに実行するコマンド。例“ /etc/rc.d/power_profile $notify
matchsystem | subsystem | type | notify”“ value”;
いくつもの match ステートメントは、 notify ステートメント内に存在できます。 value は、固定文字列または正規表現のいずれかを指定できます。以下は、利用可能なシステム、サブシステム、とタイプのリストです。
media-typestring”;
上記参照。

match ステートメントで使用することができる変数

変数の部分的なリストと match ステートメントで使用することができるそれらの利用可能な値。

変数
説明
bus
親バスのデバイス名。
cdev
それが、 devfs(5) ファイルシステムによって作成されているなら、デバイスノードのパス。
cisproduct
CIS プロダクト (製品)。
cisvendor
CIS ベンダ。
class
デバイスクラス。
device
デバイス ID。
devclass
デバイスクラス (USB)。
devsubclass
デバイスサブクラス (USB)。
device-name
アタッチ/デタッチするデバイスの名前。
endpoints
エンドポイントカウント (USB)。
function
カード機能。
interface
インタフェース ID (USB)。
intclass
インタフェースクラス (USB)。
intprotocol
インタフェースプロトコル (USB)。
intsubclass
インタフェースサブクラス (USB)。
manufacturer
メーカ ID (PC カード)。
mode
ペリフェラルモード (USB)。
notify
notify”変数の値に適合します。
parent
親デバイス。
port
ハブポート番号 (USB)。
product
プロダクト ID (PC カード/USB)。
release
ハードウェアリビジョン (USB)。
sernum
シリアル番号 (USB)。
slot
カードスロット。
subvendor
サブベンダ ID。
subdevice
サブデバイス ID。
subsystem
システムのサブシステムに適合します、下記参照。
system
システムタイプに適合します、下記参照。
type
通知のタイプ、下記参照。
vendor
ベンダ ID。

通知の適合

notify メカニズムの中で使用されるシステム、サブシステムとタイプの部分的なリストです。

システム
ACPI
ACPI サブシステムに関連するイベント。
サブシステム
ACAD
AC (交流) 線の状態 ($notify=0x00 は、オフライン, 0x01 は、オンライン)。
Button
ボタンの状態 ($notify=0x00 は、電源, 0x01 は、スリープ)。
CMBAT
バッテリのイベント。
Lid
蓋の状態 ($notify=0x00 は、クローズされている, 0x01 は、オープン)。
PROCESSOR
プロセッサの状態/設定 ($notify=0x81 は、利用可能な Cx 状態に変更されます)。
Thermal
温度ゾーンのイベント。

IFNET
ネットワークサブシステムに関連するイベント。
サブシステム
interface
“サブシステム”は、イベントが起こるネットワークインタフェースの実際の名前です。
タイプ
LINK_UP
キャリア状態は、UP に変化しました。
LINK_DOWN
キャリア状態は、DOWN に変化しました。
ATTACH
ネットワークインタフェースは、システムにアタッチされます。
DETACH
ネットワークインタフェースは、システムからデタッチされます。

DEVFS
devfs(5) ファイルシステムに関連するイベント。
サブシステム
CDEV
タイプ
CREATE
devfs(5) ノードが作成されます。
DESTROY
devfs(5) ノードが破壊されます。

USB
USB サブシステムに関連するイベント。
サブシステム
DEVICE
タイプ
ATTACH
USB デバイスは、システムにアタッチされます。
DETACH
USB デバイスは、システムからデタッチされます。
INTERFACE
タイプ
ATTACH
USB インタフェースは、デバイスにアタッチされます。
DETACH
USB インタフェースは、デバイスからデタッチされます。

coretemp
coretemp(4) デバイスに関連するイベント。
サブシステム
Thermal
CPU コアが臨界温度に到達したという通知。
タイプ
temperature
熱くなり過ぎたコアの温度を含む文字列。

kern
カーネルに関連するイベント。
サブシステム
power
システムの状態に関する情報。
タイプ
resume
システムがサスペンドしている状態から目覚めたという通知。

リンク状態がインタフェース“ fxp0”で UP に変化すると次の通知 (notify) イベントが起こります:

system=IFNET, subsystem=fxp0, type=LINK_UP

AC (交流) 線の状態が“offline”に変化したなら、次のイベントが起こります:

system=ACPI, subsystem=ACAD, notify=0x00

コメント

コメントは、空白類が設定ファイルに現われるところならどんな場所でも現われることができます。すべての種類のプログラマが気に入るように、C、C++ または sehll/Perl 作成物にそれらを書くことができます。

C スタイルのコメントは、2 文字の‘ /*’ (スラッシュ、星) で始まり、‘ */’ (星、スラッシュ) で終わります。それらは、これらの文字で完全に区切ることができるので、行の一部だけ、または複数の行にまたがってコメントに使用することができます。

C スタイルのコメントは、入れ子にすることができません。例えば、次は、すべてのコメントが最初の‘ */’で終わるので、正しくありません:

/* これは, コメントの開始です. 
   これは, まだコメントの一部です. 
/* これは, コメントを入れ子にする正しくない試みです. */ 
   これは, もはやどんなコメント内でありません. */

C++ スタイルのコメントは、2 文字の‘ //’ (スラッシュ、スラッシュ) で始まり、物理的な行の終りまで続きます。それらは、複数の物理的な行をまたがって続けることはできません。複数行にわたる 1 つの論理的なコメントにするためには、‘ //’の組を使用しなければなりません。例えば:

// これは, コメントの開始です. 次の行は, 
// たとえそれが論理的に前のコメントの 
// 一部であっても, 新しいコメントです.

関連ファイル

/etc/devd.conf
devd(8) 設定ファイル。

使用例

# 
# これは、インタフェース fxp0 と ath0 でリンクダウンイベントをキャッチします 
# 
notify 0 { 
 match "system"   "IFNET"; 
 match "subsystem"  "(fxp0|ath0)"; 
 match "type"   "LINK_DOWN"; 
 action "logger $subsystem is DOWN"; 
}; 
 
# 
# 蓋のオープン/クロースイベントに適合します 
# 外部のスクリプトに $notify の値を渡すことによって、 
# これらを単一のイベントに結合することができます 
# 
notify 0 { 
 match "system"   "ACPI"; 
 match "subsystem"  "Lid"; 
 match "notify"   "0x00"; 
 action "logger Lid closed, we can sleep now!"; 
}; 
 
notify 0 { 
 match "system"   "ACPI"; 
 match "subsystem"  "Lid"; 
 match "notify"   "0x01"; 
 action "logger Lid opened, the sleeper must awaken!"; 
}; 
 
# 
# USB デバイスタイプにマッチする 
# 
notify 0 { 
 match "system"   "USB"; 
 match "subsystem"  "INTERFACE"; 
 match "type"   "ATTACH"; 
 match "intclass"  "0x0e"; 
 action "logger USB video device attached"; 
}; 
 
# 
# ath と wi デバイスがアタッチされているので、 
# pccard_ether で ath と wi デバイスの設定を試みます 
# 
attach 0 { 
        device-name "(ath|wi)[0-9]+"; 
        action "/etc/pccard_ether $device-name start"; 
}; 
 
# 
# ath と wi デバイスがシステムからデタッチされているので、 
# それらを停止します 
# 
detach 0 { 
        device-name "(ath|wi)[0-9]+"; 
        action "/etc/pccard_ether $device-name stop"; 
};

インストールされた /etc/devd.conf には、多くの追加例があります。

February 22, 2013 FreeBSD