Was passiert, wenn ein USB-Stick eingesteckt ist?

21

Wie fließen USB-Ereignisse vom Kernel-Space zum User-Space? Wenn ich ein USB-Laufwerk anschließe, wird auf meinem Desktop ein Popup angezeigt. In welcher Reihenfolge wird das neue USB-Laufwerk erkannt, gemountet und das Popup angezeigt?

Sen
quelle

Antworten:

6

Dies geschieht udevauf modernen Linux-Systemen. Der udevDämon mit dem System gestartet sucht in /etc/udev/rules.dund /lib/udev/rules.dund Anpassungsregeln für die Kernel - Ereignisse ausgeführt werden . Das Einstecken eines USB-Laufwerks löst ein Ereignis aus, udevsucht nach einer passenden Regel und führt diese aus.

Die Regeln selbst bestimmen, was Ihr System tut. In den letzten Jahren udevhat HAL mitgeteilt, dass Anwendungen über DBUS alarmiert werden. Dieser Ansatz ist zugunsten einer vereinheitlichten udevLösung hinfällig. Ich gehe davon aus, dass die udevdKommunikation dbusdirekt oder über dbus-send erfolgen wird .

Sie können die Aktivitäten von udevvia überwachen udevadm monitor.

ewindisch
quelle
2

Ich bin noch nicht ganz sicher, also nimm es mit einem Körnchen Salz und mehr Nachforschungen.

Es beginnt mit dem Kernel-Hotplug-Subsystem. Nachdem ein Gerät eingerichtet wurde, ruft es entweder echo hotplug_handler > /proc/sys/kernel/hotplugdas User-Space- Programm auf, das für die Verarbeitung von Hotplug-Ereignissen eingerichtet wurde (sofern eines von festgelegt wurde ), oder sendet ein Datenpaket über den Netlink-Socket kobject_uevent. Wenn der Kernel den Hotplug-Handler startet, werden einige Umgebungsvariablen eingerichtet. Wenn der Kernel ein Datenpaket sendet, enthält es Schlüssel = Wert-Paare. Wenn Sie möchten, können Sie ein Skript einrichten, das nur die Umgebung protokolliert und als Handler konfiguriert (natürlich nicht auf Ihrem Produktionssystem - ein Test-Setup).

Normalerweise wird udev als Handler eingerichtet, und es werden verschiedene Regeln für die Behandlung von Ereignissen festgelegt. Von dort aus kann es andere Programme starten, die andere Aufgaben ausführen (z. B. dbus-Nachrichten ausgeben). Diese udev-Regeln hängen stark von der jeweiligen Interessensverteilung ab.

In diesem Thread gibt es viele Informationen, in denen jemand versucht, eine Dokumentation zu schreiben. Beachten Sie, dass die erste Nachricht nicht korrekt ist. weiter lesen.

Shawn J. Goff
quelle
2
Es war einmal genau, aber nicht mehr lange: Moderne udevlauschen auf einem Netlink-Socket nach Ereignissen. (Der alte Weg hatte Serialisierungs- / Parallelitätsprobleme.)
ephemient
Da ich neu in diesem Teil von Linux bin ( udev , hotplug ), hätte ich gerne eine Idee für jede Zeile, die Sie hier beschrieben haben. So könnte man auf erarbeiten Sie beginnt mit dem Kernel Hotplug - Subsystem .
Sen
@ephemient: Danke für die Antwort. Könnten Sie bitte den Ablauf der Ereignisse erläutern?
Sen