devfs
devfs(engl.Abk.DeviceFilesystem,übersetztGerätedateisystem) ist ein speziellesDateisystemfür vieleUnix-artige Betriebssysteme.Es dient der Verwaltung derGerätedateien.Da die Implementierung von devfs imLinux-Kerneleinige Unzulänglichkeiten hat und nicht mehr aktiv weiterentwickelt wird, wurdeudeventwickelt. Seit Ende Juni 2006 ist devfs nicht mehr Bestandteil des Linux-Kernels und wurde vollständig durch udev ersetzt.
Arbeitsweise
[Bearbeiten|Quelltext bearbeiten]Allgemein werden auf Unix-Systemen vieleI/O-Geräte wieFestplatten,Drucker,virtuelle Terminalsund Ä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 (wieUSB-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
[Bearbeiten|Quelltext bearbeiten]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 derLinux Standard Base.
- die Benennung der Geräte wird imKernel-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 beimLinux-Betriebssystem mit der Ersetzung von devfs durch das Softwarepaketudev.
Geschichte von devfs unter Linux
[Bearbeiten|Quelltext bearbeiten]Im Linux-Kernelbaum 2.2 wurde dasdevfseingeführt. Die zugrundeliegende Idee war, dass dieKernel-Moduleselbst Informationen zu den Namen derGerä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 desdevfsd-Daemonserstellt. Das Dateisystem wurde dabei üblicherweise im Verzeichnis/devgemountet.
Derdevfsd-Daemon (Device Filesystem Daemon) war in der Datei/etc/devfsd.confkonfigurierbar. So konnte man unter anderem die gewünschtenBerechtigungen oder Besitzverhältnisseje Gerät oder Gerätegruppe eintragen.