The required device information is exported by the sysfs file system. For every device the kernel has detected and initialized, a directory with the device name is created. It contains attribute files with device-specific properties.
Every time a device is added or removed, the kernel sends a uevent to
notify udev of the change. The udev daemon reads and parses all provided
rules from the /etc/udev/rules.d/*.rules
files once at
start-up and keeps them in memory. If rules files are changed, added, or
removed, the daemon receives an event and updates the in-memory
representation of the rules. For more details on udev rules and their
syntax, refer to Section 11.6, “Influencing Kernel Device Event Handling with udev Rules”.
Every received event is matched against the set of provides rules. The rules can add or change event environment keys, request a specific name for the device node to create, add symlinks pointing to the node, or add programs to run after the device node is created. The driver core uevents are received from a kernel netlink socket.