]> git.ipfire.org Git - thirdparty/systemd.git/blame - NEWS
fix NAME= and OPTION+="string_escape=..." logic
[thirdparty/systemd.git] / NEWS
CommitLineData
705e1c7f
KS
1udev 138
2========
3
87702fa0
KS
4udev 137
5========
6Bugfixes.
7
8The udevadm test command has no longer a --force option, nodes and symlinks
9are always updated with a test run now.
10
5f03ed8a 11The udevd daemon can be started with --resolve-names=never to avoid all user
9032f119
SJR
12and group lookups (e.g. in cut-down systems) or --resolve-names=late to
13lookup user and groups every time events are handled.
5f03ed8a 14
3e18fb06
KS
15udev 136
16========
17Bugfixes.
18
1aa8fdf7 19We are currently merging the Ubuntu rules in the udev default rules,
67c89548 20and get one step closer to provide a common Linux /dev setup, regarding
1aa8fdf7 21device names, symlinks, and default device permissions. On udev startup,
67c89548 22we now expect the following groups to be resolvable to their ids with
1aa8fdf7
KS
23glibc's getgrnam():
24 disk, cdrom, floppy, tape, audio, video, lp, tty, dialout, kmem.
67c89548
KS
25LDAP setups need to make sure, that these groups are always resolvable at
26bootup, with only the rootfs mounted, and without network access available.
27
28Some systems may need to add some new, currently not used groups, or need
29to add some users to new groups, but the cost of this change is minimal,
30compared to the pain the current, rather random, differences between the
31various distributions cause for upstream projects and third-party vendors.
32
33In general, "normal" users who log into a machine should never be a member
34of any such group, but the device-access should be managed by dynamic ACLs,
35which get added and removed for the specific users on login/logout and
36session activity/inactivity. These groups are only provided for custom setups,
37and mainly system services, to allow proper privilege separation.
38A video-streaming daemon uid would be a member of "audio" and "video", to get
31a73307
KS
39access to the sound and video devices, but no "normal" user should ever belong
40to the "audio" group, because he could listen to the built-in microphone with
67c89548 41any ssh-session established from the other side of the world.
8553cf06 42
d4e0db3c
KS
43/dev/serial/by-{id,path}/ now contains links for ttyUSB devices,
44which do not depend on the kernel device name. As usual, unique
45devices - only a single one per product connected, or a real
46USB serial number in the device - are always found with the same
47name in the by-id/ directory.
5fadcc76 48Completely identical devices may overwrite their names in by-id/
d4e0db3c
KS
49and can only be found reliably in the by-path/ directory. Devices
50specified by by-path/ must not change their connection, like the
51USB port number they are plugged in, to keep their name.
52
67c89548
KS
53To support some advanced features, Linux 2.6.22 is the oldest supported
54version now. The kernel config with enabled SYSFS_DEPRECATED is no longer
55supported. Older kernels should still work, and devices nodes should be
56reliably created, but some rules and libudev will not work correctly because
57the old kernels do not provide the expected information or interfaces.
58
ae0f55cb
KS
59udev 135
60========
61Bugfixes.
62
63Fix for a possible segfault while swapping network interface names in udev
64versions 131-134.
65
44993482
KS
66udev 134
67========
6733f601
KS
68Bugfixes.
69
70The group "video" is part of the default rules now.
44993482 71
fc0d4bd4
KS
72udev 133
73========
d78c0b3a
KS
74Bugfix for kernels using SYSFS_DEPRECATED* option and finding parent
75block devices in some cases. No common distro uses this option anymore,
76and we do not get enough testing for this and recent udev versions. If
77this option is not needed to run some old distro with a new kernel,
78it should be disabled in the kernel config.
79
80Bugfix for the $links substitution variable, which may crash if no links
81are created. This should not happen in usual setups because we always
82create /dev/{block,char}/ links.
fc0d4bd4
KS
83
84The strings of the parsed rules, which are kept in memory, no longer
d78c0b3a
KS
85contain duplicate entries, or duplicate tails of strings. This, and the
86new rules parsing/matching code reduces the total in-memory size of
87a huge distro rule sets to 0.08 MB, compared to the 1.2MB of udev
88version 130.
fc0d4bd4
KS
89
90The export of DEVTYPE=disk/partition got removed from the default
d78c0b3a
KS
91rules. This value is available from the kernel. The pnp shell script
92modprobe hack is removed from the default rules. ACPI devices have _proper_
93modalias support and take care of the same functionality.
fc0d4bd4 94Installations which support old kernels, but install current default
4dfe61c9 95udev rules may want to add that to the compat rules file.
fc0d4bd4 96
510af2e9 97Libvolume_id now always probes for all known filesystems, and does not
4dfe61c9
KS
98stop at the first match. Some filesystems are marked as "exclusive probe",
99and if any other filesytem type matches at the same time, libvolume_id
d78c0b3a
KS
100will, by default, not return any probing result. This is intended to prevent
101mis-detection with conflicting left-over signatures found from earlier
102file system formats. That way, we no longer depend on the probe-order
103in case of multiple competing signatures. In some setups the kernel allows
104to mount a volume with just the old filesystem signature still in place.
105This may damage the new filesystem and cause data-loss, just by mounting
106it. Because volume_id can not decide which one the correct signature is,
107the wrong signatures need to be removed manually from the volume, or the
108volume needs to be reformatted, to enable filesystem detection and possible
109auto-mounting.
510af2e9 110
bfa9938c
KS
111udev 132
112========
bfa9938c
KS
113Fix segfault if compiled without optimization and dbg() does not get
114compiled out and uses variables which are not available.
115
2d9a1b1e
KS
116udev 131
117========
acae628f 118Bugfixes. (And maybe new bugs. :))
65807d09
KS
119
120The rule matching engine got converted from a rule list to a token
121array which reduced the in-memory rules representation of a full
acae628f
KS
122featured distros with thousends of udev rules from 1.2MB to 0.12 MB.
123Limits like 5 ENV and ATTR matches, and one single instance for most
124other keys per rule are gone.
65807d09
KS
125
126The NAME assignment is no longer special cased. If later rules assign
127a NAME value again, the former value will be overwritten. As usual
128for most other keys, the NAME value can be protected by doing a final
129assignment with NAME:="<value>".
130
acae628f
KS
131All udev code now uses libudev, which is also exported. The library
132is still under development, marked as experimental, and its interface
133may change as long as the DeviceKit integration is not finished.
134
135Many thanks to Alan Jenkins for his continuous help, and finding and
136optimizing some of the computing expensive parts.
2d9a1b1e 137
22c89d3f
KS
138udev 130
139========
140Bugfixes.
141
ec06a8dd
KS
142Kernel devices and device nodes are connected now by reverse indizes in
143/sys and /dev. A device number retrieved by a stat() or similar, the
144kernel device directory can be found by looking up:
145 /sys/dev/{block,char}/<maj>:<min>
146and the device node of the same device by looking up:
147 /dev/{block,char}/<maj>:<min>
148
f5001d24
KS
149udev 129
150========
714131f1
KS
151Fix recently introduced bug, which caused a compilation without large
152file support, where vol_id does not recognize raid signatures at the end
153of a volume.
154
155Firewire disks now create both, by-id/scsi-* and by-id/ieee-* links.
156Seems some kernel versions prevent the creation of the ieee-* links,
157so people used the scsi-* link which disappeared now.
158
159More libudev work. Almost all udevadm functionality comes from libudev
f5001d24
KS
160now.
161
d41b956e 162udevadm trigger has a new option --type, which allows to trigger events
8249e04e 163for "devices", for "subsystems", or "failed" devices. The old option
d41b956e
KS
164--retry-failed" still works, but is no longer mentioned in the man page.
165
2b725651
KS
166udev 128
167========
168Bugfixes.
169
170The udevadm info --device-id-of-file= output has changed to use
171the obvious format. Possible current users should use the --export
172option which is not affected.
173
55eb845c
KS
174The old udev commands symlinks to udevadm are not installed, if
175these symlinks are used, a warning is printed.
e4255f11 176
33a5cc29
KS
177udev 127
178========
179Bugfixes.
180
41ff8053
KS
181Optical drive's media is no longer probed for raid signatures,
182reading the end of the device causes some devices to malfunction.
183Also the offset of the last session found is used now to probe
184for the filesystem.
a689165b
KS
185
186The volume_id library got a major version number update to 1,
187some deprecated functions are removed.
188
41ff8053 189A shared library "libudev" gets installed now to provide access
a689165b
KS
190to udev device information. DeviceKit, the successor of HAL, will
191need this library to access the udev database and search sysfs for
192devices.
ba6929f6 193The library is currently in an experimental state, also the API is
a689165b 194expected to change, as long as the DeviceKit integration is not
ba6929f6
KS
195finished.
196
01618658
KS
197udev 126
198========
199We use ./configure now. See INSTALL for details. Current
200options are:
201 --prefix=
202 "/usr" - prefix for man pages, include files
203 --exec-prefix=
204 "" - the root filesystem, prefix for libs and binaries
205 --sysconfdir=
206 "/etc"
207 --with-libdir-name=
208 "lib" - directory name for libraries, not a path name
209 multilib 64bit systems may use "lib64" instead of "lib"
210 --enable-debug
211 compile-in verbose debug messages
212 --disable-logging
213 disable all logging and compile-out all log strings
47b0c350 214 --with-selinux
58a63088 215 link against SELInux libraries, to set the expected context
01618658
KS
216 for created files
217
58a63088
KS
218In the default rules, the group "disk" gets permissions 0660 instead
219of 0640. One small step closer to unify distro rules. Some day, all
220distros hopefully end up with the same set of rules.
221
222No symlinks to udevadm are installed anymore, if they are still needed,
223they should be provided by the package.
01618658 224
05b96400
KS
225udev 125
226========
227Bugfixes.
228
229Default udev rules, which are not supposed to be edited by the user, should
230be placed in /lib/udev/rules.d/ now, to make it clear that they are private to
231the udev package and will be replaced with an update. Udev will pick up rule
232files from:
233 /lib/udev/rules.d/ - default installed rules
234 /etc/udev/rules.d/ - user rules + on-the-fly generated rules
235 /dev/.udev/rules.d/ - temporary non-persistent rules created after bootup
236It does not matter in which directory a rule file lives, all files are sorted
237in lexical order.
238
239To help creating /dev/root, we have now:
240 $ udevadm info --export --export-prefix="ROOT_" --device-id-of-file=/
241 ROOT_MAJOR=8
242 ROOT_MINOR=5
243In case the current --device-id-of-file is already used, please switch to
244the --export format version, it saves the output parsing and the old
245format will be changed to use ':' as a separator, like the format in the
246sysfs 'dev' file.
247
c986ca55
KS
248udev 124
249========
250Fix cdrom_id to properly recognize blank media.
251
2c0644c1
KS
252udev 123
253========
254Bugfixes.
255
256Tape drive id-data is queried from /dev/bsg/* instead of the tape
257nodes. This avoids rewinding tapes on open().
258
4e548559
KS
259udev 122
260========
261Bugfixes.
262
263The symlinks udevcontrol and udevtrigger are no longer installed by
264the Makefile.
265
266The scsi_id program does not depend on sysfs anymore. It can speak
267SGv4 now, so /dev/bsg/* device nodes can be used, to query SCSI device
268data, which should solve some old problems with tape devices, where
269we better do not open all tape device nodes to identify the device.
270
8325c84d
KS
271udev 121
272========
273Many bugfixes.
274
275The cdrom_id program is replaced by an advanced version, which can
276detect most common device types, and also properties of the inserted
277media. This is part of moving some basic functionality from HAL into
278udev (and the kernel).
279
cb0b4b70
KS
280udev 120
281========
282Bugfixes.
283
284The last WAIT_FOR_SYSFS rule is removed from the default rules.
285
286The symlinks to udevadm for the debugging tools: udevmonitor and
287udevtest are no longer created.
288
289The symlinks to the udevadm man page for the old tool names are
290no longer created.
291
292Abstract namespace sockets paths in RUN+="socket:@<path>" rules,
293should be prefixed with '@' to indicate that the path is not a
294real file.
295
65e9e8c5
KS
296udev 119
297========
298Bugfixes.
299
c645b98b
KS
300udev 118
301========
7094df0a
KS
302Bugfixes.
303
304Udevstart is removed from the tree, it did not get installed for
305a long time now, and is long replaced by trigger and settle.
c645b98b 306
225cb03b
KS
307udev 117
308========
309Bugfixes.
310
3ca49451
KS
311All udev tools are merged into a single binary called udevadm.
312The old names of the tools are built-in commands in udevadm now.
313Symlinks to udevadm, with the names of the old tools, provide
314the same functionality as the standalone tools. There is also
315only a single udevadm.8 man page left for all tools.
316
317Tools like mkinitramfs should be checked, if they need to include
318udevadm in the list of files.
225cb03b 319
8e37efe4
KS
320udev 116
321========
322Bugfixes.
323
7e599863
KS
324udev 115
325========
326Bugfixes.
327
328The etc/udev/rules.d/ directory now contains a default set of basic
329udev rules. This initial version is the result of a rules file merge
330of Fedora and openSUSE. For these both distros only a few specific
331rules are left in their own file, named after the distro. Rules which
332are optionally installed, because they are only valid for a specific
333architecture, or rules for subsystems which are not always used are
334in etc/udev/packages/.
335
585e8388
KS
336udev 114
337========
338Bugfixes.
339
340Dynamic rules can be created in /dev/.udev/rules.d/ to trigger
341actions by dynamically created rules.
342
343SYMLINK=="<value>" matches agains the entries in the list of
344currently defined symlinks. The links are not created in the
345filesystem at that point in time, but the values can be matched.
346
347RUN{ignore_error}+="<program>" will ignore any exit code from the
348program and not record as a failed event.
349
de966524
KS
350udev 113
351========
352Bugfixes.
353
354Final merge of patches/features from the Ubuntu package.
355
83a4c0f8
KS
356udev 112
357========
358Bugfixes.
359
360Control characters in filesystem label strings are no longer silenty
361removed, but hex-encoded, to be able to uniquely identify the device
362by its symlink in /dev/disk/by-label/.
363If libvolume_id is used by mount(8), LABEL= will work as expected,
364if slashes or other characters are used in the label string.
365
366To test the existence of a file, TEST=="<file>" and TEST!="<file>"
367can be specified now. The TEST key accepts an optional mode mask
368TEST{0100}=="<is executable file>".
369
370Scsi_id now supports a mode without expecting scsi-specific sysfs
371entries to allow the extraction of cciss-device persistent properties.
372
85135c74
KS
373udev 111
374========
375Bugfixes.
376
377In the future, we may see uuid's which are just simple character
378strings (see the DDF Raid Specification). For that reason vol_id now
83a4c0f8 379exports ID_FS_UUID_SAFE, just like ID_FS_LABEL_SAFE. For things like
85135c74
KS
380the creation of symlinks, the *_SAFE values ensure, that no control
381or whitespace characters are used in the filename.
382
383Possible users of libvolume_id, please use the volume_id_get_* functions.
384The public struct will go away in a future release of the library.
385
25b5bb42
KS
386udev 110
387========
388Bugfixes.
389
390Removal of useless extras/eventrecorder.sh.
391
7c1ecbfb
KS
392udev 109
393========
394Bugfixes.
395
b8eb7940
KS
396udev 108
397========
398Bugfixes.
399
400The directory multiplexer for dev.d/ and hotplug.d are finally removed
401from the udev package.
402
9d534c0e
KS
403udev 107
404========
405Bugfixes.
406
407Symlinks can have priorities now, the priority is assigned to the device
408and specified with OPTIONS="link_priority=100". Devices with higher
409priorities overwrite the symlinks of devices with lower priorities.
410If the device that currently owns the link, goes away, the symlink
411will be removed, and recreated, pointing to the next device with the
412highest actual priority. This should make /dev/disk/by-{label,uuid,id}
413more reliable, if multiple devices contain the same metadata and overwrite
414these symlinks.
415
416The dasd_id program is removed from the udev tree, and dasdinfo, with the
417needed rules, are part of the s390-tools now.
418
419Please add KERNEL=="[0-9]*:[0-9]*" to the scsi wait-for-sysfs rule,
420we may get the scsi sysfs mess fixed some day, and this will only catch
421the devices we are looking for.
422
423USB serial numbers for storage devices have the target:lun now appended,
424to make it possibble to distinguish broken multi-lun devices with all
425the same SCSI identifiers.
426
427Note: The extra "run_directory" which searches and executes stuff in
428/etc/hotplug.d/ and /etc/dev.d/ is long deprecated, and will be removed
429with the next release. Make sure, that you don't use it anymore, or
430provides your own implementation of that inefficient stuff.
431We are tired of reports about a "slow udev", because these directories
432contain stuff, that runs with _every_ event, instead of using rules,
433that run programs only for the matching events.
434
435udev 106
436========
437Bugfixes.
438
273bebdb
KS
439udev 105
440========
1bcfb137
KS
441Bugfixes.
442
443DRIVER== will match only for devices that actually have a real
444driver. DRIVERS== must be used, if parent devices should be
445included in the match.
446
447Libvolume_id's "linux_raid" detection needed another fix.
273bebdb 448
8fdad27d
KS
449udev 104
450========
451Bugfixes.
452
1810a9d7
KS
453udev 103
454========
455Add additional check to volume_id detection of via_raid, cause
456some company decided to put a matching pattern all over the empty
457storage area of their music players.
458
0a9e36df
KS
459udev 102
460========
461Fix path_id for SAS devices.
462
9b2a9038
KS
463udev 101
464========
465The udev daemon can be started with --debug-trace now, which will
466execute all events serialized to get a chance to catch a possible
467action that crashes the box.
468
469A warning is logged, if PHYSDEV* keys, the "device" link, or a parent
470device attribute like $attr{../file} is used, only WAIT_FOR_SYSFS rules
471are excluded from the warning. Referencing parent attributes directly
472may break when something in the kernel driver model changes. Udev will
473just find the attribute by walking up the parent chain.
474
475Udevtrigger now sorts the list of devices depending on the device
476dependency, so a "usb" device is triggered after the parent "pci"
477device.
478
eed8b2ff
KS
479udev 100
480========
481Revert persistent-storage ata-serial '_' '-' replacement.
482
4a515309
KS
483udev 099
484========
485Bugfixes.
486
487Udevtrigger can now filter the list of devices to be triggered. Matches
488for subsystems or sysfs attributes can be specified.
489
490The entries in /dev/.udev/queue and /dev/.udev/failed have changed to
491zero-sized files to avoid pointing to /sys and confuse broken tools which
492scan the /dev directory. To retry failed events, udevtrigger --retry-failed
493should be used now.
494
495The rules and scripts to create udev rules for persistent network
496devices and optical drives are in the extras/rules_generator directory
497now. If you use something similar, please consider replacing your own
498version with this, to share the support effort. The rule_generator
499installs its own rules into /etc/udev/rules.d.
500
501The cdrom_id tool installs its own rule now in /etc/udev/rules.d, cause
502the rule_generator depends on cdrom_id to be called in an earlier rule.
503
56f914e6
KS
504udev 098
505========
506Bugfixes.
507
508Renaming of some key names (the old names still work):
509BUS -> SUBSYSTEMS, ID -> KERNELS, SYSFS -> ATTRS, DRIVER -> DRIVERS.
510(The behavior of the key DRIVER will change soon in one of the next
511releases, to match only the event device, please switch to DRIVERS
512instead. If DRIVER is used, it will behave like DRIVERS, but an error
513is logged.
514With the new key names, we have a more consistent and simpler scheme.
515We can match the properties of the event device only, with: KERNEL,
516SUBSYSTEM, ATTR, DRIVER. Or include all the parent devices in the match,
517with: KERNELS, SUBSYSTEMS, ATTRS, DRIVERS. ID, BUS, SYSFS, DRIVER are no
518longer mentioned in the man page and should be switched in the rule
519files.
520
521ATTR{file}="value" can be used now, to write to a sysfs file of the
522event device. Instead of:
523 ..., SYSFS{type}=="0|7|14", RUN+="/bin/sh -c 'echo 60 > /sys$$DEVPATH/timeout'"
524we now can do:
525 ..., ATTR{type}=="0|7|14", ATTR{timeout}="60"
526
527All the PHYSDEV* keys are deprecated and will be removed from a
528future kernel:
529 PHYDEVPATH - is the path of a parent device and should not be
530 needed at all.
531 PHYSDEVBUS - is just a SUBSYSTEM value of a parent, and can be
532 matched with SUBSYSTEMS==
533 PHYSDEVDRIVER - for bus devices it is available as ENV{DRIVER}.
534 Newer kernels will have DRIVER in the environment,
535 for older kernels udev puts in. Class device will
536 no longer carry this property of a parent and
537 DRIVERS== can be used to match such a parent value.
538Note that ENV{DRIVER} is only available for a few bus devices, where
539the driver is already bound at device event time. On coldplug, the
540events for a lot devices are already bound to a driver, and they will have
541that value set. But on hotplug, at the time the kernel creates the device,
542it can't know what driver may claim the device after that, therefore
543in most cases it will be empty.
544
545Failed events should now be re-triggered with:
546 udevtrigger --retry-failed.
547Please switch to this command, so we keep the details of the /dev/.udev/failed/
548files private to the udev tools. We may need to switch the current symlink
549target, cause some obviously broken tools try to scan all files in /dev
550including /dev/.udev/, find the links to /sys and end up stat()'ing sysfs files
551million times. This takes ages on slow boxes.
552
553The udevinfo attribute walk (-a) now works with giving a device node
554name (-n) instead of a devpath (-p). The query now always works, also when
555no database file was created by udev.
556
557The built-in /etc/passwd /etc/group parser is removed, we always depend on
558getpwnam() and getgrnam() now. One of the next releases will depend on
559fnmatch() and may use getopt_long().
560
be31371f
KS
561udev 097
562========
563Bugfixes and small improvements.
564
8448b7ce
KS
565udev 096
566========
be31371f 567Fix path_id for recent kernels.
8448b7ce 568
486e62f8
KS
569udev 095
570========
56f914e6 571%e is finally gone.
486e62f8
KS
572
573Added support for swapping network interface names, by temporarily
574renaming the device and wait for the target name to become free.
575
a924bf9a
KS
576udev 094
577========
578The built-in MODALIAS key and substitution is removed.
579
df16b779
KS
580udev 093
581========
582The binary firmware helper is replaced by the usual simple
583shell script. Udevsend is removed from the tree.
584
acc8322f
KS
585udev 092
586========
587Bugfix release.
588
866bfe88
KS
589udev 091
590========
591Some more keys require the correct use of '==' and '=' depending
592on the kind of operation beeing an assignment or a match. Rules
593with invalid operations are skipped and logged to syslog. Please
594test with udevtest if the parsing of your rules throws errors and
595fix possibly broken rules.
596
876fa61d
KS
597udev 090
598========
599Provide "udevsettle" to wait for all current udev events to finish.
600It also watches the current kernel netlink queue by comparing the
601even sequence number to make sure that there are no current pending
602events that have not already arrived in the daemon.
603
2b3f8e93
KS
604udev 089
605========
606Fix rule to skip persistent rules for removable IDE devices, which
607also skipped optical IDE drives.
608
609All *_id program are installed in /lib/udev/ by default now.
610
611No binary is stripped anymore as this should be done in the
612packaging process and not at build time.
613
614libvolume_id is provided as a shared library now and vol_id is
615linked against it. Also one of the next HAL versions will require
616this library, and the HAL build process will also require the
617header file to be installed. The copy of the same code in HAL will
618be removed to have only a single copy left on the system.
619
63645a3d
KS
620udev 088
621========
622Add persistent links for SCSI tapes. The rules file is renamed
623to 60-persistent-storage.rules.
624
625Create persistent path for usb devices. Can be used for all sorts
626of devices that can't be distinguished by other properties like
627multiple identical keyboards and mice connected to the same box.
628
629Provide "udevtrigger" program to request events on coldplug. The
630shell script is much too slow with thousends of devices.
631
b2885eee
KS
632udev 087
633========
634Fix persistent disk rules to exclude removable IDE drives.
635
636Warn if %e, $modalias or MODALIAS is used.
637
638udev 086
0030441c
KS
639========
640Fix queue export, which wasn't correct for subsequent add/remove
641events for the same device.
642
4cb665e4
KS
643udev 085
644========
645Fix cramfs detection on big endian.
646
647Make WAIT_FOR_SYSFS usable in "normal" rules and silent if the whole
648device goes away.
649
4942c78c
KS
650udev 084
651========
66c2bc21 652If BUS== and SYSFS{}== have been used in the same rule, the sysfs
b3e8c12b
AB
653attributes were only checked at the parent device that matched the
654by BUS requested subsystem. Fix it to also look at the device we
66c2bc21
KS
655received the event for.
656
657Build variable CROSS has changed to CROSS_COMPILE to match the kernel
658build name.
4942c78c 659
36af2ddc
KS
660udev 083
661========
662Fix a bug where NAME="" would prevent RUN from beeing executed.
663
cef28db9 664RUN="/bin/program" does not longer automatically add the subsystem
36af2ddc 665as the first parameter. This is from the days of /sbin/hotplug
cef28db9
KS
666which is dead now and it's just confusing to need to add a space at
667the end of the program name to prevent this.
668If you use rules that need the subsystem as the first parameter,
669like the old "udev_run_hotlugd" and "udev_run_devd", add the subsystem
670to the key like RUN+="/bin/program $env{SUBSYSTEM}".
36af2ddc 671
1a72d06f
KS
672udev 082
673========
b3e8c12b 674The udev man page has moved to udev(7) as it does not describe a command
1a72d06f
KS
675anymore. The programs udev, udevstart and udevsend are no longer installed
676by default and must be copied manually, if they should be installed or
677included in a package.
678
679Fix a bug where "ignore_device" could run earlier collected RUN keys before
680the ignore rule was applied.
681
682More preparation for future sysfs changes. usb_id and scsi_id no longer
683depend on a magic order of devices in the /devices chain. Specific devices
684should be requested by their subsytem.
685
686This will always find the scsi parent device without depending on a specific
687path position:
688 dev = sysfs_device_get(devpath);
689 dev_usb = sysfs_device_get_parent_with_subsystem(dev, "scsi");
690
691The "device" link in the current sysfs layout will be automatically
692_resolved_ as a parent and in the new sysfs layout it will just _be_ the
693parent in the devpath. If a device is requested by it's symlink, like all
694class devices in the new sysfs layout will look like, it gets automatically
695resolved and substituted with the real devpath and not the symlink path.
696
697Note:
698A similar logic must be applied to _all_ sysfs users, including
699scripts, that search along parent devices in sysfs. The explicit use of
700the "device" link must be avoided. With the future sysfs layout all
701DEVPATH's will start with /devices/ and have a "subsystem" symlink poiting
702back to the "class" or the "bus". The layout of the parent devices in
703/devices is not necessarily expected to be stable across kernel releases and
704searching for parents by their subsystem should make sysfs users tolerant
705for changed parent chains.
706
7155bfb7
KS
707udev 081
708========
709Prepare udev to work with the experimental kernel patch, that moves
710/sys/class devices to /sys/devices and /sys/block to /sys/class/block.
711
712Clarify BUS, ID, $id usage and fix $id behavior. This prepares for
713moving the class devices to /sys/devices.
714
715Thanks again to Marco for help finding a hopefully nice compromise
716to make %b simpler and working again.
717
3e0f8812
KS
718udev 080
719========
1aa1e248
KS
720Complete removal of libsysfs, replaced by simple helper functions
721which are much simpler and a bit faster. The udev daemon operatesentirely
722on event parameters and does not use sysfs for simple rules anymore.
723Please report any new bugs/problems, that may be caused by this big
724change. They will be fixed immediately.
725
3e0f8812
KS
726The enumeration format character '%e' is deprecated and will be
727removed sometimes from a future udev version. It never worked correctly
728outside of udevstart, so we can't use it with the new parallel
729coldplug. A simple enumeration is as useless as the devfs naming
730scheme, just get rid of both if you still use it.
731
732MODALIAS and $modalias is not needed and will be removed from one of
733the next udev versions, replace it in all rules with ENV{MODALIAS} or
734the sysfs "modalias" value.
735
1aa1e248
KS
736Thanks a lot to Marco for all his help on finding and fixing bugs.
737
e2e8e5ce
KS
738udev 079
739========
740Let scsi_id request libata drive serial numbers from page 0x80.
741
742Renamed etc/udev/persistent.rules to persistent-disk.rules and
743added /dev/disk/by-name/* for device mapper device names.
744
745Removed %e from the man page. It never worked reliably outside
746of udevstart and udevstart is no longer recommended to use.
747
fb6e4c28
KS
748udev 078
749========
750Symlinks are now exported to the event environment. Hopefully it's no
751longer needed to run udevinfo from an event process, like it was
752mentioned on the hotplug list:
753 UDEV [1134776873.702967] add@/block/sdb
754 ...
755 DEVNAME=/dev/sdb
756 DEVLINKS=/dev/disk/by-id/usb-IBM_Memory_Key_0218B301030027E8 /dev/disk/by-path/usb-0218B301030027E8:0:0:0
757
7403f98b
KS
758udev 077
759========
760Fix a problem if udevsend is used as the hotplug handler and tries to use
761syslog, which causes a "vc" event loop. 2.6.15 will make udevsend obsolete
762and this kind of problems will hopefully go away soon.
763
c86be870
KS
764udev 076
765========
766All built-in logic to work around bad sysfs timing is removed with this
767version. The need to wait for sysfs files is almost fixed with a kernel
768version that doesn't work with this udev version anyway. Until we fix
769the timing of the "bus" link creation, the former integrated logic should
770be emulated by a rule placed before all other rules:
771 ACTION=="add", DEVPATH=="/devices/*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
772
e0dc4f00
KS
773The option "udev_db" does no longer exist. All udev state will be in
774/$udev_root/.udev/ now, there is no longer an option to set this
fc55cf68 775to anything else.
e0dc4f00
KS
776If the init script or something else used this value, just depend on
777this hardcoded path. But remember _all_content_ of this directory is
778still private to udev and can change at any time.
fc55cf68 779
c249f66a
KS
780Default location for rule sripts and helper programs is now: /lib/udev/.
781Everything that is not useful on the commandline should go into this
e0dc4f00
KS
782directory. Some of the helpers in the extras folder are installed there
783now. The rules need to be changed, to find the helpers there.
784
785Also /lib/udev/devices is recommended as a directory where packages or
786the user can place real device nodes, which get copied over to /dev at
787every boot. This should replace the various solutions with custom config
788files.
c249f66a 789
4389ec08
KS
790Udevsend does no longer start the udev daemon. This must be done with
791the init script that prepares /dev on tmpfs and creates the initial nodes,
792before starting the daemon.
793
a8349b33
KS
794udev 075
795========
ef0cd1ac
KS
796Silent a too verbose error logging for the old hotplug.d/ dev.d/
797emulation.
798
a8349b33 799The copy of klibc is removed. A systemwide installed version of klibc
ef0cd1ac 800should be used to build a klibc udev now.
a8349b33 801
bc48bbd9
KS
802udev 074
803========
804NAME="" will not create any nodes, but execute RUN keys. To completely
805ignore an event the OPTION "ignore_device" should be used.
806
807After removal of the reorder queue, events with a TIMEOUT can be executed
808without any queuing now.
809
8f528042
KS
810udev 073
811========
812Fixed bug in udevd, if inotify is not available. We depend on netlink
813uevents now, kernels without that event source will not work with that
814version of udev anymore.
815
6cb1bbe4
KS
816udev 072
817========
818The rule parsing happens now in the daemon once at startup, all udev
819event processes inherit the already parsed rules from the daemon.
820It is shipped with SUSE10.0 and reduces heavily the system load at
1ad45a47
KS
821startup. The option to save precompiled rules and let the udev process
822pick the them up is removed, as it's no longer needed.
6cb1bbe4 823
ce364175
KS
824Kernel 2.6.15 will have symlinks at /class/input pointing to the real
825device. Libsysfs is changed to "translate" the requested link into the
826real device path, as it would happen with the hotplug event. Otherwise
827device removal and the udev database will not work.
828
829Using 'make STRIPCMD=' will leave the binaries unstripped for debugging
6cb1bbe4
KS
830and packaging.
831
832A few improvements for vol_id, the filesytem probing code.
833
a743be9a
KS
834udev 071
835========
836Fix a stupid typo in extras/run_directory for "make install".
837
838scsi_id creates the temporary devnode now in /dev for usage with a
839non-writable /tmp directory.
840
841The uevent kernel socket buffer can carry app. 50.000 events now,
842let's see who can break this again. :)
843
844The upcoming kernel will have a new input driver core integration.
845Some class devices are now symlinks to the real device. libsysfs
846needs a fix for this to work correctly. Udevstart of older udev
847versions will _not_ create these devices!
848
b0f65295
KS
849udev 070
850========
851Fix a 'install' target in the Makefile, that prevents EXTRAS from
852beeing installed.
853
b581515c
KS
854udev 069
855========
856A bunch of mostly trivial bugfixes. From now on no node name or
857symlink name can contain any character than plain whitelisted ascii
858characters or validated utf8 byte-streams. This is needed for the
e688ad2d 859/dev/disk/by-label/* links, because we import untrusted data and
b581515c
KS
860export it to the filesystem.
861
24a12dcb
KS
862udev 068
863========
864More bugfixes. If udevd was started from the kernel, we don't
865have stdin/stdout/stderr, which broke the forked tools in some
866situations.
867
868udev 067
869========
870Bugfix. udevstart event ordering was broken for a long time.
e688ad2d 871The new run_program() uncovered it, because /dev/null was not
24a12dcb
KS
872available while we try to run external programs.
873Now udevstart should create it before we run anything.
874
6214290d
KS
875udev 066
876========
877Minor bugfixes and some distro rules updates. If you don't have the
878persistent disk rules in /dev/disk/by-*/* on your distro, just
879grab it from here. :)
880
61341fae
KS
881udev 065
882========
883We can use socket communication now to pass events from udev to
884other programs:
885 RUN+="socket:/org/freedesktop/hal/udev_event"
886will pass the whole udev event to the HAL daemon without the need
887for a forked helper. (See ChangeLog for udevmonitor, as an example)
888
889udev 064
890========
891Mostly bugfixes and see ChangeLog.
892
893The test for the existence of an environment value should be
894switched from:
895 ENV{KEY}=="*" to ENV{KEY}=="?*"
e688ad2d 896because "*" will not fail anymore, if the key does not exist or
61341fae
KS
897is empty.
898
899udev 063
900========
901Bugfixes and a few tweaks described in the ChangeLog.
902
97c0448d
KS
903udev 062
904========
905Mostly a Bugfix release.
906
907Added WAIT_FOR_SYSFS="<attribute>" to be able to fight against the sysfs
908timing with custom rules.
909
133dd3ce
KS
910udev 061
911========
912We changed the internal rule storage format. Our large rule files took
9132 MB of RAM, with the change we are down to 99kB.
914
915If the device-node has been created with default name and no symlink or
916options are to remenber, it is not longer stored in the udevdb. HAL will
917need to be updated to work correctly with that change.
918
919To overrride optimization flags, OPTFLAGS may be used now.
920
921udev 060
922========
923Bugfix release.
924
be0856c8
KS
925udev 059
926========
927Major changes happened with this release. The goal is to take over the
928complete kernel-event handling and provide a more efficient way to dispatch
929kernel events. Replacing most of the current shell script logic and the
930kernel forked helper with a netlink-daemon and a rule-based event handling.
931
932o udevd listens to netlink events now. The first valid netlink event
933 will make udevd ignore any message from udevsend that contains a
934 SEQNUM, to avoid duplicate events. The forked events can be disabled
935 with:
936 echo "" > /proc/sys/kernel/hotplug
937 For full support, the broken input-subsytem needs to be fixed, not to
938 bypass the driver core.
939
940o /etc/dev.d/ + /etc/hotplug.d/ directory multiplexing is completely
941 removed from udev itself and must be emulated by calling small
942 helper binaries provided in the extras folder:
943 make EXTRAS=extras/run_directory/
944 will build udev_run_devd and udev_run_hotplugd, which can be called
945 from a rule if needed:
946 RUN+="/sbin/udev_run_hotplugd"
947 The recommended way to handle this is to convert all the calls from
948 the directories to explicit udev rules and get completely rid of the
949 multiplexing. (To catch a ttyUSB event, you now no longer need to
950 fork and exit 300 tty script instances you are not interested in, it
951 is just one rule that matches exactly the device.)
952
953o udev handles now _all_ events not just events for class and block
954 devices, this way it is possible to control the complete event
955 behavior with udev rules. Especially useful for rules like:
956 ACTION="add", DEVPATH="/devices/*", MODALIAS=="?*", RUN+="/sbin/modprobe $modalias"
957
958o As used in the modalias rule, udev supports now textual
959 substitution placeholder along with the usual format chars. This
960 needs to be documented, for now it's only visible in udev_rules_parse.c.
961
962o The rule keys support now more operations. This is documented in the
963 man page. It is possible to add values to list-keys like the SYMLINK
964 and RUN list with KEY+="value" and to clear the list by assigning KEY="".
965 Also "final"-assignments are supported by using KEY:="value", which will
966 prevent changing the key by any later rule.
967
968o kernel 2.6.12 has the "detached_state" attribute removed from
969 sysfs, which was used to recognize sysfs population. We switched that
970 to wait for the "bus" link, which is only available in kernels after 2.6.11.
971 Running this udev version on older kernels may cause a short delay for
972 some events.
973
974o To provide infrastructure for persistent device naming, the id programs:
975 scsi_id, vol_id (former udev_volume_id), and ata_id (new) are able now
976 to export the probed data in environment key format:
977 pim:~ # /sbin/ata_id --export /dev/hda
978 ID_MODEL=HTS726060M9AT00
979 ID_SERIAL=MRH401M4G6UM9B
980 ID_REVISION=MH4OA6BA
981
982 The following rules:
983 KERNEL="hd*[!0-9]", IMPORT="/sbin/ata_id --export $tempnode"
984 KERNEL="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_MODEL}_$env{ID_SERIAL}"
985
986 Will create:
987 kay@pim:~> tree /dev/disk
988 /dev/disk
989 |-- by-id
990 | |-- HTS726060M9AT00_MRH401M4G6UM9B -> ../../hda
991 | `-- IBM-Memory_Key -> ../../sda
992 |-- by-label
993 | |-- swap -> ../../hda1
994 | |-- date -> ../../sda1
995 | `-- home -> ../../hda3
996 `-- by-uuid
997 |-- 2E08712B0870F2E7 -> ../../hda3
998 |-- 9352cfef-7687-47bc-a2a3-34cf136f72e1 -> ../../hda1
999 |-- E845-7A89 -> ../../sda1
1000 `-- b2a61681-3812-4f13-a4ff-920d70604299 -> ../../hda2
1001
1002 The IMPORT= operation will import these keys in the environment and make
1003 it available for later PROGRAM= and RUN= executed programs. The keys are
1004 also stored in the udevdb and can be queried from there with one of the
1005 next udev versions.
1006
1007o A few binaries are silently added to the repository, which can be used
1008 to replay kernel events from initramfs instead of using coldplug. udevd
1009 can be instructed now to queue-up events while the stored events from
1010 initramfs are filled into the udevd-queue. This code is still under
1011 development and there is no documentation now besides the code itself.
1012 The additional binaries get compiled, but are not installed by default.
1013
1014o There is also a temporary fix for a performance problem where too many
1015 events happen in parallel and every event needs to parse the rules.
1016 udev can now read precompiled rules stored on disk. This is likely to be
1017 replaced by a more elegant solution in a future udev version.
1018
1019udev 058
1020========
1021With kernel version 2.6.12, the sysfs file "detached_state" was removed.
1022Fix for libsysfs not to expect this file was added.
1023
6b493a20
KS
1024udev 057
1025========
e4388fb3 1026All rules are applied now, but only the first matching rule with a NAME-key
16eb35d1
KS
1027will be applied. All later rules with NAME-key are completely ignored. This
1028way system supplied symlinks or permissions gets applied to user-defined
1029naming rules.
1030
e4388fb3
KS
1031Note:
1032Please check your rules setup, if you may need to add OPTIONS="last_rule"
1033to some rules, to keep the old behavior.
1034
1035The rules are read on "remove"-events too. That makes is possible to match
1036with keys that are available on remove (KERNEL, SUBSYSTEM, ID, ENV, ...) to
16eb35d1
KS
1037instruct udev to ignore an event (OPTIONS="ignore_device").
1038The new ACTION-key may be used to let a rule act only at a "remove"-event.
e4388fb3
KS
1039
1040The new RUN-key supports rule-based execution of programs after device-node
16eb35d1
KS
1041handling. This is meant as a general replacement for the dev.d/-directories
1042to give fine grained control over the execution of programs.
e4388fb3
KS
1043
1044The %s{}-sysfs format char replacement values are searched at any of the
1045devices in the device chain now, not only at the class-device.
1046
6b493a20
KS
1047We support log priority levels now. The value udev_log in udev.conf is used
1048to determine what is printed to syslog. This makes it possible to
1049run a version with compiled-in debug messages in a production environment
1050which is sometimes needed to find a bug.
1051It is still possible to supress the inclusion of _any_ syslog usage with
1052USE_LOG=false to create the smallest possible binaries if needed.
1053The configured udev_log value can be overridden with the environment variable
1054UDEV_LOG.
1055
7f7ae03a
KS
1056udev 056
1057========
1058Possible use of a system-wide klibc:
16eb35d1 1059 make USE_KLIBC=true KLCC=/usr/bin/klcc all
7f7ae03a
KS
1060will link against an external klibc and our own version will be ignored.
1061
143139a1
KS
1062udev 055
1063========
1064We support an unlimited count of symlinks now.
1065
1066If USE_STATIC=true is passed to a glibc build, we link statically and use
1067a built-in userdb parser to resolve user and group names.
1068
e688ad2d 1069The PLACE= key is gone. It can be replaced by an ID= for a long time, because
143139a1
KS
1070we walk up the chain of physical devices to find a match.
1071
28ce66de 1072The KEY="<value>" format supports '=', '==', '!=,' , '+=' now. This makes it
38285d23
KS
1073easy to skip certain attribute matches without composing rules with weird
1074character class negations like:
28ce66de 1075 KERNEL="[!s][!c][!d]*"
38285d23 1076this can now be replaced with:
28ce66de 1077 KERNEL!="scd*"
38285d23
KS
1078The current simple '=' is still supported, and should work as it does today,
1079but existing rules should be converted if possible, to be better readable.
1080
fc90ce81
KS
1081We have new ENV{}== key now, to match against a maximum of 5 environment
1082variables.
0e33828a 1083
e688ad2d 1084udevstart is its own binary again, because we don't need co carry this araound
0e33828a 1085with every forked event.