chiark / gitweb /
[PATCH] udev - reverse user query options
[elogind.git] / udev.8
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 .br
7 .B udev
8 .RI "[-q " query_type " -p " sysfs_path "] [-drVh]"
9 .SH "DESCRIPTION"
10 .B udev
11 creates or removes device node files usually located in the /dev directory.
12 Its goal is to provide a dynamic device directory that contains only the files
13 for devices that are actually present.
14 .P
15 As part of the
16 .B hotplug
17 subsystem,
18 .B udev
19 is executed if a kernel device is added or removed from the system.
20 On device creation,
21 .B udev
22 reads the sysfs directory of the given device to collect device attributes
23 like label, serial number or bus device number.
24 These attributes may used as keys to determine a
25 unique name for device file creation.
26 .B udev
27 maintains a database for devices present on the system.
28 .br
29 On device removal,
30 .B udev
31 queries its database for the name of the device file to be deleted.
32 .SH "OPTIONS"
33 .B udev
34 normally is called by
35 .B hotplug
36 with the subsystem as argument and various environment variables set.
37 .br
38 It may also called with the following options:
39 .TP
40 .B -V
41 Print the version information.
42 .TP
43 .B -r
44 Print the the
45 .B udev_root
46 directory. When used in conjunction with a query for the node name, the
47 .B udev_root
48 will be prepended.
49 .TP
50 .BI -q " query_type"
51 Query the database for specified value of a created device node.
52 Valid types are:
53 .BR name ", " symlink ", " owner " , " group " or " path.
54 .TP
55 .BI -p " sysfs_path"
56 Specify the sysfs path of the device to query.
57 .TP
58 .BI -n " name"
59 Specify the name of the node for the device to query.
60 .TP
61 .B -d
62 Dump the whole database.
63 .TP
64 .B -h
65 Print help text.
66 .SH "CONFIGURATION"
67 All
68 .B udev
69 configuration files consist of a set of lines of text.  All empty
70 lines, and lines beginning with a '#' will be ignored.
71 .P
72
73 .B udev
74 expects its main configuration file at
75 .I /etc/udev/udev.conf.
76 The file consists of a set of variables and values that allow the user to
77 override default udev values.  The current set of variables that can be
78 overridden in this file is:
79 .TP
80 .B udev_root
81 This is the where in the filesystem to place the device nodes.  The default
82 value for this is
83 .I /udev/
84 .TP
85 .B udev_db
86 The name and location of the udev database.  The default value for this is
87 .I /udev/.udev.tdb
88 .TP
89 .B udev_rules
90 This is the location of the udev rules file.  The default value for this is
91 .I /etc/udev/udev.rules
92 .TP
93 .B udev_permissions
94 This is the location of the udev permission file.  The default value for this is
95 .I /etc/udev/udev.permissions
96 .TP
97 .B default_mode
98 This is the default mode for all nodes that have no explicit match in the
99 permissions file.  The default value for this is
100 .I 0666
101 .br
102 .P
103 .RI "A sample " udev.conf " might look like this:
104 .sp
105 .nf
106 # udev_root - where in the filesystem to place the device nodes
107 udev_root="/udev/"
108
109 # udev_db - The name and location of the udev database.
110 udev_db="/udev/.udev.tdb"
111
112 # udev_rules - The name and location of the udev rules file
113 udev_rules="/etc/udev/udev.rules"
114
115 # udev_permissions - The name and location of the udev permission file
116 udev_permissions="/etc/udev/udev.permissions"
117
118 # default_mode - set the default mode for all nodes that have no
119 #                explicit match in the permissions file
120 default_mode="0666"
121 .fi
122 .P
123 The rules for udev to use when naming devices may specified at
124 .I /etc/udev/udev.rules
125 or specified by the
126 .I udev_rules
127 value in the
128 .I /etc/udev/udev.conf
129 file.
130 .P
131 Every line in the rules file defines the mapping between device attributes
132 and the device file name. One ore more keys are specified to match a rule
133 with the current device. If all keys are matching, the rule will be applied
134 and the name is used for the device node. One or more optional symlinks
135 targeting the node may be specified.
136 .br
137 If no matching rule is found, the default kernel device name is used.
138 .P
139 The line format is:
140 .sp
141 .I key,[key,...] name [, symlink]
142 .sp
143 where keys are:
144 .TP
145 .B BUS
146 Match the bus type of the device.
147 (The sysfs device bus must be able to be determined by a "device" symlink.)
148 .TP
149 .B KERNEL
150 Match the kernel device name.
151 .TP
152 .B ID
153 Match the device number on the bus, like PCI bus id.
154 .TP
155 .B PLACE
156 Match the topological position on bus, like physical port of USB device
157 .TP
158 .BI SYSFS_ filename
159 Match sysfs device attribute like label, vendor, USB serial number, SCSI UUID
160 or file system label.  Up to 5 different sysfs files can be checked, with
161 all of the values being required in order to match the rule.
162 .TP
163 .B PROGRAM
164 Call external program. This key is valid if the program returns successful.
165 The string returned by the program may additionally matched with the
166 .B RESULT
167 key.
168 .TP
169 .B RESULT
170 Match the returned string of the last
171 .B PROGRAM
172 call. This key may used in any following rule after a
173 .B PROGRAM
174 call.
175 .P
176 .RB "The " NAME " ," SYMLINK " and " PROGRAM
177 fields support simple printf-like string substitution:
178 .TP
179 .B %n
180 The "kernel number" of the device.
181 for example, 'sda3' has a "kernel number" of '3'
182 .TP
183 .B %k
184 The "kernel name" for the device.
185 .TP
186 .B %M
187 The kernel major number for the device.
188 .TP
189 .B %m
190 The kernel minor number for the device.
191 .TP
192 .B %b
193 The bus id for the device.
194 .TP
195 .B %c
196 The
197 .B PROGRAM
198 returned string.
199 (This does not work within the
200 .B PROGRAM
201 field for the obvious reason.)
202 .TP
203 .B %%
204 The '%' char itself.
205 .P
206 .RI "A sample " udev.rules " might look like this:"
207 .sp
208 .nf
209 # if /sbin/scsi_id returns "OEM 0815" device will be called disk1
210 BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1"
211
212 # USB printer to be called lp_color
213 BUS="usb", SYSFS_serial="W09090207101241330", NAME="lp_color"
214
215 # SCSI disk with a specific vendor and model number is to be called boot
216 BUS="scsi", SYSFS_vendor="IBM", SYSFS_model="ST336", NAME="boot%n"
217
218 # sound card with PCI bus id 00:0b.0 to be called dsp
219 BUS="pci", ID="00:0b.0", NAME="dsp"
220
221 # USB mouse at third port of the second hub to be called mouse1
222 BUS="usb", PLACE="2.3", NAME="mouse1"
223
224 # ttyUSB1 should always be called pda with two additional symlinks
225 KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
226
227 # multiple USB webcams with symlinks to be called webcam0, webcam1, ...
228 BUS="usb", SYSFS_model="XV3", NAME="video%n", SYMLINK="webcam%n"
229 .fi
230 .P
231 Permissions and ownership for the created device files may specified at
232 .I /etc/udev/udev.permissions
233 or specified by the
234 .I udev_permission
235 value in the
236 .I /etc/udev/udev.conf
237 file.
238 .br
239 Every line lists a device name followed by owner, group and permission
240 mode. All values are separated by colons. The name field may contain a
241 pattern to apply the values to a whole class of devices.
242 .br
243 If
244 .B udev
245 was built using klibc or is used before the user database is accessible (e.g.
246 .BR initrd "(4)), only numeric owner and group values may be used."
247 .sp
248 .RI "A sample " udev.permissions " might look like this:"
249 .sp
250 .nf
251 #name:user:group:mode
252 input/*:root:root:644
253 ttyUSB1:0:8:0660
254 video*:root:video:0660
255 dsp1:::0666
256 .fi
257 .P
258 A number of different fields in the above configuration files support a simple
259 form of shell style pattern matching. It supports the following pattern characters:
260 .TP
261 .B *
262 Matches zero, one, or more characters.
263 .TP
264 .B ?
265 Matches any single character, but does not match zero characters.
266 .TP
267 .B [ ]
268 Matches any single character specified within the brackets. For example, the
269 pattern string "tty[SR]" would match either "ttyS" or "ttyR".  Ranges are also
270 supported within this match with the '-' character.  For example, to match on
271 the range of all digits, the pattern [0-9] would be used. If the first character
272 following the '[' is a '!' then any character not enclosed is matched.
273 .SH "FILES"
274 .nf
275 /sbin/udev                           udev program
276 /etc/udev/*                          udev config files
277 /etc/hotplug.d/default/udev.hotplug  hotplug symlink to udev program
278 .fi
279 .LP
280 .SH "SEE ALSO"
281 .BR hotplug (8)
282 .PP
283 The
284 .I http://linux-hotplug.sourceforge.net/
285 web site.
286 .SH AUTHORS
287 .B udev
288 was developed by Greg Kroah-Hartman <greg@kroah.com> with much help from
289 Dan Stekloff <dsteklof@us.ibm.com>, Kay Sievers <kay.sievers@vrfy.org>, and
290 many others.