Open Source im professionellen Einsatz
Linux-Magazin 04/2005

Dynamische Geräteverwaltung mit Udev

Knoten knüpfen

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.

394

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.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Geräteverwalter

    Seit Ende Juni ist Dev-FS nun endlich Geschichte: Nachdem es mehr als drei Jahre auf dem Abstellgleis rangierte, verdrängte sein Nachfolger Udev den Geräteverwalter jetzt endgültig aus dem Kernel. Das Linux-Magazin blickt dem Sieger unter die Haube.

  • Raus. Rein. Passt!

    Geräte im laufenden Betrieb einstöpseln und sofort damit arbeiten - das ist für alle Linux-User ein angenehmer Luxus, für jeden Notebookbesitzer und viele Server dagegen ein Muss. Die komplexe Technik dahinter will aber beherrscht sein. Die Grundlage dafür rollt dieser Schwerpunkt aus.

  • Udev-Discover zeigt Geräteinformationen

    Der Open-Source-Entwickler José Félix Ontañón hat eine GUI-Anwendung namens Udev-Discover geschrieben, mit der sich Hardwareinformationen durchblättern lassen.

  • Gerätepark-Platz

    Devfs bringt mit einem virtuellen Directory-Baum Ordnung und Übersicht ins chaotische »/dev«-Verzeichnis mit seinen vielen statischen Einträgen. Gentoo-Linux und Madrake arbeiten schon damit, die anderen kann man nachrüsten.

  • Lokaler Root-Exploit in Udev

    Mit dem Udev-Subsystem ermöglicht der Linux-Kernel im Zusammenspiel mit einem Userland-Programm dynamisch Gerätedateien anzulegen und wieder zu entfernen. Nun wurde bekannt, dass der Kommunikationskanal zwischen beiden nicht auf Authentizität prüft. So können User Rootrechte erhalten.

comments powered by Disqus

Ausgabe 10/2016

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.