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 can reload the in-memory representation of all
rules with the command udevadm control reload_rules.
This is also done when running /etc/init.d/boot.udev
reload. For more details on udev rules and their syntax, refer
to Section 19.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.