Dynamische Geräteverwaltung mit Udev
Knoten knüpfen
von René Rebe
Erschienen im Linux-Magazin
2005/04
Statische Gerätedateien sind angesichts aktueller Hardware nicht mehr zeitgemäß. So erfordert Hotplugging an USB- und anderen Bussen dynamisches Gerätehandling. DevFS erfüllt zwar viele Ansprüche an eine solche Lösung, wird aber nun von Udev abgelöst.
Von Unix hat Linux das Konzept "Alles ist eine Datei" geerbt. Dabei greifen Programme auf angeschlossene Hardware über so genannte Device Nodes (Gerätedateien) zu. Diese speziellen Dateien sind durch ihren Typ (Block- oder Zeichengerät) sowie Major- und Minor-Nummer definiert und wurden bislang mit »mknod« angelegt. Bei dieser statischen Lösung enthält das Verzeichnis »/dev« für jedes Gerät, das eventuell einmal dem System hinzugefügt werden könnte, bereits einen Eintrag - insgesamt einige tausend Gerätedateien, was die Übersicht doch sehr erschwert.
Zu statisch
Das Konzept hat noch weitere Nachteile: So bietet die Struktur keinen Überblick, welche Geräte wirklich vorhanden sind oder korrekt von Treibern erkannt wurden. Zudem besitzen Device Nodes kein über mehrere Bootvorgänge stabiles Namensschema: Welches SCSI-Gerät via »/dev/sg*« oder welcher USB-Drucker mit »/dev/usblp?« angesprochen wird, hängt allein von der zufälligen Reihenfolge ab, in der sie ins System gelangen. Wünschenswert ist oft auch eine flexiblere Namensgebung, etwa in Serversystemen mit sehr vielen Platten, wo ein eindeutiger UUID (Universal Unique Identifier) beim gezielten Wiederfinden hilft oder dem Anwender besser lesbare Namen bringt.
Alternative: DevFS
Standardmäßig verwendet zum Beispiel Mandrake 10.0 statt statischer Files das DevFS, um die beschriebenen Probleme zu lösen. Da DevFS bereits Thema in Heft 03/04[1] war, soll an dieser Stelle ein kurzer Überblick genügen.
DevFS erfüllt einen Teil der oben beschriebenen Anforderungen: Es erzeugt nur für erkannte Geräte überhaupt Device Nodes und verwendet dafür auch lesbare Namen, die der Benutzer durch Symlinks erweitert kann. Seine Arbeit erledigt DevFS im Kernel. Gerätetreiber benötigen spezielle Unterstützung und müssen mit den Funktionen »devfs_mk _dir()«, »devfs_mk_bdev()«, »devfs_mk _cdev()« und »devfs_remove()« die Device Nodes selbst registrieren und wieder entfernen.
DevFS verwendet standardmäßig andere Namen als die gewohnten. IDE-Geräte finden sich in »/devfs/ide/«, SCSI-Geräte in »/devfs/scsi/«, serielle Schnittstellen in »/devfs/tts/« wieder. Alle Festplatten werden durch symbolische Links in »/devfs/discs«, CD-ROMs in »/devfs/cdroms« zusammengefasst. Die Dateinamen sind bei DevFS auch fest im Kernel kodiert. Jeder Treiber muss Funktionen für die spezielle DevFS-Registrierung enthalten.
Nach Aussagen vieler Kernelentwickler enthält DevFS allerdings auch Race-Conditions, die bei ungünstigen Event-Reihenfolgen auftreten können. Aus diesen und anderen Gründen benutzen die meisten aktuellen Distributionen mittlerweile das andere dynamische Gerätedatei-System Udev.
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|