Odpowiedzi:
Jest to przekazywane udev
na nowoczesnych systemach Linux. udev
Demon zaczął z systemem wyszuka w /etc/udev/rules.d
i /lib/udev/rules.d
i potrwa zasady interpretowania zdarzeń jądra. Włożenie dysku USB spowoduje zdarzenie, udev
wyszuka pasującą regułę i wykona ją.
Same reguły określą, co robi twój system. W ostatnich latach udev
skontaktował się z HAL, który ostrzegałby aplikacje za pośrednictwem DBUS. To podejście jest obecnie przestarzałe na rzecz ujednoliconego udev
rozwiązania, które, jak zakładam, będzie wymagało udevd
komunikacji dbus
bezpośrednio lub przez dbus-send .
Możesz monitorować działania udev
via udevadm monitor
.
Nie jestem jeszcze do końca tego pewny, więc weź to z odrobiną soli i więcej badań.
Zaczyna się od podsystemu hotplug jądra. Po skonfigurowaniu urządzenia wywołuje ono dowolny program przestrzeni użytkownika skonfigurowany do obsługi zdarzeń hotplug (jeśli został ustawiony przezecho hotplug_handler > /proc/sys/kernel/hotplug
), albo wysyła pakiet danych przez gniazdo kobject_uevent netlink. Kiedy jądro uruchamia moduł obsługi hotplug, ustawia niektóre zmienne środowiskowe. Kiedy jądro wysyła pakiet danych, zawiera pary klucz = wartość. Jeśli chcesz, możesz ustawić skrypt, który rejestruje środowisko i ustawić go jako moduł obsługi (oczywiście nie w systemie produkcyjnym - konfiguracja testowa).
Zwykle udev jest konfigurowany jako moduł obsługi i będzie miał kilka reguł dotyczących obsługi zdarzeń. Stamtąd może uruchamiać inne programy, które wykonują inne czynności (takie jak wydawanie komunikatów dbus). Te zasady udev są w dużym stopniu zależne od konkretnego podziału zainteresowań.
W tym wątku jest wiele informacji, w których ktoś próbuje napisać dokumentację - zwróć uwagę, że pierwsza wiadomość nie jest dokładna; Czytaj dalej.
udev
nasłuchują uevents na gnieździe netlink. (W starym sposobie występowały problemy z serializacją / współbieżnością.)