| udev - Linux userspace device management | |
| Integrating udev in the system has complex dependencies and may differ from | |
| distribution to distribution. A system may not be able to boot up or work | |
| reliably without a properly installed udev version. The upstream udev project | |
| does not recommend to replace a distro's udev installation with the upstream | |
| version. | |
| The upstream udev project's set of default rules may require a most recent | |
| kernel release to work properly. This is currently version 2.6.31. | |
| Tools and rules shipped by udev are not public API and may change at any time. | |
| Never call any private tool in /lib/udev from any external application, it might | |
| just go away in the next release. Access to udev information is only offered | |
| by udevadm and libudev. Tools and rules in /lib/udev, and the entire content of | |
| the /dev/.udev directory is private to udev and does change whenever needed. | |
| Requirements: | |
| - Version 2.6.27 of the Linux kernel with sysfs, procfs, signalfd, inotify, | |
| unix domain sockets, networking and hotplug enabled: | |
| CONFIG_HOTPLUG=y | |
| CONFIG_UEVENT_HELPER_PATH="" | |
| CONFIG_NET=y | |
| CONFIG_UNIX=y | |
| CONFIG_SYSFS=y | |
| CONFIG_SYSFS_DEPRECATED*=n | |
| CONFIG_PROC_FS=y | |
| CONFIG_TMPFS=y | |
| CONFIG_INOTIFY_USER=y | |
| CONFIG_SIGNALFD=y | |
| CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes) | |
| CONFIG_BLK_DEV_BSG=y (SCSI devices) | |
| - Udev will not work with the CONFIG_SYSFS_DEPRECATED* option. | |
| - Unix domain sockets (CONFIG_UNIX) as a loadable kernel module may work, | |
| but it is not supported. | |
| - The deprecated hotplug helper /sbin/hotplug should be disabled in the | |
| kernel configuration, it is not needed today, and may render the system | |
| unusable because the kernel may create too many processes in parallel | |
| so that the system runs out-of-memory. | |
| - The proc filesystem must be mounted on /proc, the sysfs filesystem must | |
| be mounted at /sys. No other locations are supported by a standard | |
| udev installation. | |
| - The system must have the following group names resolvable at udev startup: | |
| disk, cdrom, floppy, tape, audio, video, lp, tty, dialout, kmem. | |
| Especially in LDAP setups, it is required, that getgrnam() is able to resolve | |
| these group names with only the rootfs mounted, and while no network is | |
| available. | |
| - To build all 'udev extras', libacl, libglib2, libusb, usbutils, pciutils, | |
| gperf are needed. These dependencies can be disabled with the | |
| --disable-extras configure option. | |
| Setup: | |
| - At bootup, the /dev directory should get the 'devtmpfs' filesystem | |
| mounted. Udev will manage permissions and ownership of the kernel-created | |
| device nodes, and possibly create additional symlinks. If needed, udev also | |
| works on an empty 'tmpfs' filesystem, but some static device nodes like | |
| /dev/null, /dev/console, /dev/kmsg are needed to be able to start udev itself. | |
| - The udev daemon should be started to handle device events sent by the kernel. | |
| During bootup, the kernel can be asked to send events for all already existing | |
| devices, to apply the configuration to these devices. This is usually done by: | |
| /sbin/udevadm trigger --type=subsystems | |
| /sbin/udevadm trigger --type=devices | |
| - Restarting the daemon does never apply any rules to existing devices. | |
| - New/changed rule files are picked up automatically, there is no daemon | |
| restart or signal needed. | |
| Operation: | |
| - Udev creates/removes device nodes in /dev, based on events the kernel | |
| sends out on device creation/removal. | |
| - All kernel events are matched against a set of specified rules, which | |
| possibly hook into the event processing and load required kernel | |
| modules to setup devices. For all devices the kernel exports a major/minor | |
| number, if needed, udev will create a device node with the default kernel | |
| name. If specified, udev applies permissions/ownership to the device | |
| node, creates additional symlinks pointing to the node, and executes | |
| programs to handle the device. | |
| - The events udev handles, and the information udev merges into its device | |
| database, can be accessed with libudev: | |
| http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/ | |
| http://www.kernel.org/pub/linux/utils/kernel/hotplug/gudev/ | |
| For more details about udev and udev rules see the udev(7) man page. | |
| Please direct any comment/question to the linux-hotplug mailing list at: | |
| linux-hotplug@vger.kernel.org |