3
.\" Author: [see the "AUTHOR" section]
4
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
10
.TH "UDEV" "7" "11/10/2009" "udev" "udev"
11
.\" -----------------------------------------------------------------
12
.\" * set default formatting
13
.\" -----------------------------------------------------------------
14
.\" disable hyphenation
16
.\" disable justification (adjust text to left margin only)
18
.\" -----------------------------------------------------------------
19
.\" * MAIN CONTENT STARTS HERE *
20
.\" -----------------------------------------------------------------
22
udev \- dynamic device management
25
udev provides a dynamic device directory containing only the files for actually present devices\&. It creates or removes device node files in the
27
directory, or it renames network interfaces\&.
31
and receives uevents directly from the kernel if a device is added or removed from the system\&.
33
If udev receives a device event, it matches its configured rules against the available device attributes provided in sysfs to identify the device\&. Rules that match may provide additional device information or specify a device node name and multiple symlink names and instruct udev to run additional programs as part of the device event handling\&.
36
udev configuration files are placed in
39
/lib/udev/\&. All empty lines, or lines beginning with \'#\' will be ignored\&.
40
.SS "Configuration file"
42
udev expects its main configuration file at
43
/etc/udev/udev\&.conf\&. It consists of a set of variables allowing the user to override default udev values\&. The following variables can be set:
47
Specifies where to place the device nodes in the filesystem\&. The default value is
53
The logging priority\&. Valid values are the numerical syslog priorities or their textual representations:
61
The udev rules are read from the files located in the default rules directory
62
/lib/udev/rules\&.d/, the custom rules directory
64
and the temporary rules directory
65
/dev/\&.udev/rules\&.d/\&. All rule files are sorted and processed in lexical order, regardless in which of these directories they live\&.
67
Rule files are required to have a unique name, duplicate file names are ignored\&. Files in
69
have precedence over files with the same name in
70
/lib/udev/rules\&.d/\&. This can be used to ignore a default rules file if needed\&.
72
Every line in the rules file contains at least one key value pair\&. There are two kind of keys, match and assignment keys\&. If all match keys are matching against its value, the rule gets applied and the assign keys get the specified value assigned\&.
74
A matching rule may specify the name of the device node, add a symlink pointing to the node, or run a specified program as part of the event handling\&. If no matching rule is found, the default device node name is used\&.
76
A rule consists of a list of one or more key value pairs separated by a comma\&. Each key has a distinct operation, depending on the used operator\&. Valid operators are:
80
Compare for equality\&.
85
Compare for inequality\&.
90
Assign a value to a key\&. Keys that represent a list, are reset and only this single value is assigned\&.
95
Add the value to a key that holds a list of entries\&.
100
Assign a value to a key finally; disallow any later changes, which may be used to prevent changes by any later rules\&.
103
The following key names can be used to match against device properties\&. Some of the keys also match against properties of the parent devices in sysfs, not only the device that has generated the event\&. If multiple keys that match a parent device are specified in a single rule, all these keys must match at one and the same parent device\&.
107
Match the name of the event action\&.
112
Match the devpath of the event device\&.
117
Match the name of the event device\&.
122
Match the name of the node or network interface\&. It can be used once the NAME key has been set in one of the preceding rules\&.
127
Match the name of a symlink targeting the node\&. It can be used once a SYMLINK key has been set in one of the preceding rules\&. There may be multiple symlinks; only one needs to match\&.
132
Match the subsystem of the event device\&.
137
Match the driver name of the event device\&. Only set for devices which are bound to a driver at the time the event is generated\&.
140
\fBATTR{\fR\fB\fIfilename\fR\fR\fB}\fR
142
Match sysfs attribute values of the event device\&. Trailing whitespace in the attribute values is ignored, if the specified match value does not contain trailing whitespace itself\&.
147
Search the devpath upwards for a matching device name\&.
152
Search the devpath upwards for a matching device subsystem name\&.
157
Search the devpath upwards for a matching device driver name\&.
160
\fBATTRS{\fR\fB\fIfilename\fR\fR\fB}\fR
162
Search the devpath upwards for a device with matching sysfs attribute values\&. If multiple
164
matches are specified, all of them must match on the same device\&. Trailing whitespace in the attribute values is ignored, if the specified match value does not contain trailing whitespace itself\&.
167
\fBENV{\fR\fB\fIkey\fR\fR\fB}\fR
169
Match against a device property value\&.
172
\fBTEST{\fR\fB\fIoctal mode mask\fR\fR\fB}\fR
174
Test the existence of a file\&. An octal mode mask can be specified if needed\&.
179
Execute a program\&. The key is true, if the program returns successfully\&. The device properties are made available to the executed program in the environment\&. The program\'s output printed to stdout, is available in the RESULT key\&.
184
Match the returned string of the last PROGRAM call\&. This key can be used in the same or in any later rule after a PROGRAM call\&.
187
Most of the fields support a shell style pattern matching\&. The following pattern characters are supported:
191
Matches zero, or any number of characters\&.
196
Matches any single character\&.
201
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 the range of all digits, the pattern [0\-9] would be used\&. If the first character following the \'[\' is a \'!\', any characters not enclosed are matched\&.
204
The following keys can get values assigned:
208
The name of the node to be created, or the name the network interface should be renamed to\&.
213
The name of a symlink targeting the node\&. Every matching rule will add this value to the list of symlinks to be created along with the device node\&. Multiple symlinks may be specified by separating the names by the space character\&.
216
\fBOWNER, GROUP, MODE\fR
218
The permissions for the device node\&. Every specified value overwrites the compiled\-in default value\&.
221
\fBATTR{\fR\fB\fIkey\fR\fR\fB}\fR
223
The value that should be written to a sysfs attribute of the event device\&.
226
\fBENV{\fR\fB\fIkey\fR\fR\fB}\fR
228
Set a device property value\&. Property names with a leading \'\&.\' are not stored in the database or exported to external tool or events\&.
233
Add a program to the list of programs to be executed for a specific device\&. This can only be used for very short running tasks\&. Running an event process for a long period of time may block all further events for this or a dependent device\&. Long running tasks need to be immediately detached from the event process itself\&. If the option
234
\fBRUN{\fR\fB\fIfail_event_on_error\fR\fR\fB}\fR
235
is specified, and the executed program returns non\-zero, the event will be marked as failed for a possible later handling\&.
237
If the specified string starts with
238
\fBsocket:\fR\fB\fIpath\fR\fR, all current event values will be passed to the specified socket, as a message in the same format the kernel sends an uevent\&. If the first character of the specified path is an @ character, an abstract namespace socket is used, instead of an existing socket file\&.
243
Named label where a GOTO can jump to\&.
248
Jumps to the next LABEL with a matching name
251
\fBIMPORT{\fR\fB\fItype\fR\fR\fB}\fR
253
Import a set of variables as device properties, depending on
258
Execute an external program specified as the assigned value and import its output, which must be in environment key format\&.
263
Import a text file specified as the assigned value, which must be in environment key format\&.
268
Import the stored keys from the parent device by reading the database entry of the parent device\&. The value assigned to
270
is used as a filter of key names to import (with the same shell\-style pattern matching used for comparisons)\&.
273
If no option is given, udev will choose between
277
based on the executable bit of the file permissions\&.
282
Wait for a file to become available\&.
287
Rule and device options:
291
Ignore this event completely\&.
296
Do not remove the device node when the device goes away\&. This may be useful as a workaround for broken device drivers\&.
299
\fBlink_priority=\fR\fB\fIvalue\fR\fR
301
Specify the priority of the created symlinks\&. Devices with higher priorities overwrite existing symlinks of other devices\&. The default is 0\&.
306
Create the device nodes for all available partitions of a block device\&. This may be useful for removable media devices where media changes are not detected\&.
311
Number of seconds an event will wait for operations to finish, before it will terminate itself\&.
314
\fBstring_escape=\fR\fB\fInone|replace\fR\fR
316
Usually control and other possibly unsafe characters are replaced in strings used for device naming\&. The mode of replacement can be specified with this option\&.
321
Watch the device node with inotify, when closed after being opened for writing, a change uevent will be synthesised\&.
334
fields support simple printf\-like string substitutions\&. The
336
format chars gets applied after all rules have been processed, right before the program is executed\&. It allows the use of device properties set by earlier matching rules\&. For all other fields, substitutions are applied while the individual rule is being processed\&. The available substitutions are:
338
\fB$kernel\fR, \fB%k\fR
340
The kernel name for this device\&.
343
\fB$number\fR, \fB%n\fR
345
The kernel number for this device\&. For example, \'sda3\' has kernel number of \'3\'
348
\fB$devpath\fR, \fB%p\fR
350
The devpath of the device\&.
355
The name of the device matched while searching the devpath upwards for
365
The driver name of the device matched while searching the devpath upwards for
373
\fB$attr{\fR\fB\fIfile\fR\fR\fB}\fR, \fB%s{\fR\fB\fIfile\fR\fR\fB}\fR
375
The value of a sysfs attribute found at the device, where all keys of the rule have matched\&. If the matching device does not have such an attribute, follow the chain of parent devices and use the value of the first attribute that matches\&. If the attribute is a symlink, the last element of the symlink target is returned as the value\&.
378
\fB$env{\fR\fB\fIkey\fR\fR\fB}\fR, \fB%E{\fR\fB\fIkey\fR\fR\fB}\fR
380
A device property value\&.
383
\fB$major\fR, \fB%M\fR
385
The kernel major number for the device\&.
388
\fB$minor\fR, \fB%m\fR
390
The kernel minor number for the device\&.
393
\fB$result\fR, \fB%c\fR
395
The string returned by the external program requested with PROGRAM\&. A single part of the string, separated by a space character may be selected by specifying the part number as an attribute:
396
\fB%c{N}\fR\&. If the number is followed by the \'+\' char this part plus all remaining parts of the result string are substituted:
400
\fB$parent\fR, \fB%P\fR
402
The node name of the parent device\&.
407
The current name of the device node\&. If not changed by a rule, it is the name of the kernel device\&.
412
The current list of symlinks, separated by a space character\&. The value is only set if an earlier rule assigned a value, or during a remove events\&.
415
\fB$root\fR, \fB%r\fR
417
The udev_root value\&.
422
The sysfs mount point\&.
425
\fB$tempnode\fR, \fB%N\fR
427
The name of a created temporary device node to provide access to the device from a external program before the real node is created\&.
432
The \'%\' character itself\&.
437
The \'$\' character itself\&.
441
Written by Greg Kroah\-Hartman
444
kay\&.sievers@vrfy\&.org\&. With much help from Dan Stekloff and many others\&.