]> git.ipfire.org Git - thirdparty/systemd.git/blame - FAQ
run_program: log "info" not "error" if program is missing
[thirdparty/systemd.git] / FAQ
CommitLineData
b1830e79
GKH
1Frequently Asked Questions about udev
2
b1830e79
GKH
3Q: What's this udev thing, and what is it trying to do?
4A: Read the OLS 2003 paper about udev, available in the docs/ directory,
5 and at:
9d97f3bb 6 <http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf>
b1830e79 7 There is also a udev presentation given at OLS 2003 available at:
9d97f3bb 8 <http://www.kroah.com/linux/talks/ols_2003_udev_talk/>
b1830e79
GKH
9
10Q: How is udev related to devfs?
9d97f3bb
KS
11A: udev works entirely in userspace, using hotplug events the kernel sends
12 whenever a device is added or removed from the kernel. Details about
13 the devices are exported by the kernel to the sysfs filesystem at /sys
14 All device naming policy permission control and event handling is done in
15 userspace. devfs is operated from within the kernel.
b1830e79 16
c8ff4b3d 17Q: Why was devfs removed if udev can't do everthing devfs did?
b1830e79 18A: To quote Al Viro (Linux VFS kernel maintainer):
9d97f3bb
KS
19 - it was determined that the same thing could be done in userspace
20 - devfs had been shoved into the tree in hope that its quality will
21 catch up
22 - devfs was found to have fixable and unfixable bugs
23 - the former had stayed around for many months with maintainer
24 claiming that everything works fine
25 - the latter had stayed, period.
26 - the devfs maintainer/author disappeared and stopped maintaining
27 the code.
b1830e79
GKH
28
29Q: But udev will not automatically load a driver if a /dev node is opened
30 when it is not present like devfs will do.
9d97f3bb
KS
31A: Right, but Linux is supposed to load a module when a device is discovered
32 not to load a module when it's accessed.
b1830e79 33
10a479f5
GKH
34Q: Oh come on, pretty please. It can't be that hard to do.
35A: Such a functionality isn't needed on a properly configured system. All
36 devices present on the system should generate hotplug events, loading
37 the appropriate driver, and udev will notice and create the
38 appropriate device node. If you don't want to keep all drivers for your
39 hardware in memory, then use something else to manage your modules
40 (scripts, modules.conf, etc.) This is not a task for udev.
41
470e365d
GKH
42Q: But I love that feature of devfs, please?
43A: The devfs approach caused a lot of spurious modprobe attempts as
44 programs probed to see if devices were present or not. Every probe
45 attempt created a process to run modprobe, almost all of which were
46 spurious.
47
10a479f5 48Q: I really like the devfs naming scheme, will udev do that?
c8ff4b3d
KS
49A: Yes, udev can create /dev nodes using the devfs naming policy. But you
50 will need a custom configuration and scripts that enumerate your devices
51 sequentially while events run in parallel, without a predictable order.
52 The devfs scheme is not recommended or supported because it is a stupid
53 idea to simply enumerate devices in a world where devices can come and go
54 at any time. These numbers give you nothing but problems, and are not
55 useful to identify a device. Have a look at the persistent rules for
56 examples how to create persistent device names in userspace without any
57 device enumeration depending on the device probing order.
b1830e79
GKH
58
59Q: What kinds of devices does udev create nodes for?
c8ff4b3d 60A: All devices that are shown in the kernel's sysfs tree will work with udev.
b1830e79
GKH
61
62Q: Will udev remove the limit on the number of anonymous devices?
63A: udev is entirely in userspace. If the kernel supports a greater number
64 of anonymous devices, udev will support it.
65
c8ff4b3d
KS
66Q: Does udev support symlinks?
67A: Yes, multiple symlinks per device node are supported.
b1830e79 68
b1830e79 69Q: How will udev handle the /dev filesystem?
9d97f3bb
KS
70A: /dev is recomended to be a tmpfs filesystem that is recreated on every reboot.
71 Although, udev does not care what kind of filesystem it runs on.
b1830e79
GKH
72
73Q: How will udev handle devices found before init runs?
9d97f3bb
KS
74A: udev can be placed in initramfs and run for every device that is found.
75 udev can also populate an initial /dev directory from the content of /sys
76 after the real root is mounted.
b1830e79 77
166612d7 78Q: Can I use udev to automount a USB device when I connect it?
9d97f3bb
KS
79A: Technically, yes, but udev is not intended for this. All major distributions
80 use HAL (http://freedesktop.org/wiki/Software_2fhal) for this, which also
cad46974 81 watches devices with removable media and integrates the Desktop environment.
9d97f3bb
KS
82
83 Alternatively, it is easy to add the following to fstab:
84 /dev/disk/by-label/PENDRIVE /media/PENDRIVE vfat user,noauto 0 0
166612d7
GKH
85
86 This means that users can access the device with:
9d97f3bb
KS
87 $mount /media/PENDRIVE
88 and doen't have to be root, but will get full permissions on the device.
89 Using the persistent disk links (label, uuid) will always catch the
90 same device regardless of the actual kernel name.
166612d7 91
4723bf98
BM
92Q: Are there any security issues that I should be aware of?
93A: When using dynamic device numbers, a given pair of major/minor numbers may
94 point to different hardware over time. If a user has permission to access a
95 specific device node directly and is able to create hard links to this node,
96 he or she can do so to create a copy of the device node. When the device is
97 unplugged and udev removes the device node, the user's copy remains.
98 If the device node is later recreated with different permissions the hard
99 link can still be used to access the device using the old permissions.
100 (The same problem exists when using PAM to change permissions on login.)
9d97f3bb 101
4723bf98 102 The simplest solution is to prevent the creation of hard links by putting
cad46974 103 /dev on a separate filesystem like tmpfs.
9d97f3bb 104
b1830e79
GKH
105Q: I have other questions about udev, where do I ask them?
106A: The linux-hotplug-devel mailing list is the proper place for it. The
cad46974
KS
107 address for it is:
108 linux-hotplug-devel@lists.sourceforge.net
109 Information on joining can be found at:
110 https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
b1830e79 111