+.RI "A sample " udev.conf " file might look like this:
+.sp
+.nf
+# Where in the filesystem to place the device nodes
+udev_root="@udevdir@"
+
+# The name and location of the udev database.
+udev_db="@udevdir@/.udevdb"
+
+# The name and location of the udev rules file(s).
+udev_rules="@configdir@/rules.d"
+
+# The syslog(3) priority: "err", "info", or the numerical value.
+udev_log="err"
+.fi
+.P
+The rules for device naming are read from the files located in the
+.I /etc/udev/rules.d/
+directory, or at the location specified by the
+.I udev_rules
+value in the
+.I /etc/udev/udev.conf
+file.
+.br
+Every line in the rules file defines the mapping between device attributes
+and the device name. One or more keys are specified to match a rule with
+the current device. If all keys are matching, the rule will be applied and
+the name is used to name the device file or the network interface.
+.br
+If no matching rule is found, the default kernel device name is used.
+.P
+Every rule consists of a list of comma separated key value fields:
+.sp
+.IR "key " ,[ "key " ,...]
+.P
+Each key has the following format:
+.sp
+.IR "name op value"
+.P
+There are distinct key operation types, depending on the type of the key, it
+does a comparison or an assignment.
+.P
+Comparison operators are:
+.TP
+.B ==
+Compare for equality.
+.TP
+.B !=
+Compare for non-equality.
+.P
+Assignment operators are:
+.TP
+.B +=
+Add the value to a key that holds a list of entries.
+.TP
+.B :=
+Assign a value to a key finally; disallow any later changes, which
+is useful to prevent changes by any later rules.
+.TP
+.B =
+Asign a value to a key. Keys that represent a list, are reset and only this
+single value is assigned. While this operator still works inplicitely as
+comparison on keys that can't get a value assigned, its usage as an comparison
+operator is deprecated.
+.P
+The following key names can be used to match against device properties:
+.TP
+.B BUS
+Match the bus type of the device.
+(The sysfs device bus must be able to be determined by a "device" symlink.)
+.TP
+.B KERNEL
+Match the kernel device name.
+.TP
+.B SUBSYSTEM
+Match the kernel subsystem name.
+.TP
+.B ACTION
+Match the kernel action name.
+.TP
+.B DRIVER
+Match the kernel driver name.
+.TP
+.B ID
+Match the device number on the bus, like PCI bus id.
+.TP
+.BI SYSFS{ filename }
+Match sysfs device attribute like vendor and product id's, USB serial number
+or the SCSI disk model number. Up to 5 different sysfs files can be checked,
+with all of the values being required to match the rule.
+.br
+Trailing whitespace characters in the sysfs attribute value are ignored, if
+the key doesn't have any trailing whitespace characters by itself.
+.TP
+.BI ENV{ variable }
+Match an environment variable. Up to 5 different environment variables can be
+checked, with all of the values being required to match the rule.
+.TP
+.B PROGRAM
+Call external program. This key is valid if the program returns successful.
+The environment variables of