3 udevルールの操作

udevでは、デバイスの識別およびデバイス名の作成にルール・ファイルが使用されます。udevサービス(systemd-udevd)によって、システム起動時にルール・ファイルが読み取られ、ルールがメモリーに格納されます。カーネルが新しいデバイス、または既存のデバイスがオフラインになったのを検出すると、カーネルによってイベント・アクション(uevent)通知がudevに送信され、デバイスを識別するために、/sysディレクトリのデバイス属性に対してインメモリー・ルールが照合されます。

ルール・ファイルは複数の異なるディレクトリに存在します。ただし、/etc/udev/rules.d/*.rulesファイルは編集できる唯一のルール・ファイルであるため、これについて知っておく必要があります。「udevルールのカスタマイズ」を参照してください。

udevでは、ルール・ファイルのディレクトリに関係なく、ルール・ファイルが字句順に処理されます。/etc/udev/rules.d内のルール・ファイルによって、他の場所にある同じ名前のルール・ファイルがオーバーライドされます。

次のルールはファイル/lib/udev/rules.d/50-udev-default.rulesから抽出したもので、udevルールの構文を示しています:

# do not edit this file, it will be overwritten on update

SUBSYSTEM=="block", SYMLINK{unique}+="block/%M:%m"
SUBSYSTEM!="block", SYMLINK{unique}+="char/%M:%m"

KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660"
KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660"
...
# mem
KERNEL=="null|zero|full|random|urandom", MODE="0666"
KERNEL=="mem|kmem|port|nvram",  GROUP="kmem", MODE="0640"
...
# block
SUBSYSTEM=="block", GROUP="disk"
...
# network
KERNEL=="tun",                  MODE="0666"
KERNEL=="rfkill",               MODE="0644"

# CPU
KERNEL=="cpu[0-9]*",            MODE="0444"
...
# do not delete static device nodes
ACTION=="remove", NAME=="", TEST=="/lib/udev/devices/%k", \
    OPTIONS+="ignore_remove"
ACTION=="remove", NAME=="?*", TEST=="/lib/udev/devices/$name", \
    OPTIONS+="ignore_remove"

詳細は、udev(7)マニュアル・ページを参照してください。