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. This is currently version 2.6.32.

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 contents of
the /dev/.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 needed:
      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_INOTIFY_USER=y
      CONFIG_SIGNALFD=y

  - These options might be needed:
      CONFIG_TMPFS=y
      CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)
      CONFIG_BLK_DEV_BSG=y (SCSI devices)

  - Udev does 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, 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:
      libacl, libglib2, libusb, usbutils, pciutils, and gperf.
    All these extras can be disabled with configure options.

Setup:
  - At bootup, the /dev directory should get the 'devtmpfs' filesystem
    mounted. Udev manages the permissions and ownership of the kernel-created
    device nodes, and udev possibly creates 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 so that they too can be configured by udev. This is usually done by:
      /sbin/udevadm trigger --type=subsystems
      /sbin/udevadm trigger --type=devices

  - Restarting the daemon never applies any rules to existing devices.

  - New/changed rule files are picked up automatically; there is no daemon
    restart or signal needed.

Operation:
  - Based on events the kernel sends out on device creation/removal, udev
    creates/removes device nodes 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
    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
