World Library  
Flag as Inappropriate
Email this Article


Developer(s) Greg Kroah-Hartman and Kay Sievers
Initial release November 2003 (2003-11)
Stable release 219 (February 16, 2015 (2015-02-16)) [1]
Preview release 227 (October 7, 2015 (2015-10-07)) [2]
Written in C
Operating system Linux kernel
Type Device node
License GPL v2
Website //libudev/systemd/

udev is a device manager for the Linux kernel. As the successor of devfsd and hotplug, udev primarily manages device nodes in the /dev directory. At the same time, udev also handles all user space events raised while hardware devices are added into the system or removed from it, including firmware loading as required by certain devices.


  • Overview 1
  • Operation 2
  • History 3
  • Authors 4
  • References 5
  • External links 6


Unlike traditional Unix systems, where the device nodes in the /dev directory have been a static set of files, the Linux udev device manager dynamically provides only the nodes for the devices actually present on a system. Although devfs used to provide similar functionality, Greg Kroah-Hartman cited a number of reasons[3] for preferring udev over devfs:

  • udev supports persistent device naming, which does not depend on, for example, the order in which the devices are plugged into the system. The default udev setup provides persistent names for storage devices. Any hard disk is recognized by its unique filesystem id, the name of the disk and the physical location on the hardware it is connected to.
  • udev executes entirely in user space, as opposed to devfs's kernel space. One consequence is that udev moved the naming policy out of the kernel and can run arbitrary programs to compose a name for the device from the device's properties, before the node is created; there, the whole process is also interruptible and it runs with a lower priority.

The udev, as a whole, is divided into three parts:

  • Library libudev that allows access to device information; it was incorporated into the systemd software bundle.
  • User space daemon udevd that manages the virtual /dev.
  • Administrative command-line utility udevadm for diagnostics.

The system gets calls from the kernel via netlink socket. Earlier versions used hotplug, adding a link to themselves in /etc/hotplug.d/default with this purpose.


udev has been incorporated into systemd

udev is a generic kernel device manager. It runs as a daemon on a Linux system and listens (via netlink socket) to uevents the kernel sends out if a new device is initialized or a device is removed from the system. The system provides a set of rules that match against exported values of the event and properties of the discovered device. A matching rule will possibly name and create a device node and run configured programs to set up and configure the device.

udev rules can match on properties like the kernel subsystem, the kernel device name, the physical location of the device, or properties like the device's serial number. Rules can also request information from external programs to name a device or specify a custom name that will always be the same, regardless of the order devices are discovered by the system.

In the past a common way to use udev on Linux systems was to let it send events through a socket to HAL, which would perform further device-specific actions. For example, HAL would notify other software running on the system that the new hardware had arrived by issuing a broadcast message on the D-Bus IPC system to all interested processes. In this way, desktops such as GNOME or K Desktop Environment 3 could start the file browser to browse the file systems of newly attached USB flash drives and SD cards.[4]

By the middle of 2011 HAL had been deprecated by most Linux distributions as well as by the KDE, GNOME[5] and Xfce[6] desktop environments, among others. The functionality previously embodied in HAL has been integrated into udev itself, or moved to separate software such as udisks and upower.


udev was introduced in Linux 2.5.

The Linux kernel version 2.6.13 introduced or updated a new version of the uevent interface. A system using a new version of udev will not boot with kernels older than 2.6.13 unless udev is disabled and a traditional /dev directory is used for device access.

In April 2012, udev's codebase was merged into the systemd source tree.[7][8] In October 2012, Linus Torvalds criticized Kay Sievers's approach to udev maintenance and bug fixing related to firmware loading, stating:[9]

Yes, doing it in the kernel is "more robust". But don't play games, and stop the lying. It's more robust because we have maintainers that care, and because we know that regressions are not something we can play fast and loose with. If something breaks, and we don't know what the right fix for that breakage is, we revert the thing that broke. So yes, we're clearly better off doing it in the kernel. Not because firmware loading cannot be done in user space. But simply because udev maintenance since Greg gave it up has gone downhill.

In 2012, the Gentoo Linux project created a fork of systemd's udev codebase in order to avoid dependency on the systemd architecture. The resulting fork is called eudev and it makes udev functionality available without systemd. A stated goal of the project is to keep eudev independent of any Linux distribution or init system.[10] The Gentoo project describes eudev as follows:[11]

eudev is a fork of system-udev with the goal of obtaining better compatibility with existing software such as OpenRC and Upstart, older kernels, various toolchains and anything else required by users and various distributions.

On May 29, 2014, support for firmware loading through udev was dropped, as it has been decided that it is kernel's task to load firmware.[12] Two days later, Lennart Poettering suggested this patch be postponed until kdbus starts to be utilized by udev; at that point, it is planned to switch udev to use kdbus as the underlying messaging system, and to get rid of the userspace-to-userspace netlink-based transport.[13]


udev was developed by Greg Kroah-Hartman and Kay Sievers, with much help from Dan Stekloff, among others.


  1. ^ "[systemd-devel] [ANNOUNCE] systemd v219".  
  2. ^ "[systemd-devel] [ANNOUNCE] systemd v227".  
  3. ^  
  4. ^ "Dynamic Device Management in Udev" (PDF). Linux Magazine. 2006-10-01. Retrieved 2008-07-14. 
  5. ^ "HALRemoval". 2011-06-28. Retrieved 2011-09-13. 
  6. ^ "Thunar-volman and the deprecation of HAL in Xfce". 2010-01-17. Retrieved 2011-09-13. 
  7. ^ Sievers, Kay (2012-04-03). "The future of the udev source tree". linux-hotplug (Mailing list). Retrieved 2013-05-22. 
  8. ^ Sievers, Kay, "Commit importing udev into systemd", systemd, retrieved 2013-05-22 
  9. ^ Linus Torvalds (2012-10-03). "Re: udev breakages". linux-kernel (Mailing list). Retrieved 2014-10-28. 
  10. ^ "gentoo/eudev – README". Retrieved 2014-10-28. 
  11. ^ "Gentoo Linux Projects – Gentoo eudev project". Retrieved 2014-10-28. 
  12. ^ "[systemd-devel] [PATCH] Drop the udev firmware loader". 2014-05-29. 
  13. ^ "[systemd-devel] [PATCH] Drop the udev firmware loader". 2014-05-31. 

External links

  • udev source code
  • Discussion of udev rules
  • udev – A Userspace Implementation of devfs by Greg Kroah-Hartman
  • PySDM (Storage Device Manager and udev rule writer)
  • Introduction to device management
  • LWN article about devtmpfs
  • mdev documentation
  • eudev project
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.