ACTIONとGOTO変数
ACTION!="add", GOTO="drivers_end"
上記は
「ACTION」
- add:デバイスの追加
- remove:デバイスの除去
- change:デバイスの状態変更
- move:デバイスの親子関係や名前の変更
- online:デバイスがオンラインになった
- offline:デバイスがオフラインになった
- bind:ドライバーとデバイスが紐付けられた
- unbind:ドライバーとデバイスの関連付けを切断
大抵のルールはaddとremoveのみを考慮しています。それ以外については必要になったときに調べると良いでしょう。
「GOTO」
ENVとRUN変数
前項のACTIONとGOTOのおかげで,
ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}"
ENVはカーネルドライバーの中や他のルールで設定されるデバイスプロパティです。連想配列的にアクセス可能なので,
RUNは追加したコマンドを実行する変数です。
「builtin」
変数の値の中で他の変数を参照できます。上記の例だと
MODALIASには
SUBSYSTEMとKERNEL,LABEL変数
ここまでの基本をおさえておくと,
SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}+="kmod load tifm_sd"
SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}+="kmod load tifm_ms"
SUBSYSTEM=="memstick", RUN{builtin}+="kmod load ms_block mspro_block"
SUBSYSTEM=="i2o", RUN{builtin}+="kmod load i2o_block"
SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}+="kmod load ppdev"
KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}+="kmod load sm_ftl"
SUBSYSTEMはそのデバイスが所属しているサブシステムです。
「i2o」
「module」
SUBSYSTEM変数とは別にSUBSYSTEMS変数もあります。後者の変数には,
ファイルの最後はLABEL変数です。GOTOはLABEL変数がセットされている値と一致する場所までジャンプします。
LABEL="drivers_end"