Zum Inhalt springen

devfs

aus Wikipedia, der freien EnzyklopÀdie

devfs (engl. Abk. Device Filesystem, ĂŒbersetzt GerĂ€tedateisystem) ist ein spezielles Dateisystem fĂŒr viele Unix-artige Betriebssysteme. Es dient der Verwaltung der GerĂ€tedateien. Da die Implementierung von devfs im Linux-Kernel einige UnzulĂ€nglichkeiten hat und nicht mehr aktiv weiterentwickelt wird, wurde udev entwickelt. Seit Ende Juni 2006 ist devfs nicht mehr Bestandteil des Linux-Kernels und wurde vollstĂ€ndig durch udev ersetzt.

Allgemein werden auf Unix-Systemen viele I/O-GerĂ€te wie Festplatten, Drucker, virtuelle Terminals und Ähnliches als spezielle Dateien (GerĂ€tedateien) behandelt. Soll nun eine Operation an dem GerĂ€t vorgenommen werden, wird diese Operation an der GerĂ€tedatei vorgenommen – das zugrundeliegende Dateisystem der GerĂ€tedateien wandelt dann die jeweilige Operation auf die Datei in eine entsprechende Operation auf das GerĂ€t um.

Zu den Aufgaben von devfs gehört dabei das Erschaffen und Löschen solcher Dateien, wenn beispielsweise neue GerĂ€te (wie USB-Sticks) angebracht und wieder entfernt werden. Ebenso ist devfs auch fĂŒr die Benutzerrechte der GerĂ€tedateien zustĂ€ndig, mithin auch fĂŒr die Rechte, die einzelne Nutzer beim Zugriff auf die GerĂ€te haben.

GegenĂŒber dem statischen /dev-System hat devfs eine Reihe von Vorteilen:

  • devfs zeigt nur EintrĂ€ge der GerĂ€te, die tatsĂ€chlich irgendwann am Computer angeschlossen wurden.
  • devfs stellt einen Mechanismus bereit, mit welchem andere Programme herausfinden können, ob neue GerĂ€te angeschlossen wurden.

Nachteile unter Linux

[Bearbeiten | Quelltext bearbeiten]

Trotz der Vorteile von devfs gegenĂŒber dem klassischen Modell birgt es auch eine Reihe von Nachteilen. Diese sind unter anderem:

  • die Benennung der GerĂ€te ist in Linux nicht konsistent, wenn diese in unterschiedlicher Reihenfolge angeschlossen werden. Unter Solaris besteht dieses Problem dank der Datei /etc/path_to_inst nicht.
  • die Benennung entspricht nicht den Normen der Linux Standard Base.
  • die Benennung der GerĂ€te wird im Kernel-Speicher gehandhabt – gerade bei einer großen Zahl von GerĂ€ten schrĂ€nkt dies andere Programme, die den Kernel-Speicher ebenfalls benötigen, massiv ein.
  • Durch die Erzeugung der GerĂ€te-VerzeichniseintrĂ€ge beim Laden des Treibers entsteht eine zu enge AbhĂ€ngigkeit zwischen GerĂ€tenamen und Treiber. Es ist normalerweise vorteilhaft, wenn ein GerĂ€t „sichtbar“ ist, schon bevor ein ggf. spezialisierter Treiber dafĂŒr geladen wird. Dadurch könnte das eigentliche Laden eines Treibers und die Initialisierung der damit verbundenen Hardware auf den Zeitpunkt verlegt werden, wo das GerĂ€t tatsĂ€chlich gebraucht wird, womit die Gesamtzeit der Initialisierung des Betriebssystems verringert werden könnte. Devfs verhĂ€lt sich genau umgekehrt und erfordert daher das Laden und Initialisieren von Komponenten, die möglicherweise gar nicht benötigt werden.

Diesen Problemen begegnete man beim Linux-Betriebssystem mit der Ersetzung von devfs durch das Softwarepaket udev.

Geschichte von devfs unter Linux

[Bearbeiten | Quelltext bearbeiten]

Im Linux-Kernelbaum 2.2 wurde das devfs eingefĂŒhrt. Die zugrundeliegende Idee war, dass die Kernel-Module selbst Informationen zu den Namen der GerĂ€tedateien, die sie erzeugen, neben den Minor- und Majornummern sowie dem Typ mit sich fĂŒhren. Dadurch konnte der Kernel erstmals die Erzeugung der GerĂ€tedateien selbst ĂŒbernehmen.

Die benötigten bzw. vom Kernel und seinen Modulen gestellten GerĂ€tedateien hat der Kernel anschließend automatisch in dem devfs-Dateisystem mit Hilfe des devfsd-Daemons erstellt. Das Dateisystem wurde dabei ĂŒblicherweise im Verzeichnis /dev gemountet.

Der devfsd-Daemon (Device Filesystem Daemon) war in der Datei /etc/devfsd.conf konfigurierbar. So konnte man unter anderem die gewĂŒnschten Berechtigungen oder BesitzverhĂ€ltnisse je GerĂ€t oder GerĂ€tegruppe eintragen.