Kapitel 18. Das Hotplug-System

Inhaltsverzeichnis

18.1. Geräte und Schnittstellen
18.2. Hotplug-Events
18.3. Hotplug-Agenten
18.4. Automatisches Laden von Modulen
18.5. Hotplug mit PCI
18.6. Das Boot-Skript Coldplug
18.7. Fehleranalyse

Zusammenfassung

Das Hotplug-System steuert die Initialisierung der meisten Geräte in einem Computer. Es wird nicht nur für Geräte verwendet, die während des Betriebs ein- und ausgesteckt werden können, sondern für alle Geräte, die während des Bootvorgangs erkannt werden. Es arbeitet eng mit dem sysfs-Dateisystem und udev zusammen (siehe Kapitel 19, Dynamische Device Nodes mit udev).

Vor dem Booten des Kernels werden nur absolut notwendige Geräte wie Bussystem, Bootdisketten oder Tastatur initialisiert. Der Kernel löst für alle erkannten Geräte Hotplug-Events aus. Der udevd-Daemon lauscht auf diese Events und ruft die entsprechenden Hotplug-Skripten auf, um diese Geräte zu initialisieren. Für Geräte, die nicht automatisch erkannt werden order deren Events in einem frühen Stadium des Bootvorgangs verloren gehen, gibt es Coldplug. Coldplug wiederholt aufgenommene Events oder durchsucht das System nach noch nicht initialisierten Geräten. Es benutzt für ältere Geräte wie ISA statische Konfigurationen.

Bis auf einige historisch bedingte Ausnahmen werden jetzt die meisten Geräte initialisiert, sobald sie zugänglich sind, also entweder beim Booten oder beim Hotplugging. Diese Initialisierung zieht die Registrierung einer Schnittstelle nach sich. Durch die Registrierung werden wiederum Hotplug-Events ausgelöst, die eine automatische Einrichtung der betreffenden Schnittstelle bewirken.

In früheren Versionen von SUSE LINUX wurde ein Satz Konfigurationsdaten als Grundlage für die Initialisierung verwendet. Jetzt betrachtet das System jedes verfügbare Gerät und such nach passenden Konfigurationsdaten oder generiert diese.

Die wichtigsten Hotplug-Funktionen konfigurieren Sie in zwei Dateien: In /etc/sysconfig/hotplug finden Sie Variablen, die das Verhalten von hotplug und coldplug beeinflussen. Jede Variable wird durch einen Kommentar erklärt. Die Datei /proc/sys/kernel/hotplug enthält den Namen des ausführbaren Programms, das vom Kernel aufgerufen wird. Gerätekonfigurationen befinden sich in /etc/sysconfig/hardware. Ab SUSE LINUX 9.3 ist diese Datei normalerweise leer, da udevd Hotplug-Meldungen über einen Netlink-Socket empfängt.

18.1. Geräte und Schnittstellen

Das Hotplug-System verwaltet nicht nur Geräte, sondern auch Schnittstellen. Ein Gerät ist entweder mit einem Datenbus oder einer Schnittstelle verbunden. Ein Bus kann als Mehrfachschnittstelle betrachtet werden. Eine Schnittstelle dagegen stellt eine Verbindung zwischen verschiedenen Geräten oder zu einer Anwendung dar. Es gibt auch virtuelle Geräte wie Netzwerktunnel. Geräte erfordern normalerweise Treiber in der Form von Kernel-Modulen. Schnittstellen werden meistens durch Device Nodes dargestellt, die von udev generiert werden. Die Trennung von Gerät und Schnittstelle ist wesentlich für das Verständnis des gesamten Konzeptes.

Geräte, die im sysfs-Dateisystem eingetragen sind, findet man unter /sys/devices, Schnittstellen liegen unter /sys/class oder /sys/block. Alle Schnittstellen in sysfs sollten dort eine Verknüpfung (engl. link) zu ihrem Gerät besitzen. Es gibt allerdings noch immer einige Treiber, die diesen Link nicht automatisch hinzufügen. Ohne diesen Link ist es ungewiss, zu welchem Gerät die Schnittstelle gehört, und es ist nicht möglich, eine geeignete Konfiguration zu finden.

Geräte werden über eine Gerätebeschreibung angesprochen. Das kann entweder der „devicepath“ in sysfs (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0), eine Beschreibung des Anschlussortes (bus-pci-0000:02:00.0), eine individuelle ID (id-32311AE03FB82538) oder etwas Vergleichbares sein. Schnittstellen wurden bisher immer über ihren Namen angesprochen. Diese Namen sind allerdings eine einfache Durchnummerierung der vorhandenen Geräte und können sich deshalb ändern, wenn Geräte hinzugefügt werden oder wegfallen.

Schnittstellen können auch durch eine Beschreibung des zugehörigen Gerätes angesprochen werden. Ob mit der Beschreibung das Gerät selbst oder dessen Schnittstelle gemeint ist, geht gewöhnlich aus dem Kontext hervor. Typische Beispiele für Geräte, Schnittstellen und deren Beschreibungen sind beispielsweise:

PCI-Netzwerkkarte

Ein Gerät, das mit dem PCI-Bus verbunden ist (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 oder bus-pci-0000:02:00.0) und über eine Netzwerk-Schnittstelle verfügt (eth0, id-00:0d:60:7f:0b:22 oder bus-pci-0000:02:00.0). Diese wird von Netzwerkdiensten benutzt oder ist mit einem virtuellen Netzwerkgerät wie einem Tunnel oder VLAN verbunden, welches wiederum eine Schnittstelle besitzt.

PCI SCSI Controller

Ein Gerät (/sys/devices/pci0000:20/0000:20:01.1, usw.), das mehrere physikalische Schnittstellen in Form eines Busses (/sys/class/scsi_host/host1) zur Verfügung stellt.

SCSI Festplatte

Ein Gerät (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0, bus-scsi-1:0:0:0) mit mehreren Schnittstellen (/sys/block/sda*).


SUSE LINUX Administrationshandbuch 9.3