2003-10-20 08:59:45 +04:00
.TH UDEV 8 "October 2003" "" "Linux Administrator's Manual"
2003-10-17 11:29:17 +04:00
.SH NAME
2003-10-20 08:59:45 +04:00
udev \- Linux configurable dynamic device naming support
2003-10-17 11:29:17 +04:00
.SH SYNOPSIS
2003-10-22 08:46:00 +04:00
.BI udev " hotplug-subsystem"
2003-10-17 11:29:17 +04:00
.SH "DESCRIPTION"
.B udev
2003-10-20 08:59:45 +04:00
creates or removes device node files usually located in the /dev directory.
2003-10-22 08:46:00 +04:00
Its goal is to provide a dynamic device directory that contains only the files
for devices that are actually present.
.P
2003-10-20 08:59:45 +04:00
As part of the
.B hotplug
subsystem,
.B udev
2003-10-22 08:46:00 +04:00
is executed if a kernel device is added or removed from the system.
2003-10-20 08:59:45 +04:00
On device creation,
.B udev
2003-10-22 08:46:00 +04:00
reads the sysfs directory of the given device to collect device attributes
2003-10-20 08:59:45 +04:00
like label, serial number or bus device number.
2003-12-17 10:36:19 +03:00
These attributes are treated as a key
2003-10-22 09:08:03 +04:00
to determine a unique name for device file creation.
2003-11-12 14:48:04 +03:00
.B udev
maintains a database for devices present on the system.
2003-10-22 08:46:00 +04:00
.br
2003-10-20 08:59:45 +04:00
On device removal,
.B udev
2003-10-22 09:08:03 +04:00
queries the internal database for the name of the device file to be deleted.
2003-10-22 08:46:00 +04:00
.SH "CONFIGURATION"
2003-12-05 06:22:53 +03:00
All
.B udev
configuration files consist of a set of lines of text. All empty
2003-12-03 12:09:48 +03:00
lines, and lines beginning with a '#' will be ignored.
.P
2003-11-12 14:48:04 +03:00
.B udev
2003-12-03 12:09:48 +03:00
expects its main configuration file at
.I /etc/udev/udev.conf.
The file consists of a set of variables and values that allow the user to
override default udev values. The current set of variables that can be
overridden in this file is:
.TP
.B udev_root
This is the where in the filesystem to place the device nodes. The default
value for this is
.I /udev/
.TP
.B udev_db
The name and location of the udev database. The default value for this is
.I /udev/.udev.tdb
.TP
.B udev_rules
This is the location of the udev rules file. The default value for this is
.I /etc/udev/udev.rules
.TP
.B udev_permissions
This is the location of the udev permission file. The default value for this is
.I /etc/udev/udev.permissions
.TP
.B default_mode
This is the default mode for all nodes that have no explicit match in the
permissions file. The default value for this is
.I 0666
2003-10-20 08:59:45 +04:00
.br
2003-12-03 12:09:48 +03:00
.P
2003-12-10 11:30:43 +03:00
.RI "A sample " udev.conf " might look like this:
2003-12-03 12:09:48 +03:00
.sp
.nf
# udev_root - where in the filesystem to place the device nodes
udev_root="/udev/"
# udev_db - The name and location of the udev database.
udev_db="/udev/.udev.tdb"
# udev_rules - The name and location of the udev rules file
udev_rules="/etc/udev/udev.rules"
# udev_permissions - The name and location of the udev permission file
udev_permissions="/etc/udev/udev.permissions"
# default_mode - set the default mode for all nodes that have no
# explicit match in the permissions file
default_mode="0666"
.fi
.P
The rules for udev to use when naming devices may specified at
.I /etc/udev/udev.rules
2003-12-10 11:30:43 +03:00
or specified by the
2003-12-03 12:09:48 +03:00
.I udev_rules
2003-12-17 10:36:19 +03:00
value in the
2003-12-03 12:09:48 +03:00
.I /etc/udev/udev.conf
file.
.P
Every line in the rules file define the mapping between device attributes and
the device file name. It starts with a keyword defining the method used to
match, followed by one ore more keys to compare and the filename for the
2003-12-11 02:40:08 +03:00
device. One ore more optional symlinks targeting the node may be specified.
2003-12-10 11:30:43 +03:00
.br
If no matching configuration is found, the default kernel device name
2003-12-03 12:09:48 +03:00
is used.
2003-10-21 10:33:54 +04:00
.P
2003-10-22 08:46:00 +04:00
The line format is:
.sp
2003-12-10 11:30:43 +03:00
.I method, key,[key,...] name [, symlink]
2003-10-22 08:46:00 +04:00
.sp
where valid methods with corresponding keys are:
2003-10-20 08:59:45 +04:00
.TP
2003-11-24 10:39:39 +03:00
.B CALLOUT
calling external program, that returns a string to match
.br
2003-12-10 11:30:43 +03:00
.RB "keys: " BUS ", " PROGRAM ", " ID
2003-11-24 10:39:39 +03:00
.TP
2003-10-20 08:59:45 +04:00
.B LABEL
device label or serial number, like USB serial number, SCSI UUID or
2003-12-23 09:36:10 +03:00
file system label. Up to 5 different sysfs files can be checked, with
all of the values being required in order to match the rule.
2003-10-21 10:33:54 +04:00
.br
2003-12-17 10:36:19 +03:00
.RB "keys: " BUS ", " SYSFS_
2003-10-20 08:59:45 +04:00
.TP
.B NUMBER
device number on the bus, like PCI bus id
2003-10-21 10:33:54 +04:00
.br
2003-12-10 11:30:43 +03:00
.RB "keys: " BUS ", " ID
2003-10-20 08:59:45 +04:00
.TP
.B TOPOLOGY
device position on bus, like physical port of USB device
2003-10-21 10:33:54 +04:00
.br
2003-12-10 11:30:43 +03:00
.RB "keys: " BUS ", " PLACE
2003-10-20 08:59:45 +04:00
.TP
.B REPLACE
string replacement of the kernel device name
2003-10-21 10:33:54 +04:00
.br
2003-12-17 10:36:19 +03:00
.RB "key: " KERNEL
2003-11-24 10:39:39 +03:00
.P
The methods are applied in the following order:
2003-12-10 11:30:43 +03:00
.BR CALLOUT ", " LABEL ", " NUMBER ", " TOPOLOGY ", " REPLACE "."
2003-10-22 08:46:00 +04:00
.P
2003-12-10 11:30:43 +03:00
.RB "The " NAME " ," SYMLINK " and " PROGRAM
2003-12-05 06:22:53 +03:00
fields support simple printf-like string substitution:
2003-11-19 17:18:54 +03:00
.TP
.B %n
2003-12-10 11:30:43 +03:00
The "kernel number" of the device.
2003-11-19 17:18:54 +03:00
for example, 'sda3' has a "kernel number" of '3'
.TP
.B %M
2003-12-10 11:30:43 +03:00
The kernel major number for the device.
2003-11-19 17:18:54 +03:00
.TP
.B %m
2003-12-10 11:30:43 +03:00
The kernel minor number for the device.
2003-11-19 17:18:54 +03:00
.TP
.B %b
2003-12-10 11:30:43 +03:00
The bus id for the device.
2003-11-24 10:39:39 +03:00
.TP
.B %c
2003-12-10 11:30:43 +03:00
The CALLOUT program returned string.
(This does not work within the PROGRAM field for the obvious reason.)
2003-11-25 10:45:38 +03:00
.TP
.B %D
Use the devfs style disk name for this device.
For partitions, this will result in 'part%n'
2003-12-11 09:12:30 +03:00
If this is not a partition, it will result in 'disc'.
2003-11-19 17:18:54 +03:00
.P
2003-12-10 11:30:43 +03:00
.RI "A sample " udev.rules " might look like this:"
2003-10-22 08:46:00 +04:00
.sp
2003-10-20 08:59:45 +04:00
.nf
2003-11-24 10:39:39 +03:00
# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
CALLOUT, BUS="scsi", PROGRAM="/sbin/scsi_id", ID="OEM 0815", NAME="disk1"
2003-10-20 08:59:45 +04:00
# USB printer to be called lp_color
2003-12-17 10:36:19 +03:00
LABEL, BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_color"
2003-10-20 08:59:45 +04:00
2003-12-23 09:36:10 +03:00
# SCSI disk with a specific vendor and model number is to be called boot
LABEL, BUS="scsi", SYSFS_vendor="IBM", SYSFS_model="ST336", NAME="boot%n"
2003-10-20 08:59:45 +04:00
# sound card with PCI bus id 00:0b.0 to be called dsp
2003-10-21 10:33:54 +04:00
NUMBER, BUS="pci", ID="00:0b.0", NAME="dsp"
2003-10-20 08:59:45 +04:00
# USB mouse at third port of the second hub to be called mouse1
2003-10-21 10:33:54 +04:00
TOPOLOGY, BUS="usb", PLACE="2.3", NAME="mouse1"
2003-10-20 08:59:45 +04:00
2003-12-11 02:40:08 +03:00
# ttyUSB1 should always be called pda with two additional symlinks
REPLACE, KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
2003-10-21 10:33:54 +04:00
2003-12-11 02:40:08 +03:00
# multiple USB webcams with symlinks to be called webcam0, webcam1, ...
2003-12-17 11:58:01 +03:00
LABEL, BUS="usb", SYSFS_model="XV3", NAME="video%n", SYMLINK="webcam%n"
2003-10-20 08:59:45 +04:00
.fi
2003-10-22 08:46:00 +04:00
.P
Permissions and ownership for the created device files may specified at
2003-12-03 12:09:48 +03:00
.I /etc/udev/udev.permissions
2003-12-10 11:30:43 +03:00
or specified by the
2003-12-03 12:09:48 +03:00
.I udev_permission
2003-12-10 11:30:43 +03:00
value in the
2003-12-03 12:09:48 +03:00
.I /etc/udev/udev.conf
file.
2003-10-22 08:46:00 +04:00
.br
2003-11-25 09:27:25 +03:00
Every line lists a device name followed by owner, group and permission
2003-12-04 06:26:02 +03:00
mode. All values are separated by colons. The name field may contain a
2003-12-05 06:22:53 +03:00
pattern to apply the values to a whole class of devices.
2003-11-24 10:39:39 +03:00
.br
2003-11-25 09:27:25 +03:00
If
.B udev
was built using klibc or is used before the user database is accessible (e.g.
2003-12-10 11:30:43 +03:00
.BR initrd "(4)), only numeric owner and group values may be used."
2003-10-22 08:46:00 +04:00
.sp
2003-12-10 11:30:43 +03:00
.RI "A sample " udev.permissions " might look like this:"
2003-10-22 08:46:00 +04:00
.sp
.nf
#name:user:group:mode
2003-11-25 09:27:25 +03:00
input/*:root:root:644
2003-11-21 05:36:55 +03:00
ttyUSB1:0:8:0660
2003-11-25 09:27:25 +03:00
video*:root:video:0660
2003-10-22 08:46:00 +04:00
dsp1:::0666
.fi
2003-12-04 06:26:02 +03:00
.P
A number of different fields in the above configuration files support a simple
2003-12-05 06:22:53 +03:00
form of shell style pattern matching. It supports the following pattern characters:
2003-12-04 06:26:02 +03:00
.TP
.B *
Matches zero, one, or more characters.
.TP
.B ?
Matches any single character, but does not match zero characters.
.TP
.B [ ]
Matches any single character specified within the brackets. For example, the
pattern string "tty[SR]" would match either "ttyS" or "ttyR". Ranges are also
supported within this match with the '-' character. For example, to match on
2003-12-05 06:22:53 +03:00
the range of all digits, the pattern [0-9] would be used. If the first character
following the '[' is a '!' then any character not enclosed is matched.
2003-10-17 11:29:17 +04:00
.SH "FILES"
.nf
/sbin/udev udev program
2003-12-03 12:09:48 +03:00
/etc/udev/* udev config files
2003-10-17 11:29:17 +04:00
/etc/hotplug.d/default/udev.hotplug hotplug symlink to udev program
.fi
.LP
.SH "SEE ALSO"
2003-10-22 08:46:00 +04:00
.BR hotplug (8)
2003-10-17 11:29:17 +04:00
.PP
The
.I http://linux-hotplug.sourceforge.net/
web site.
.SH AUTHORS
2003-11-12 14:48:04 +03:00
.B udev
was developed by Greg Kroah-Hartman <greg@kroah.com> with much help from
2003-12-04 06:27:24 +03:00
Dan Stekloff <dsteklof@us.ibm.com>, Kay Sievers <kay.sievers@vrfy.org>, and
many others.