Kapitel 32. Das Hotplug-System

Inhaltsverzeichnis

32.1. Geräte und Schnittstellen
32.2. Hotplug-Ereignisse
32.3. Hotplug-Gerätekonfiguration
32.4. Automatisches Laden von Modulen
32.5. Das Coldplug Startskript
32.6. 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 hinzugefügt und entfernt werden können, sondern für alle Geräte, die während des Systemstarts gefunden werden. Es arbeitet eng mit dem sysfs-Dateisystem und udev zusammen, die unter Kapitel 33, Dynamische Device Nodes mit udev beschrieben sind.

Bis der Kernel gestartet ist, werden nur absolut notwendige Geräte wie Bussystem, Boot-Laufwerke und Tastatur initialisiert. Der Kernel löst Hotplug-Ereignisse für alle gefundenen Geräte aus. Der Daemon udevd überwacht diese Ereignisse und führt udev aus, um den Geräteschnittstelle zu erzeugen und das Gerät zu konfigurieren. Für Geräte, die nicht automatisch erkannt werden können, wie alte ISA-Karten, wird eine statische Konfiguration verwendet.

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 statischer Satz von Konfigurationsdaten als Basis für die Initialisierung von Geräten verwendet. Hotplug-Ereignisse wurden durch separate Skripts, Agenten genannt, behandelt. Mit dieser Version von SUSE Linux wird das Hotplug-Subsystem in udev integriert, wobei udev-Regeln für die Funtionalität der früheren Hotplug-Agenten sorgen.

Die allgemeinen Einstellungen für das Hotplug-Subsystem finden Sie in /etc/sysconfig/hotplug. Jede Variable wird durch einen Kommentar erklärt. Die allgemeine Gerätekonfiguration wird abhängig von den Zuordnungsregeln in /etc/udev/rules.d vorgenommen (siehe Kapitel 33, Dynamische Device Nodes mit udev). Die Konfigurationsdateien für bestimmte Geräte befinden sich unter /etc/sysconfig/hardware. Der Hotplug-Ereignisrückruf, der in früheren Versionen von SUSE Linux verwendet wurde, /proc/sys/kernel/hotplug, ist gewöhnlich leer, weil udevd Hotplug-Meldungen über einen Netlink-Socket empfängt.

32.1. Geräte und Schnittstellen

Das Hotplug-System konfiguriert nicht nur Geräte, sondern auch Schnittstellen. Ein Gerät wird in der Regel an einen Bus angeschlossen und sorgt für die Funktionalität einer Schnittstelle. Eine Schnittstelle stellt die für den Benutzer sichtbare Abstraktion entweder des gesamten oder eines bestimmten Teilsatzes eines Geräts dar. Für ein Gerät ist normalerweise ein Gerätetreiber in Form eines Kernel-Moduls erforderlich, damit es richtig funktioniert. Außerdem können Treiber auf höherer Ebene erforderlich sein, damit dem Benutzer eine Benutzeroberfläche zur Verfügung steht. Schnittstellen werden meistens dargestellt durch Geräteknoten, die durch udev erzeugt werden. Die Unterscheidung zwischen Geräten und Schnittstellen ist wichtig für das Verständnis des Gesamtkonzepts.

Geräte, die zum Dateisystem sysfs gehören, finden Sie unter /sys/devices. Die Schnittstellen liegen unter /sys/class oder /sys/block. Alle Schnittstellen in sysfs sollten eine Verknüpfung zu ihren Geräten haben. Es gibt jedoch noch Treiber, die diese Verknüpfung nicht automatisch hinzufügen. Ohne diese Verknüpfung ist unklar, zu welchem Gerät die Schnittstelle gehört und es ist nicht möglich, eine geeignete Konfiguration zu finden.

Geräte werden durch eine Gerätebeschreibung angesprochen. Dies kann der Gerätepfad in sysfs (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0) sein, eine Beschreibung des Verbindungspunkts (bus-pci-0000:02:00.0), eine individuelle ID (id-32311AE03FB82538) oder etwas ähnliches. In der Vergangenheit wurden Schnittstellen durch ihre Namen adressiert. Diese Namen stellten eine einfache Nummerierung der vorhandenen Geräte dar und konnten geändert werden, wenn Geräte hinzugefügt oder entfernt wurden.

Schnittstellen können auch durch eine Beschreibung des zugehörigen Geräts adressiert werden. In der Regel gibt der Kontext an, ob die Beschreibung sich auf das Gerät oder auf die Schnittstelle bezieht. Typische Beispiele für Geräte, Schnittstellen und deren Beschreibungen sind:

PCI-Netzwerkkarte

Ein Gerät, das an den PCI-Bus angeschlossen ist (/sys/devices/pci0000:00/0000:00:1e.0/0000:02:00.0 oder bus-pci-0000:02:00.0) und über eine Netzwerkschnittstelle verfügt (eth0, id-00:0d:60:7f:0b:22 oder bus-pci-0000:02:00.0). Die Netzwerkschnittstelle wird durch Netzwerkdienste verwendet oder mit einem virtuellen Netzwerkgerät wie ein Tunnel oder VLAN verbunden, das auch wiederum über eine Schnittstelle verfügt.

PCI SCSI-Controller

Ein Gerät (/sys/devices/pci0000:20/0000:20:01.1/host1/1:0:0:0 oder bus-scsi-1:0:0:0), das mehrere physische 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 oder bus-scsi-1:0:0:0) mit mehreren Schnittstellen (/sys/block/sda*).