LFS devfs
Inhaltsverzeichnis |
Einführung
Im Verzeichnis /dev befinden sich normalerweise Device Nodes, die den Zugriff auf Geräte (z.B. Festplatten, Maus, Soundkarte) erlauben. Es gibt zwei verschiedene Arten, character devices (unbuffered I/O) und block devices (mit Buffer). Diese nötigen Gerätedateien werden normalerweise mit MAKEDEV angelegt, ohne Gerätedatei ist kein Zugriff möglich. Aus diesem Grunde existieren normalerweise Unmengen von Gerätedateien für größtenteils nicht vorhandene Geräte. Das devfs Dateisystem legt diese Gerätedateien dynamisch an, der Einsatz von MAKEDEV ist unnötig, es existieren nur noch Gerätedateien für existierende Geräte mit Treiber. Weiterhin sorgt devfs für eine logisch nachvollziehbare hirarchische Struktur in /dev. So findet man mit devfs Ordner wie /dev/ide und /dev/scsi oder /dev/printers in /dev. Für Abwärtskompatibilität mit den alten Namen wie beispielsweise /dev/{s,h}h{a..d} sorgt ein Daemon, der devfsd.
Mit andren Worten: nie wieder nach nicht exitierenden Geräten suchen oder mit MAKEDEV hadern.
Installation
Benötigt: Kernel mit Devfs Support
Benötigt wird ein Kernel mit "/dev file system support (CONFIG_DEVFS_FS=y)". Diese Option ist standardmäßig nicht aktiviert. Die Optionen "automatically mount at boot time" und "debug Devfs" sollten nicht aktiviert sein. Nach dem make menuconfig wird der Kernel wie üblich übersetzt und installiert.
Der Daemon devfsd
Die folgenden Zeilen reißen kurz dessen Installation an.
cd $SOURCEDIR tar xvfz devfsd-vx.y.z.tar.gz cd devfsd-vx.y.z make make install
Nach der Installation des devfsd sollte /etc/devfsd.conf noch etwas an das System angepasst werden. Beispielsweise das automatische Laden von Treibern und /dev/cdrom werden in dieser Datei konfiguriert.
Den devfsd in den Systemstart einbinden
Der devfsd muss mit dem System gestartet werden, und zwar möglichst früh. Nur so kann auf gebräuchliche Gerätedateien wie /dev/hda beispielsweise zugegriffen werden. Hier ein Beispiel:
/etc/rc.d/init.d/devfsd
#!/bin/sh # begin of /etc/rc.d/init.d/devfsd # # startet den Daemon für das virtuelle /dev Dateisystem source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starte devfs Daemon " /sbin/devfsd /dev evaluate_retval ;; stop) echo "Stoppe devfs Daemon " #evaluate_retval ;; status) echo "$0 Status: not implemented" ;; *) echo "Usage: $0 {start|stop|status}" exit 1 ;; esac test "$return" = "$rc_done" || exit 1 exit 0
Anschließend noch ein Link:
ln -sf /etc/rc.d/init.d/devfsd /etc/rc.d/rcsysinit.d/S00devfsd
Probleme
Einige Treiber unterstützen kein devfs (gibt es überhaupt noch welche?) und müssen dann in der /etc/devfsd.conf konfiguriert werden. Ein eher theoretischer Fall.
Links
[1] | [Die FAQ zum Devfs] |
[2] | [Richard Goochs Webpage] |