]>
Commit | Line | Data |
---|---|---|
b1830e79 GKH |
1 | Frequently Asked Questions about udev |
2 | ||
b1830e79 GKH |
3 | Q: What's this udev thing, and what is it trying to do? |
4 | A: 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 | |
10 | Q: How is udev related to devfs? | |
9d97f3bb KS |
11 | A: 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 | 17 | Q: Why was devfs removed if udev can't do everthing devfs did? |
b1830e79 | 18 | A: 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 | |
29 | Q: 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 |
31 | A: 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 |
34 | Q: Oh come on, pretty please. It can't be that hard to do. |
35 | A: 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 |
42 | Q: But I love that feature of devfs, please? |
43 | A: 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 | 48 | Q: I really like the devfs naming scheme, will udev do that? |
c8ff4b3d KS |
49 | A: 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 | |
59 | Q: What kinds of devices does udev create nodes for? | |
c8ff4b3d | 60 | A: All devices that are shown in the kernel's sysfs tree will work with udev. |
b1830e79 GKH |
61 | |
62 | Q: Will udev remove the limit on the number of anonymous devices? | |
63 | A: udev is entirely in userspace. If the kernel supports a greater number | |
64 | of anonymous devices, udev will support it. | |
65 | ||
c8ff4b3d KS |
66 | Q: Does udev support symlinks? |
67 | A: Yes, multiple symlinks per device node are supported. | |
b1830e79 | 68 | |
b1830e79 | 69 | Q: How will udev handle the /dev filesystem? |
9d97f3bb KS |
70 | A: /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 | |
73 | Q: How will udev handle devices found before init runs? | |
9d97f3bb KS |
74 | A: 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 | 78 | Q: Can I use udev to automount a USB device when I connect it? |
9d97f3bb KS |
79 | A: 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 |
92 | Q: Are there any security issues that I should be aware of? |
93 | A: 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 |
105 | Q: I have other questions about udev, where do I ask them? |
106 | A: 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 |