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