Devfs

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.

Arbeitsweise

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.

Vorteile

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

Nachteile unter Linux

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

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

Geschichte von devfs unter Linux

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.