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)
マニュアル・ページを参照してください。