udev
基礎
- systemd の一部として提供されるデバイスの認識に関わるデーモン
 - 認知までの流れ
- Linux カーネルが新しいデバイスを検知
 - uevent によって udev に通知
 - ルールに基づき処理を行う
 
 
ルールファイル
任意のデバイスを接続したときの挙動を記載できる
拡張子は
.rules/etc/udev/rules.d- システムの管理者が作成・変更することを想定したルールファイルの保存場所
 
/run/udev/rules.d- 一時的に作成されるルールファイルの保存場所
 
/lib/udev/rules.d- パッケージ等システムが提供するルールファイルの保存場所
 
優先順位は /etc => /run => /lib
- /lib を無効にしたい場合には /etc 以下に同名のファイルを用意し 
/dev/nullへシンボリックリンクを貼れば良い 
- /lib を無効にしたい場合には /etc 以下に同名のファイルを用意し 
 
sample : /lib/udev/rules.d/80-drivers.rules
# do not edit this file, it will be overwritten on update
ACTION=="remove", GOTO="drivers_end"
ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}"
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"
LABEL="drivers_end"
- キーバリューの変数をベース
 ACTION=="remove", GOTO="drivers_end"- ACTION が add でなければ、GOTO で指定された drivers_end ラベルにジャンプ
 
ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}"- ENV
- カーネルドライバーの中や他のルールで設定されるデバイスプロパティ
 - ENV の MODALIAS に何か値が設定されていたとき
 
 - RUN
- 追加したコマンドを実行する変数
 - kmod load $env{MODALIAS} が実行されるということ
 +=とすることでこれまで他のルールが追加した値に追記- RUN が評価されるのは,すべてのルールが評価されたあと
 builtin- udev コマンド内部のビルドインコマンドを実行することを意味
 
 
- ENV
 
- 特殊デバイス
- /dev/null
 - /dev/zero
 - /dev/random