2003-10-20 11:59:45 +07:00
|
|
|
.TH UDEV 8 "October 2003" "" "Linux Administrator's Manual"
|
2003-10-17 14:29:17 +07:00
|
|
|
.SH NAME
|
2003-10-20 11:59:45 +07:00
|
|
|
udev \- Linux configurable dynamic device naming support
|
2003-10-17 14:29:17 +07:00
|
|
|
.SH SYNOPSIS
|
2003-10-22 11:46:00 +07:00
|
|
|
.BI udev " hotplug-subsystem"
|
2004-02-27 10:39:33 +07:00
|
|
|
.P
|
|
|
|
The environment must provide the following variables:
|
|
|
|
.TP
|
|
|
|
.B ACTION
|
|
|
|
.IR add " or " remove
|
|
|
|
signifies the connection or disconnection of a device.
|
|
|
|
.TP
|
|
|
|
.B DEVPATH
|
|
|
|
The sysfs devpath of the device without the mountpoint but a leading slash.
|
|
|
|
.P
|
|
|
|
Additional optional environment variables are:
|
|
|
|
.TP
|
|
|
|
.B UDEV_CONFIG_FILE
|
|
|
|
Overrides the default location of the
|
|
|
|
.B udev
|
|
|
|
config file.
|
|
|
|
.TP
|
|
|
|
.B UDEV_NO_SLEEP
|
|
|
|
The default behavior of
|
|
|
|
.B udev
|
|
|
|
is to wait until all the sysfs files of the device chain are populated. If set
|
|
|
|
.B udev
|
|
|
|
will will continue, regardless of the state of the device representation.
|
2003-10-17 14:29:17 +07:00
|
|
|
.SH "DESCRIPTION"
|
|
|
|
.B udev
|
2003-10-20 11:59:45 +07:00
|
|
|
creates or removes device node files usually located in the /dev directory.
|
2004-02-27 10:39:33 +07:00
|
|
|
It provides a dynamic device directory that contains only the files for
|
|
|
|
devices that are actually present.
|
2003-10-22 11:46:00 +07:00
|
|
|
.P
|
2003-10-20 11:59:45 +07:00
|
|
|
As part of the
|
|
|
|
.B hotplug
|
|
|
|
subsystem,
|
|
|
|
.B udev
|
2003-10-22 11:46:00 +07:00
|
|
|
is executed if a kernel device is added or removed from the system.
|
2003-10-20 11:59:45 +07:00
|
|
|
On device creation,
|
|
|
|
.B udev
|
2003-10-22 11:46:00 +07:00
|
|
|
reads the sysfs directory of the given device to collect device attributes
|
2003-10-20 11:59:45 +07:00
|
|
|
like label, serial number or bus device number.
|
2004-01-13 16:35:55 +07:00
|
|
|
These attributes may used as keys to determine a
|
|
|
|
unique name for device file creation.
|
2003-11-12 18:48:04 +07:00
|
|
|
.B udev
|
|
|
|
maintains a database for devices present on the system.
|
2003-10-22 11:46:00 +07:00
|
|
|
.br
|
2003-10-20 11:59:45 +07:00
|
|
|
On device removal,
|
|
|
|
.B udev
|
2004-01-13 16:35:55 +07:00
|
|
|
queries its database for the name of the device file to be deleted.
|
2003-10-22 11:46:00 +07:00
|
|
|
.SH "CONFIGURATION"
|
2003-12-05 10:22:53 +07:00
|
|
|
All
|
|
|
|
.B udev
|
|
|
|
configuration files consist of a set of lines of text. All empty
|
2003-12-03 16:09:48 +07:00
|
|
|
lines, and lines beginning with a '#' will be ignored.
|
|
|
|
.P
|
|
|
|
|
2003-11-12 18:48:04 +07:00
|
|
|
.B udev
|
2003-12-03 16:09:48 +07:00
|
|
|
expects its main configuration file at
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR /etc/udev/udev.conf .
|
2003-12-03 16:09:48 +07:00
|
|
|
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
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR /udev/ .
|
2003-12-03 16:09:48 +07:00
|
|
|
.TP
|
|
|
|
.B udev_db
|
|
|
|
The name and location of the udev database. The default value for this is
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR /udev/.udev.tdb .
|
2003-12-03 16:09:48 +07:00
|
|
|
.TP
|
|
|
|
.B udev_rules
|
|
|
|
This is the location of the udev rules file. The default value for this is
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR /etc/udev/udev.rules .
|
|
|
|
If a directory is specified, the whole directory is
|
|
|
|
scanned for files ending with
|
|
|
|
.I .rules
|
|
|
|
and all rule files are read in lexical order.
|
2003-12-03 16:09:48 +07:00
|
|
|
.TP
|
|
|
|
.B udev_permissions
|
2004-02-27 10:35:38 +07:00
|
|
|
This is the location of the udev permission file. The default value for this is
|
|
|
|
.IR /etc/udev/udev.permissions .
|
|
|
|
If a directory is specified, the whole directory is scanned for files ending with
|
|
|
|
.I .permissions
|
|
|
|
and all permission files are read in lexical order.
|
2003-12-03 16:09:48 +07:00
|
|
|
.TP
|
2004-02-13 15:35:30 +07:00
|
|
|
.B udev_log
|
|
|
|
If you want udev to log some information to the syslog for every node created or
|
|
|
|
removed. The default value for this is
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR yes .
|
2004-02-13 15:35:30 +07:00
|
|
|
.TP
|
2003-12-03 16:09:48 +07:00
|
|
|
.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
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR 0666 .
|
2004-01-20 10:44:24 +07:00
|
|
|
.TP
|
|
|
|
.B default_owner
|
|
|
|
This is the default owner for all nodes that have no explicit match in the
|
|
|
|
permissions file. The default value for this is
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR root .
|
2004-01-20 10:44:24 +07:00
|
|
|
.TP
|
|
|
|
.B default_group
|
|
|
|
This is the default group for all nodes that have no explicit match in the
|
|
|
|
permissions file. The default value for this is
|
2004-02-27 10:35:38 +07:00
|
|
|
.IR root .
|
2003-10-20 11:59:45 +07:00
|
|
|
.br
|
2003-12-03 16:09:48 +07:00
|
|
|
.P
|
2003-12-10 15:30:43 +07:00
|
|
|
.RI "A sample " udev.conf " might look like this:
|
2003-12-03 16:09:48 +07: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"
|
|
|
|
|
2004-02-27 10:35:38 +07:00
|
|
|
# udev_rules - The location of the directory where to look for files
|
|
|
|
which names ending with .rules
|
|
|
|
udev_rules="/etc/udev/"
|
2003-12-03 16:09:48 +07:00
|
|
|
|
|
|
|
# udev_permissions - The name and location of the udev permission file
|
|
|
|
udev_permissions="/etc/udev/udev.permissions"
|
|
|
|
|
2004-02-13 15:35:30 +07:00
|
|
|
# udev_log - set to "yes" if you want logging, else "no"
|
|
|
|
udev_log="yes"
|
|
|
|
|
2003-12-30 15:54:29 +07:00
|
|
|
# default_mode - set the default mode for all nodes that have no
|
2003-12-03 16:09:48 +07:00
|
|
|
# explicit match in the permissions file
|
|
|
|
default_mode="0666"
|
2004-01-20 10:44:24 +07:00
|
|
|
|
|
|
|
# default_owner - set the default owner for all nodes that have no
|
|
|
|
# explicit match in the permissions file
|
|
|
|
default_owner="root"
|
|
|
|
|
|
|
|
# default_group - set the default group for all nodes that have no
|
|
|
|
# explicit match in the permissions file
|
|
|
|
default_group="root"
|
2003-12-03 16:09:48 +07:00
|
|
|
.fi
|
|
|
|
.P
|
|
|
|
The rules for udev to use when naming devices may specified at
|
|
|
|
.I /etc/udev/udev.rules
|
2003-12-10 15:30:43 +07:00
|
|
|
or specified by the
|
2003-12-03 16:09:48 +07:00
|
|
|
.I udev_rules
|
2003-12-17 14:36:19 +07:00
|
|
|
value in the
|
2003-12-03 16:09:48 +07:00
|
|
|
.I /etc/udev/udev.conf
|
|
|
|
file.
|
|
|
|
.P
|
2004-01-13 16:35:55 +07:00
|
|
|
Every line in the rules file defines the mapping between device attributes
|
|
|
|
and the device file name. One ore 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 for the device node. One or more optional symlinks
|
|
|
|
targeting the node may be specified.
|
2003-12-10 15:30:43 +07:00
|
|
|
.br
|
2004-01-13 16:35:55 +07:00
|
|
|
If no matching rule is found, the default kernel device name is used.
|
2003-10-21 13:33:54 +07:00
|
|
|
.P
|
2003-10-22 11:46:00 +07:00
|
|
|
The line format is:
|
|
|
|
.sp
|
2004-01-13 16:35:55 +07:00
|
|
|
.I key,[key,...] name [, symlink]
|
2003-10-22 11:46:00 +07:00
|
|
|
.sp
|
2004-01-13 16:35:55 +07:00
|
|
|
where keys are:
|
2003-10-20 11:59:45 +07:00
|
|
|
.TP
|
2003-12-30 15:54:29 +07:00
|
|
|
.B BUS
|
2004-01-13 16:35:55 +07:00
|
|
|
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 ID
|
|
|
|
Match the device number on the bus, like PCI bus id.
|
|
|
|
.TP
|
|
|
|
.B PLACE
|
|
|
|
Match the topological position on bus, like physical port of USB device
|
|
|
|
.TP
|
2004-02-17 16:27:01 +07:00
|
|
|
.BI SYSFS{ filename }
|
2004-01-13 16:35:55 +07:00
|
|
|
Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID
|
|
|
|
or 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.
|
|
|
|
.TP
|
|
|
|
.B PROGRAM
|
|
|
|
Call external program. This key is valid if the program returns successful.
|
2004-02-27 12:29:49 +07:00
|
|
|
The environment variables of
|
2004-02-27 10:39:33 +07:00
|
|
|
.B udev
|
|
|
|
are also available for the program.
|
|
|
|
.br
|
2004-01-13 16:35:55 +07:00
|
|
|
The string returned by the program may additionally matched with the
|
|
|
|
.B RESULT
|
|
|
|
key.
|
|
|
|
.TP
|
|
|
|
.B RESULT
|
|
|
|
Match the returned string of the last
|
|
|
|
.B PROGRAM
|
|
|
|
call. This key may used in any following rule after a
|
|
|
|
.B PROGRAM
|
|
|
|
call.
|
2003-10-22 11:46:00 +07:00
|
|
|
.P
|
2004-02-17 16:27:01 +07:00
|
|
|
The
|
|
|
|
.B NAME
|
|
|
|
field given with the attribute
|
|
|
|
.BR NAME{ all_partitions }
|
|
|
|
will create all 15 partitions of a blockdevice.
|
|
|
|
This may be useful for removable media devices.
|
|
|
|
.P
|
2003-12-10 15:30:43 +07:00
|
|
|
.RB "The " NAME " ," SYMLINK " and " PROGRAM
|
2003-12-05 10:22:53 +07:00
|
|
|
fields support simple printf-like string substitution:
|
2003-11-19 21:18:54 +07:00
|
|
|
.TP
|
|
|
|
.B %n
|
2003-12-10 15:30:43 +07:00
|
|
|
The "kernel number" of the device.
|
2003-11-19 21:18:54 +07:00
|
|
|
for example, 'sda3' has a "kernel number" of '3'
|
|
|
|
.TP
|
2003-12-23 13:40:19 +07:00
|
|
|
.B %k
|
|
|
|
The "kernel name" for the device.
|
|
|
|
.TP
|
2003-11-19 21:18:54 +07:00
|
|
|
.B %M
|
2003-12-10 15:30:43 +07:00
|
|
|
The kernel major number for the device.
|
2003-11-19 21:18:54 +07:00
|
|
|
.TP
|
|
|
|
.B %m
|
2003-12-10 15:30:43 +07:00
|
|
|
The kernel minor number for the device.
|
2003-11-19 21:18:54 +07:00
|
|
|
.TP
|
|
|
|
.B %b
|
2003-12-10 15:30:43 +07:00
|
|
|
The bus id for the device.
|
2003-11-24 14:39:39 +07:00
|
|
|
.TP
|
|
|
|
.B %c
|
2004-01-14 09:31:20 +07:00
|
|
|
The
|
|
|
|
.B PROGRAM
|
|
|
|
returned string.
|
|
|
|
(This does not work within the
|
|
|
|
.B PROGRAM
|
|
|
|
field for the obvious reason.)
|
2004-02-18 10:02:39 +07:00
|
|
|
.br
|
|
|
|
A single part of the string, separated by the space character
|
|
|
|
my be selected by specifying the part number as a attribute:
|
|
|
|
.BI %c{ part }
|
|
|
|
.TP
|
|
|
|
.BI %s{ filename }
|
|
|
|
The content of a sysfs attribute.
|
2003-11-25 14:45:38 +07:00
|
|
|
.TP
|
2004-01-15 09:18:12 +07:00
|
|
|
.B %%
|
|
|
|
The '%' char itself.
|
2003-11-19 21:18:54 +07:00
|
|
|
.P
|
2003-12-10 15:30:43 +07:00
|
|
|
.RI "A sample " udev.rules " might look like this:"
|
2003-10-22 11:46:00 +07:00
|
|
|
.sp
|
2003-10-20 11:59:45 +07:00
|
|
|
.nf
|
2003-11-24 14:39:39 +07:00
|
|
|
# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
|
2004-01-13 16:35:55 +07:00
|
|
|
BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1"
|
2003-11-24 14:39:39 +07:00
|
|
|
|
2003-10-20 11:59:45 +07:00
|
|
|
# USB printer to be called lp_color
|
2004-02-17 16:27:01 +07:00
|
|
|
BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_color"
|
2003-10-20 11:59:45 +07:00
|
|
|
|
2003-12-23 13:36:10 +07:00
|
|
|
# SCSI disk with a specific vendor and model number is to be called boot
|
2004-02-17 16:27:01 +07:00
|
|
|
BUS="scsi", SYSFS{vendor}="IBM", SYSFS{model}="ST336", NAME="boot%n"
|
2003-12-23 13:36:10 +07:00
|
|
|
|
2003-10-20 11:59:45 +07:00
|
|
|
# sound card with PCI bus id 00:0b.0 to be called dsp
|
2004-01-13 16:35:55 +07:00
|
|
|
BUS="pci", ID="00:0b.0", NAME="dsp"
|
2003-10-20 11:59:45 +07:00
|
|
|
|
|
|
|
# USB mouse at third port of the second hub to be called mouse1
|
2004-01-13 16:35:55 +07:00
|
|
|
BUS="usb", PLACE="2.3", NAME="mouse1"
|
2003-10-20 11:59:45 +07:00
|
|
|
|
2003-12-11 06:40:08 +07:00
|
|
|
# ttyUSB1 should always be called pda with two additional symlinks
|
2004-01-13 16:35:55 +07:00
|
|
|
KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
|
2003-10-21 13:33:54 +07:00
|
|
|
|
2003-12-11 06:40:08 +07:00
|
|
|
# multiple USB webcams with symlinks to be called webcam0, webcam1, ...
|
2004-02-17 16:27:01 +07:00
|
|
|
BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n"
|
2003-10-20 11:59:45 +07:00
|
|
|
.fi
|
2003-10-22 11:46:00 +07:00
|
|
|
.P
|
|
|
|
Permissions and ownership for the created device files may specified at
|
2003-12-03 16:09:48 +07:00
|
|
|
.I /etc/udev/udev.permissions
|
2003-12-10 15:30:43 +07:00
|
|
|
or specified by the
|
2003-12-03 16:09:48 +07:00
|
|
|
.I udev_permission
|
2003-12-10 15:30:43 +07:00
|
|
|
value in the
|
2003-12-03 16:09:48 +07:00
|
|
|
.I /etc/udev/udev.conf
|
|
|
|
file.
|
2003-10-22 11:46:00 +07:00
|
|
|
.br
|
2003-11-25 13:27:25 +07:00
|
|
|
Every line lists a device name followed by owner, group and permission
|
2003-12-04 10:26:02 +07:00
|
|
|
mode. All values are separated by colons. The name field may contain a
|
2003-12-05 10:22:53 +07:00
|
|
|
pattern to apply the values to a whole class of devices.
|
2003-10-22 11:46:00 +07:00
|
|
|
.sp
|
2003-12-10 15:30:43 +07:00
|
|
|
.RI "A sample " udev.permissions " might look like this:"
|
2003-10-22 11:46:00 +07:00
|
|
|
.sp
|
|
|
|
.nf
|
|
|
|
#name:user:group:mode
|
2003-11-25 13:27:25 +07:00
|
|
|
input/*:root:root:644
|
2003-11-21 09:36:55 +07:00
|
|
|
ttyUSB1:0:8:0660
|
2003-11-25 13:27:25 +07:00
|
|
|
video*:root:video:0660
|
2003-10-22 11:46:00 +07:00
|
|
|
dsp1:::0666
|
|
|
|
.fi
|
2003-12-04 10:26:02 +07:00
|
|
|
.P
|
|
|
|
A number of different fields in the above configuration files support a simple
|
2003-12-05 10:22:53 +07:00
|
|
|
form of shell style pattern matching. It supports the following pattern characters:
|
2003-12-04 10:26:02 +07: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 10:22:53 +07: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 14:29:17 +07:00
|
|
|
.SH "FILES"
|
|
|
|
.nf
|
|
|
|
/sbin/udev udev program
|
2003-12-03 16:09:48 +07:00
|
|
|
/etc/udev/* udev config files
|
2003-10-17 14:29:17 +07:00
|
|
|
/etc/hotplug.d/default/udev.hotplug hotplug symlink to udev program
|
|
|
|
.fi
|
|
|
|
.LP
|
|
|
|
.SH "SEE ALSO"
|
2004-01-27 10:56:43 +07:00
|
|
|
.BR udevinfo (8),
|
2004-02-27 10:39:33 +07:00
|
|
|
.BR udevd (8),
|
2003-10-22 11:46:00 +07:00
|
|
|
.BR hotplug (8)
|
2003-10-17 14:29:17 +07:00
|
|
|
.PP
|
|
|
|
The
|
|
|
|
.I http://linux-hotplug.sourceforge.net/
|
|
|
|
web site.
|
|
|
|
.SH AUTHORS
|
2003-11-12 18:48:04 +07:00
|
|
|
.B udev
|
|
|
|
was developed by Greg Kroah-Hartman <greg@kroah.com> with much help from
|
2003-12-04 10:27:24 +07:00
|
|
|
Dan Stekloff <dsteklof@us.ibm.com>, Kay Sievers <kay.sievers@vrfy.org>, and
|
|
|
|
many others.
|