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
