события генерируются самим ядром (то есть драйверами ядра).
udev получает их по netlink (7), используя семейство NETLINK_KOBJECT_UEVENT, группа 1. Затем он добавляет различные дополнительные поля из правил & hwdb и повторно передает расширенные события в группу 2 kobject-uevent, где libudev наконец получает их.
Можно запускать события вручную (например, записывая «add» или «change» в /sys/…/uevent
файл данного устройства ), но обычно это не делается, за исключением использования «udevadm trigger».