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