Inhaltsverzeichnis
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.
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:
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.
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.
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*).