Co dzieje się po podłączeniu napędu USB?


21

Jaki jest przepływ zdarzeń USB z przestrzeni jądra do przestrzeni użytkownika? Po podłączeniu napędu USB pojawia się wyskakujące okienko - jaka jest sekwencja zdarzeń, które prowadzą od wykrycia nowego napędu USB do jego zamontowania i wyświetlenia tego wyskakującego okienka?

Odpowiedzi:


6

Jest to przekazywane udevna nowoczesnych systemach Linux. udevDemon zaczął z systemem wyszuka w /etc/udev/rules.di /lib/udev/rules.di potrwa zasady interpretowania zdarzeń jądra. Włożenie dysku USB spowoduje zdarzenie, udevwyszuka pasującą regułę i wykona ją.

Same reguły określą, co robi twój system. W ostatnich latach udevskontaktował się z HAL, który ostrzegałby aplikacje za pośrednictwem DBUS. To podejście jest obecnie przestarzałe na rzecz ujednoliconego udevrozwiązania, które, jak zakładam, będzie wymagało udevdkomunikacji dbusbezpośrednio lub przez dbus-send .

Możesz monitorować działania udevvia udevadm monitor.


2

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.


2
Dawno, dawno temu było to dokładne, ale nie od dawna: nowoczesne udevnasłuchują uevents na gnieździe netlink. (W starym sposobie występowały problemy z serializacją / współbieżnością.)
ephemient

Ponieważ jestem nowy w tej części Linuksa ( udev , hotplug ), chciałbym mieć pomysł na każdą linię, którą tu opisałeś. Czy mógłbyś więc rozwinąć tę kwestię na początku z podsystemem hotplug jądra .
Sen

@ephemient: Dzięki za odpowiedź. Czy możesz wyjaśnić sekwencję wydarzeń.
Sen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.