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