Open Source im professionellen Einsatz

© pixelquelle.de

Wie dynamisches Gerätemanagement mit Udev funktioniert

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.

Vom guten alten Unix hat Linux das Prinzip geerbt: Alles ist eine Datei. Diese Abstraktion erlaubt es den Programmen, auf angeschlossene Hardware über so genannte Devicenodes (Gerätedateien) genauso zuzugreifen wie auf gewöhnliche Files. Die Spezialdateien lassen sich über dieselben Systemaufrufe öffnen, lesen, schreiben oder schließen.

Untereinander unterscheiden sie sich durch ihren Namen, ihren Typ (Block- oder Zeichengerät) und ihre Major- sowie Minor-Nummer. So repräsentiert auf einem Linux-System zum Beispiel der Devicenode »/dev/hda1« die erste Partition der Festplatte »/dev/hda« und trägt dabei die Major-Nummer 3 und die Minor-Nummer 1.

Der Befehl »mknod« legt die Gerätedateien an. Bei traditioneller Verwaltung dieser Files geschieht dies während der Installation. Das Verzeichnis »/dev« enthält danach für alle Zeit einen Eintrag für jedes Gerät, das der Admin möglicherweise später einmal dem System hinzufügen möchte - und das können gut einige tausend sein.

Statisch ist nicht übersichtlich

Allerdings leidet die Übersichtlichkeit unter der Fülle an Einträgen, die zudem für den konkreten Rechner größtenteils unnötig sind, weil er nie mit den passenden Geräten in Kontakt kommt. Darüber hinaus gibt es weitere Nachteile. So spiegelt die Verzeichnis- und Dateistruktur nicht wider, welche Geräte tatsächlich vorhanden sind oder korrekt von Treibern erkannt wurden.

Außerdem bestimmt bei diesem herkömmlichen Ansatz die Reihenfolge, in der ein Benutzer Geräte anschließt, zugleich auch darüber, welches Gerät der Kernel welcher Gerätedatei zuordnet. Die erste erkannte SCSI-Platte bildet sich so beispielsweise immer auf das Devicefile »/dev/sda« ab, die nächste, danach angesteckte auf »/dev/sdb« und so fort. Das kann dazu führen, dass ein und dasselbe Gerät zu verschiedenen Zeiten über mehrere Gerätedateien erreichbar ist und der Rechner es folglich an verschiedene Verzeichnisse mountet.

Besser bei Bedarf

Als viel bessere Lösung erweist sich daher eine Verfahrensweise, bei der das System Gerätedateien erst in dem Moment anlegt oder löscht, in dem der Benutzer Hardware hinzufügt beziehungsweise entfernt. Über die Zuordnung von Namen zu Devices entscheiden hier Regeln anstelle der Reihenfolge. So kann man etwa garantieren, dass eine bestimmte Festplatte immer über dasselbe File zu erreichen ist und sich immer an derselben Stelle ins Filesystem einbindet - ganz egal welche anderen Geräte zu welchem Zeitpunkt den Bus mitbenutzten oder nicht.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook