LFS udev
Wirbel (Diskussion | Beiträge) (→dvb script) |
Wirbel (Diskussion | Beiträge) (→Benötigt: Kernel >) |
||
Zeile 12: | Zeile 12: | ||
===Benötigt: Kernel >=2.6.8 mit pci hotplug Support=== | ===Benötigt: Kernel >=2.6.8 mit pci hotplug Support=== | ||
− | Benötigt wird ein Kernel >=2.6.8 mit pci hotplug support. | + | *Benötigt wird ein Kernel >=2.6.8 mit pci hotplug support. Diese Option ist standardmäßig nicht aktiviert. |
− | Diese Option ist standardmäßig nicht aktiviert. | + | *es wird Ramdisk support im Kernel benötigt, da in den Bootscripten von LFS-6 automatisch eine ramdisk für /dev gemountet wird. Das ist sinnvoll, damit nach einem Neustart keine alten device nodes liegen und der Bootvorgang nicht ausgebremst wird. Funktionieren tut es auch ohne den Support, aber dann müssen die Bootscripts von LFS geringfügig geändert werden. |
+ | |||
Nach dem make menuconfig wird der Kernel wie üblich übersetzt und installiert. | Nach dem make menuconfig wird der Kernel wie üblich übersetzt und installiert. | ||
Version vom 5. Juni 2005, 11:50 Uhr
Inhaltsverzeichnis |
Einführung
Prinzipiell ist udev der Nachfolger des 'veralteten' devfs, ein modulares System zur automatischen Erstellung von device nodes in /dev.
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 udev 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. Mit andren Worten: nie wieder nach nicht exitierenden Geräten suchen oder Device Nodes mit MAKEDEV anlegen müssen, sie werden automatisch erzeugt.
Installation
LFS Version
Es wird mindestens LFS Version 6.0 benötigt. Ab Version 6.1 (z.Z. noch cvs) sind eine geeignete Kernelversion, hotplug_2004-09-23 und udev-058 dabei, ebenso wird standardmäßig eine geeignete fstab angelegt. Einige Schritte entfallen später also. Dennoch sei die Installation einer LFS cvs Version nur Experten empfohlen, z.Z. ist LFS-6.0 mit diesen Änderungen ratsam.
Benötigt: Kernel >=2.6.8 mit pci hotplug Support
- Benötigt wird ein Kernel >=2.6.8 mit pci hotplug support. Diese Option ist standardmäßig nicht aktiviert.
- es wird Ramdisk support im Kernel benötigt, da in den Bootscripten von LFS-6 automatisch eine ramdisk für /dev gemountet wird. Das ist sinnvoll, damit nach einem Neustart keine alten device nodes liegen und der Bootvorgang nicht ausgebremst wird. Funktionieren tut es auch ohne den Support, aber dann müssen die Bootscripts von LFS geringfügig geändert werden.
Nach dem make menuconfig wird der Kernel wie üblich übersetzt und installiert.
hotplug-2004_09_23
cd $SOURCEDIR wget [URL]http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_09_23.tar.bz2[/URL] tar xfj hotplug-2004_09_23.tar.bz2 cd hotplug-2004_09_23 make install cp etc/hotplug/pnp.distmap /etc/hotplug rm -rf /etc/init.d rm -f /etc/hotplug/net.agent ln -sf /usr/lib/hotplug/firmware /lib/firmware
udev-058
cd $SOURCEDIR wget [URL]http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-058.tar.bz2[/URL] wget [URL]http://downloads.linuxfromscratch.org/udev-config-3.rules[/URL] tar xfj udev-058.tar.bz2 cd udev-058 make udevdir=/dev make udevdir=/dev install cp ../udev-config-3.rules /etc/udev/rules.d/25-lfs.rules
dvb.rules
Siehe linux/Documentation/dvb/udev.txt, es muss ein neues script /etc/udev/rules.d/10-dvb.rules angelegt werden:
KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
dvb script
Es muss ein neues script dvb.sh in /etc/udev/scripts angelegt werden.
Das Verzeichnis scripts existiert noch nicht:
mkdir -p /etc/udev/scripts
Dann mit dem Editor eures Vertrauens oder mit cat:
#/bin/bash" /bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'
Natürlich muss ein script ausführbar sein, also als root:
chmod +x /etc/udev/scripts/dvb.sh
/etc/fstab
In der /etc/fstab muss sysfs nach /sys gemountet werden:
sysfs /sys sysfs defaults 0 0
Probleme
- Einige Treiber unterstützen kein das sysfs Dateisystem noch nicht korrekt. In diesem Fall müssen die Device Nodes extra konfiguriert werden.
- ein prinzipieller Nachteil von udev ist, dass Autoloading von Modulen nicht funktioniert. Normalerweise werden beim ersten Zugriff auf ein device node die zugehörigen Treiber vom Kernel automatisch geladen. Da ohne geladenes Kernelmodul kein device node existiert, kann der Kernel auch kein Modul laden: ein typisches "Henne und Ei" Problem.