udev (userspace ) is a device manager for the Linux kernel. As the successor of devfsd and hotplug, udev primarily manages device nodes in the directory. At the same time, udev also handles all user space events raised when hardware devices are added into the system or removed from it, including firmware loading as required by certain devices. It is an operating system's kernel that is responsible for providing an abstract interface of the hardware to the rest of the software. Being a monolithic kernel, the Linux kernel does exactly that: device drivers are part of the Linux kernel, and make up more than half of its source code. Hardware can be accessed through system calls or over their device nodes. To be able to deal with peripheral devices that are hotplug-capable in a user-friendly way, a part of handling all of these hotplug-capable hardware devices was handed over from the kernel to a daemon running in user-space. Running in user space serves security and stability purposes. Device drivers are part of the Linux kernel, in which their primary functions include device discovery, detecting device state changes, and similar low-level hardware functions. After loading a device driver into memory from the kernel, detected events are sent out to the userspace daemon udevd. It is the device manager, , that catches all of these events and then decides what shall happen next. For this, has a very comprehensive set of configuration files, which can all be adjusted by the computer administrator, according to their needs. In case a new storage device is connected over USB, is notified by the kernel and itself notifies the udisksd-daemon. That daemon could then mount the file systems. In case a new Ethernet cable is plugged into the Ethernet NIC, is notified by the kernel and itself notifies the NetworkManager-daemon. The NetworkManager-daemon could start dhclient for that NIC, or configure according to some manual configuration. The complexity of doing so forces application authors to re-implement hardware support logic.
Mathias Josef Payer, Atri Bhattacharyya, Uros Tesic
Rachid Guerraoui, Mihail Igor Zablotchi
David Atienza Alonso, Giovanni Ansaloni, José Angel Miranda Calero, Rubén Rodríguez Álvarez, Juan Pablo Sapriza Araujo, Benoît Walter Denkinger, Ruben Rodriguez