Я еще не совсем уверен в этом, так что возьмите его с собой и немного исследований.
Он начинается с подсистемы горячего подключения ядра. После настройки устройства оно либо вызывает любую пользовательскую программу, настроенную для обработки событий горячего подключения (если она была установлена echo hotplug_handler > /proc/sys/kernel/hotplug
), либо отправляет пакет данных через сокет netlink kobject_uevent. Когда ядро запускает обработчик горячего подключения, он устанавливает некоторые переменные среды. Когда ядро отправляет пакет данных, оно включает пары ключ = значение. Если вы хотите, вы можете установить скрипт, который просто регистрирует среду и устанавливает ее в качестве обработчика (конечно, не в вашей производственной системе - тестовая установка).
Обычно udev настраивается как обработчик, и у него будет несколько правил для настройки обработки событий. Оттуда он может запускать другие программы, которые делают другие вещи (например, выдают сообщения dbus). Эти правила udev сильно зависят от конкретного распределения интересов.
В этой теме много информации, где кто-то пытается написать какую-то документацию - обратите внимание, что первое сообщение не является точным; Продолжай читать.
udev
слушают события в сокете netlink. (У старого способа были проблемы с сериализацией / параллелизмом.)