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
a) 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.
b) Da devfs nicht automatisch zur Bootzeit gemountet wird, muss der devfsd Daemon laufen. 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.
c) Der devfsd muss mit dem System gestartet werden, und zwar möglichst früh. 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 konfiguriert werden. Ein eher theoretischer Fall.