| 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 replacing 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. |
| |
| Tools and rules shipped by udev are not public API and may change at any time. |
| Never call any private tool in /usr/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 /usr/lib/udev and the entire contents |
| of the /run/udev directory are private to udev and do change whenever needed. |
| |
| Requirements: |
| - Version 2.6.34 of the Linux kernel with sysfs, procfs, signalfd, inotify, |
| unix domain sockets, networking and hotplug enabled |
| |
| - Some architectures might need a later kernel, that supports accept4(), |
| or need to backport the accept4() syscall wiring in the kernel. |
| |
| - These options are required: |
| CONFIG_DEVTMPFS=y |
| CONFIG_HOTPLUG=y |
| CONFIG_INOTIFY_USER=y |
| CONFIG_NET=y |
| CONFIG_PROC_FS=y |
| CONFIG_SIGNALFD=y |
| CONFIG_SYSFS=y |
| CONFIG_SYSFS_DEPRECATED*=n |
| CONFIG_UEVENT_HELPER_PATH="" |
| |
| - These options might be needed: |
| CONFIG_BLK_DEV_BSG=y (SCSI devices) |
| CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes) |
| |
| - The /dev directory needs the 'devtmpfs' filesystem mounted. |
| Udev only manages the permissions and ownership of the |
| kernel-provided device nodes, and possibly creates additional symlinks. |
| |
| - Udev requires /run to be writable, which is usually done by mounting a |
| 'tmpfs' filesystem. |
| |
| - This version of udev does not work properly with the CONFIG_SYSFS_DEPRECATED* |
| option enabled. |
| |
| - 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, and the sysfs filesystem must |
| be mounted at /sys. No other locations are supported by a standard |
| udev installation. |
| |
| - The default rule sset requires the following group names resolvable at udev startup: |
| disk, cdrom, floppy, tape, audio, video, lp, tty, dialout, and kmem. |
| Especially in LDAP setups, it is required that getgrnam() be able to resolve |
| these group names with only the rootfs mounted and while no network is |
| available. |
| |
| - Some udev extras have external dependencies like: |
| libglib2, usbutils, pciutils, and gperf. |
| All these extras can be disabled with configure options. |
| |
| Setup: |
| - The udev daemon should be started to handle device events sent by the kernel. |
| During bootup, the events for already existing devices can be replayed, so |
| that they are configured by udev. The systemd service files contain the |
| needed commands to start the udev daemon and the coldplug sequence. |
| |
| - Restarting the daemon never applies any rules to existing devices. |
| |
| - New/changed rule files are picked up automatically; there is usually no |
| daemon restart or signal needed. |
| |
| Operation: |
| - Based on events the kernel sends out on device creation/removal, udev |
| creates/removes device nodes and symlinks in the /dev directory. |
| |
| - All kernel events are matched against a set of specified rules, which |
| possibly hook into the event processing and load required kernel |
| modules to set up devices. For all devices, the kernel exports a major/minor |
| number; if needed, udev creates a device node with the default kernel |
| device 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 man pages: |
| http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/ |
| |
| Please direct any comment/question to the linux-hotplug mailing list at: |
| linux-hotplug@vger.kernel.org |