LFS devfs

Aus VDR Wiki
Wechseln zu: Navigation, Suche

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] http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html Devfs FAQ
[2] http://www.atnf.csiro.au/people/rgooch/linux Richard Goochs Webpage