Sysfs
# Sysfs

Sysfs ist ein virtuelles Dateisystem des Linux-Kernels. Es exportiert Informationen über verschiedene Kernel-Subsysteme, Hardware und assoziierte Geräte-Treiber durch virtuelle Dateien in den Benutzer-Modus. Bestimmte Parameter können über dieses Interface auch konfiguriert werden.

Sysfs bietet eine ähnliche Funktionalität wie der Sysctl-Mechanismus in BSD-Betriebssystemen, mit dem Unterschied, dass Sysfs als virtuelles Dateisystem implementiert wurde.

## Geschichte

Während der Entwicklung des Linux-Kernels 2.5 wurde das Linux-Treiber-Modell vorgestellt, welches die folgenden Schwachstellen der Kernel-Version 2.4 beheben sollte:

* Es gab keine einheitliche Methode, um zu zeigen, dass Beziehungen zwischen Geräte-Treibern bestehen.
* Es gab keine generischen Hotplug-Mechanismen.
* procfs wurde mit Informationen, die nicht in Verbindung mit Prozessen standen, belastet.

Es wurde ursprünglich von Patrick Mochel entwickelt. Maneesh Soni schrieb später den sogenannten „sysfs backing store patch“, welcher die Speichernutzung auf großen Systemen reduziert.

Während des nächsten Jahres der Entwicklung der Kernel-Version 2.5 begannen die infrastrukturellen Kapazitäten des Treibermodells, früher ddfs genannt, sich für die Kernel-Subsysteme als nützlich zu erweisen. Etwa zur gleichen Zeit wurden die kobjects entwickelt, um eine zentrale Objektverwaltung zu ermöglichen. Dabei wurde der Name von driverfs zu sysfs geändert, um die Bandbreite zu verdeutlichen.

Sysfs ist üblicherweise unter dem Pfad /sys eingehängt.

## Unterstützte Bussysteme

### PCI

    Exportiert Informationen über PCI- und PCIe-Geräte.

### PCI Express

    Exportiert Informationen über PCI-Express-Geräte.

### USB

    Beinhaltet USB-Geräte und USB-Hosts.

### S/390-Bussysteme

    Da die S/390-Architektur Geräte beinhaltet, die in dieser Form nirgendwo sonst existieren, müssen spezielle Bussysteme erstellt werden:
   ### css
       Enthält Subkanäle (zurzeit wird nur ein einziger I/O-Treiber für Subkanäle unterstützt).
   ### ccw
       Enthält an Kanäle angehängte Geräte.
   ### ccwgroup
       Virtuelle Geräte, welche vom Benutzer erstellt werden und aus ccw-Geräten bestehen.
   ### iucv
       Virtuelle Geräte wie netiucv-Geräte, welche die IUCV-Schnittstelle von virtuellen Maschinen verwenden.
