3 Working With udev Rules
udev uses rules files
to identify devices and create device names. The udev
service
(systemd-udevd
) reads the rules files at system start-up and stores the
rules in memory. If the kernel discovers a new device or an existing device goes offline, the
kernel sends an event action (uevent) notification to udev
, which
matches the in-memory rules against the device attributes in the /sys
directory to identify the device.
Rules files exist in several different directories. However, you only need to know about
/etc/udev/rules.d/*.rules
files because these are the only rules files
that you can edit. See Customizing udev Rules.
udev processes the rules files in lexical order, regardless of the directory of the rule
files. Rules files in /etc/udev/rules.d
override rules files of the same name
in other locations.
The following rules are extracted from the file
/lib/udev/rules.d/50-udev-default.rules
and illustrate the syntax of
udev rules:
# 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"
For more information, see the udev(7)
manual
page.