]> git.ipfire.org Git - thirdparty/systemd.git/blame - udev.8.in
[PATCH] compatibility symlinks for udev
[thirdparty/systemd.git] / udev.8.in
CommitLineData
d3db5e5e 1.TH UDEV 8 "October 2003" "" "Linux Administrator's Manual"
04db8c9e 2.SH NAME
d3db5e5e 3udev \- Linux configurable dynamic device naming support
04db8c9e 4.SH SYNOPSIS
eb13ff87 5.BI udev " hotplug-subsystem"
bef370d6
KS
6.P
7The environment must provide the following variables:
8.TP
9.B ACTION
10.IR add " or " remove
11signifies the connection or disconnection of a device.
12.TP
13.B DEVPATH
14The sysfs devpath of the device without the mountpoint but a leading slash.
15.P
b86f56ff 16Additional optional environment variables:
bef370d6
KS
17.TP
18.B UDEV_CONFIG_FILE
19Overrides the default location of the
20.B udev
21config file.
22.TP
23.B UDEV_NO_SLEEP
24The default behavior of
25.B udev
fc238cff 26is to wait until all the sysfs files of the device chain are populated. If set,
bef370d6 27.B udev
a3fa7908 28will continue, regardless of the state of the device representation.
fc238cff
KS
29.TP
30.B UDEV_NO_DEVD
31The default behavior of
32.B udev
33is to execute programs in the
34.I /etc/dev.d/
35directory after device handling. If set,
36.B udev
37will skip this step.
04db8c9e
GKH
38.SH "DESCRIPTION"
39.B udev
fc238cff
KS
40provides a dynamic device directory containing only the files for actually
41present devices. It creates or removes device node files usually located in
42the /dev directory, or it renames network interfaces.
43.br
44
eb13ff87 45.P
d3db5e5e 46As part of the
47.B hotplug
48subsystem,
49.B udev
eb13ff87 50is executed if a kernel device is added or removed from the system.
d3db5e5e 51On device creation,
52.B udev
eb13ff87 53reads the sysfs directory of the given device to collect device attributes
d3db5e5e 54like label, serial number or bus device number.
b86f56ff 55These attributes may be used as keys to determine a
fc238cff 56unique name for the device.
da86c7f0
KS
57.B udev
58maintains a database for devices present on the system.
eb13ff87 59.br
d3db5e5e 60On device removal,
61.B udev
4bd46ac7 62queries its database for the name of the device file to be deleted.
eb13ff87 63.SH "CONFIGURATION"
83fa40fc
KS
64All
65.B udev
66configuration files consist of a set of lines of text. All empty
b86f56ff 67lines and lines beginning with a '#' will be ignored.
4865de44
GKH
68.P
69
da86c7f0 70.B udev
4865de44 71expects its main configuration file at
167a27e7 72.IR /etc/udev/udev.conf .
b86f56ff
KS
73The file consists of a set of variables and values allowing the user to
74override default udev values. The following variables can be overridden
75in this file:
4865de44
GKH
76.TP
77.B udev_root
b86f56ff
KS
78Indicates where to place the device nodes in the filesystem. The default
79value is
aef6bb13 80.IR @udevdir@/ .
4865de44
GKH
81.TP
82.B udev_db
b86f56ff 83The name and location of the udev database. The default value is
326e0876 84.IR @udevdir@/.udev.tdb .
4865de44
GKH
85.TP
86.B udev_rules
a5327755
KS
87The name of the udev rules file or directory to look for files with the suffix
88.IR .rules .
89All rule files are read in lexical order. The default value is
aef6bb13 90.IR /etc/udev/rules.d/ .
4865de44
GKH
91.TP
92.B udev_permissions
a5327755
KS
93The name of the udev permission file or directory to look for files with the
94suffix
95.IR .permissions .
96All permission files are read in lexical order. The default value is
aef6bb13 97.IR /etc/udev/permissions.d/ .
4865de44 98.TP
0c040e8d 99.B udev_log
a5327755 100The switch, if udev logs some information for every device handled.
fc238cff 101The default value is
167a27e7 102.IR yes .
0c040e8d 103.TP
4865de44 104.B default_mode
a5327755
KS
105The default mode for all nodes not explicitely matching in the permissions
106file. The default value is
167a27e7 107.IR 0666 .
765cbd97
KS
108.TP
109.B default_owner
a5327755
KS
110The default owner for all nodes not explicitely matching in the permissions
111file. The default value is
167a27e7 112.IR root .
765cbd97
KS
113.TP
114.B default_group
a5327755
KS
115The default group for all nodes not explicitely matching in the permissions
116file. The default value is
167a27e7 117.IR root .
d3db5e5e 118.br
4865de44 119.P
c6c13c31 120.RI "A sample " udev.conf " might look like this:
4865de44
GKH
121.sp
122.nf
b86f56ff 123# udev_root - where to place the device nodes in the filesystem
aef6bb13 124udev_root="/udev"
4865de44 125
b86f56ff 126# udev_db - The name and location of the udev database
aef6bb13 127udev_db="/udev/.udev.tdb"
4865de44 128
a5327755
KS
129# udev_rules - The name of the udev rules file or directory to look
130 for files with the suffix .rules
131udev_rules="/etc/udev/rules.d/"
4865de44 132
aef6bb13
KS
133# udev_permissions - The name of the udev permission file or directory
134 to look for files with the suffix .permissions
4865de44
GKH
135udev_permissions="/etc/udev/udev.permissions"
136
0c040e8d
GKH
137# udev_log - set to "yes" if you want logging, else "no"
138udev_log="yes"
139
b86f56ff
KS
140# default_mode - set the default mode for all nodes not
141# explicitely matching in the permissions file
4865de44 142default_mode="0666"
765cbd97 143
b86f56ff
KS
144# default_owner - set the default owner for all nodes not
145# explicitely matching in the permissions file
765cbd97
KS
146default_owner="root"
147
b86f56ff
KS
148# default_group - set the default group for all nodes not
149# explicitely matching in the permissions file
765cbd97 150default_group="root"
4865de44
GKH
151.fi
152.P
aef6bb13
KS
153The rules for device naming, are read from the files located in the
154.I /etc/udev/rules.d/
155directory, or at the location specified by the
4865de44 156.I udev_rules
d94df232 157value in the
4865de44
GKH
158.I /etc/udev/udev.conf
159file.
aef6bb13 160.br
4bd46ac7 161Every line in the rules file defines the mapping between device attributes
fc238cff
KS
162and the device name. One or more keys are specified to match a rule with
163the current device. If all keys are matching, the rule will be applied and
164the name is used to name the device file or the network interface.
c6c13c31 165.br
4bd46ac7 166If no matching rule is found, the default kernel device name is used.
3370fb21 167.P
c5828665 168Every rule consists of a list of comma separated fields:
eb13ff87 169.sp
311e9ae6 170.IR "key " ,[ "key " ,...] " name " [, " symlink" ]
eb13ff87 171.sp
b86f56ff 172where fields are:
d3db5e5e 173.TP
e15b5ed5 174.B BUS
4bd46ac7
KS
175Match the bus type of the device.
176(The sysfs device bus must be able to be determined by a "device" symlink.)
177.TP
178.B KERNEL
179Match the kernel device name.
180.TP
181.B ID
182Match the device number on the bus, like PCI bus id.
183.TP
184.B PLACE
185Match the topological position on bus, like physical port of USB device
186.TP
16378373 187.BI SYSFS{ filename }
4bd46ac7
KS
188Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID
189or file system label. Up to 5 different sysfs files can be checked, with
b86f56ff 190all of the values being required to match the rule.
d5f91372
KS
191.br
192Trailing whitespace characters in the sysfs attribute value are ignored, if
193the key doesn't have any trailing whitespace characters by itself.
4bd46ac7
KS
194.TP
195.B PROGRAM
196Call external program. This key is valid if the program returns successful.
dde05ccb 197The environment variables of
bef370d6
KS
198.B udev
199are also available for the program.
200.br
b86f56ff 201The string returned by the program may be additionally matched with the
4bd46ac7
KS
202.B RESULT
203key.
204.TP
205.B RESULT
206Match the returned string of the last
207.B PROGRAM
b86f56ff 208call. This key may be used in any following rule after a
4bd46ac7
KS
209.B PROGRAM
210call.
311e9ae6 211.TP
16378373 212.B NAME
fc238cff
KS
213The name of the node to be created, or the name, the network interface
214should be renamed to.
311e9ae6
KS
215.br
216If given with the attribute
16378373 217.BR NAME{ all_partitions }
311e9ae6 218it will create all 15 partitions of a blockdevice.
16378373 219This may be useful for removable media devices.
311e9ae6
KS
220.TP
221.B SYMLINK
222The name of a symlink targeting the node. Multiple symlinks may be
223specified by separating the names by the space character.
2bd07cf2
KS
224.br
225If both the name and the symlink fields are omitted or its
226values empty, the device will be ignored and no node will be created.
227.br
228If only the symlink field is given and the name field is omitted,
229the rule will not be applied immediatly, but the symlink field is added
230to the symlink list of the rule which will create the node.
231This makes it possible to specify additional symlinks in a possibly
232separate rules file, while the device nodes are maintained by the
233distribution provided rules file.
e41016d3
KS
234.TP
235.B OWNER, GROUP, MODE
236The permissions for this device. Every specified value overwrites the value
237given in the permissions file.
16378373 238.P
c6c13c31 239.RB "The " NAME " ," SYMLINK " and " PROGRAM
83fa40fc 240fields support simple printf-like string substitution:
4b710f03
KS
241.TP
242.B %n
c6c13c31 243The "kernel number" of the device.
63ead27c 244For example, 'sda3' has a "kernel number" of '3'.
4b710f03 245.TP
170ae44e
GKH
246.B %k
247The "kernel name" for the device.
248.TP
4b710f03 249.B %M
c6c13c31 250The kernel major number for the device.
4b710f03
KS
251.TP
252.B %m
c6c13c31 253The kernel minor number for the device.
4b710f03
KS
254.TP
255.B %b
c6c13c31 256The bus id for the device.
67922099
GKH
257.TP
258.B %c
b86f56ff 259The string returned from the execution of
e68faf51 260.B PROGRAM
e68faf51
KS
261(This does not work within the
262.B PROGRAM
263field for the obvious reason.)
ad63031e 264.br
b86f56ff 265A single part of the string, separated by a space character
c5828665 266may be selected by specifying the part number as an attribute:
558f80ba
KS
267.BI %c{ N }
268If the number is followed by the + char this part plus
269all remaining parts of the result string are substituted:
270.BI %c{ N+ }
ad63031e
KS
271.TP
272.BI %s{ filename }
273The content of a sysfs attribute.
36043f84 274.TP
0a8dd7f3
DZ
275.B %e
276If a device node already exists with the name, the smallest positive
277decimal integer N is substituted such that the resulting name doesn't
278match an existing device node. Otherwise nothing is substituted. This
279can be used to create compatibility symlinks and enumerate devices of
280the same type originating from different kernel subsystems.
281.TP
b6864b4b 282.B %%
63ead27c
KS
283The '%' character itself.
284.P
285The count of charcters to insert may be limited by specifying
286the format length value. For example, '%3s{file}' will only insert
287the first three characters of the sysfs attribute.
4b710f03 288.P
c6c13c31 289.RI "A sample " udev.rules " might look like this:"
eb13ff87 290.sp
d3db5e5e 291.nf
67922099 292# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
4bd46ac7 293BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1"
67922099 294
d3db5e5e 295# USB printer to be called lp_color
16378373 296BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_color"
d3db5e5e 297
b86f56ff 298# SCSI disk with a specific vendor and model number will be called boot
16378373 299BUS="scsi", SYSFS{vendor}="IBM", SYSFS{model}="ST336", NAME="boot%n"
aa9c2a1e 300
d3db5e5e 301# sound card with PCI bus id 00:0b.0 to be called dsp
4bd46ac7 302BUS="pci", ID="00:0b.0", NAME="dsp"
d3db5e5e 303
304# USB mouse at third port of the second hub to be called mouse1
4bd46ac7 305BUS="usb", PLACE="2.3", NAME="mouse1"
d3db5e5e 306
26004fcc 307# ttyUSB1 should always be called pda with two additional symlinks
4bd46ac7 308KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
3370fb21 309
26004fcc 310# multiple USB webcams with symlinks to be called webcam0, webcam1, ...
16378373 311BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n"
0a8dd7f3
DZ
312
313# grouping of optical drives from multiple kernel subsystems
314KERNEL="sr*", NAME="%k", SYMLINK="cdrom%e"
315KERNEL="scd*", NAME="%k", SYMLINK="cdrom%e"
316KERNEL="pcd*", NAME="%k", SYMLINK="cdrom%e"
317KERNEL="hd[a-z]", PROGRAM="/bin/cat /proc/ide/%k/media", RESULT="cdrom",
318 NAME="%k", SYMLINK="cdrom%e"
319
d3db5e5e 320.fi
eb13ff87 321.P
aef6bb13
KS
322The permissions and ownership of the created device file is read from
323the files located in the
324.I /etc/udev/permissions.d/
325directory, or at the location specified by the
4865de44 326.I udev_permission
c6c13c31 327value in the
4865de44
GKH
328.I /etc/udev/udev.conf
329file.
eb13ff87 330.br
5b8ba50a 331Every line lists a device name followed by owner, group and permission
07d7cfd1 332mode. All values are separated by colons. The name field may contain a
83fa40fc 333pattern to apply the values to a whole class of devices.
eb13ff87 334.sp
c6c13c31 335.RI "A sample " udev.permissions " might look like this:"
eb13ff87
KS
336.sp
337.nf
338#name:user:group:mode
5b8ba50a 339input/*:root:root:644
d0a4a110 340ttyUSB1:0:8:0660
5b8ba50a 341video*:root:video:0660
eb13ff87
KS
342dsp1:::0666
343.fi
07d7cfd1 344.P
a6f01502 345The value
346.I $local
b86f56ff 347can be used instead of a specific username. In that case, udev will determine
a6f01502 348the current local user at the time of device node creation and substitute
349that username as the owner of the new device node. This is useful, for
350example, to let hot-plugged devices, such as cameras, be owned by the user at
351the current console. Note that if no user is currently logged in, or if udev
352otherwise fails to determine a current user, the
353.I default_owner
354value is used in lieu.
355.P
07d7cfd1 356A number of different fields in the above configuration files support a simple
83fa40fc 357form of shell style pattern matching. It supports the following pattern characters:
07d7cfd1
GKH
358.TP
359.B *
360Matches zero, one, or more characters.
361.TP
362.B ?
363Matches any single character, but does not match zero characters.
364.TP
365.B [ ]
366Matches any single character specified within the brackets. For example, the
367pattern string "tty[SR]" would match either "ttyS" or "ttyR". Ranges are also
758f236f
MI
368supported within this match with the '\-' character. For example, to match on
369the range of all digits, the pattern [0\-9] would be used. If the first character
b86f56ff 370following the '[' is a '!', any character not enclosed is matched.
fc238cff
KS
371.P
372After device node creation, removal, or network device renaming,
373.B udev
374executes the programs in the directory tree under
375.IR /etc/dev.d/ .
376The name of a program must end with
377.I .dev
378suffix, to be recognized.
379.br
380In addition to the hotplug environment variables,
381.B DEVNAME
382is exported to make the name of the created node, or the name the network
383device is renamed to, available to the executed program. The programs in every
384directory are sorted in lexical order, while the directories are searched in
385the following order:
386.sp
387.nf
388/etc/dev.d/$(DEVNAME)/*.dev
389/etc/dev.d/$(SUBSYSTEM)/*.dev
390/etc/dev.d/default/*.dev
391.fi
04db8c9e
GKH
392.SH "FILES"
393.nf
04db8c9e 394/sbin/udev udev program
4865de44 395/etc/udev/* udev config files
04db8c9e 396/etc/hotplug.d/default/udev.hotplug hotplug symlink to udev program
fc238cff 397/etc/dev.d/* programs invoked by udev
04db8c9e
GKH
398.fi
399.LP
400.SH "SEE ALSO"
05c0c9da 401.BR udevinfo (8),
bef370d6 402.BR udevd (8),
eb13ff87 403.BR hotplug (8)
04db8c9e
GKH
404.PP
405The
758f236f 406.I http://linux\-hotplug.sourceforge.net/
04db8c9e
GKH
407web site.
408.SH AUTHORS
da86c7f0
KS
409.B udev
410was developed by Greg Kroah-Hartman <greg@kroah.com> with much help from
fc1f0d43
GKH
411Dan Stekloff <dsteklof@us.ibm.com>, Kay Sievers <kay.sievers@vrfy.org>, and
412many others.