12.4. Booten und erstes Einrichten des Geräts

Alle Geräteereignisse, die während des Boot-Vorgangs stattfinden, bevor der udev-Daemon ausgeführt wird, gehen verloren. Dies liegt daran, dass die Infrastruktur für die Behandlung dieser Ereignisse sich in dem Root-Dateisystem befindet und zu diesem Zeitpunkt nicht verfügbar ist. Um diesen Verlust auszugleichen, stellt der Kernel eine uevent-Datei für jedes Gerät im sysfs-Dateisystem zur Verfügung. Durch das Schreiben von add in die entsprechende Datei sendet der Kernel dasselbe Ereignis, das während des Boot-Vorgangs verloren gegangen ist, neu. Eine einfache Schleife über alle uevent-Dateien in /sys löst alle Ereignisse erneut aus, um die Geräteknoten zu erstellen und die Geräteeinrichtung durchzuführen.

Beispielsweise kann eine USB-Maus, die während des Boot-Vorgangs vorhanden ist, nicht durch die frühe Boot-Logik initialisiert werden, da der Treiber zum entsprechenden Zeitpunkt nicht verfügbar ist. Das Ereignis für die Geräteerkennung ist verloren gegangen und konnte kein Kernel-Modul für das Gerät finden. Anstatt manuell nach möglicherweise angeschlossenen Geräten zu suchen, fordert udev lediglich alle Geräteereignisse aus dem Kernel an, wenn das Root-Dateisystem verfügbar ist. Das Ereignis für die USB-Maus wird also lediglich erneut ausgeführt. Jetzt wird das Kernel-Modul auf dem eingehängten Root-Dateisystem gefunden und die USB-Maus kann initialisiert werden.

Vom userspace aus gibt es keinen erkennbaren Unterschied zwischen einer coldplug-Gerätesequenz und einer Geräteerkennung während der Laufzeit. In beiden Fällen werden dieselben Regeln für den Abgleich verwendet und dieselben konfigurierten Programme ausgeführt.