LFS udev

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Installation)
(dvb script)
 
(15 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 6: Zeile 6:
 
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.
 
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.
 
Mit andren Worten: nie wieder nach nicht exitierenden Geräten suchen oder Device Nodes mit MAKEDEV anlegen müssen, sie werden automatisch erzeugt.
 +
 +
{{Box Hinweis|
 +
Diese Anleitung beschreibt den Weg zu einer komplett funktionierenden udev Installation, die auch die device nodes der DVB Treiber automatisch erstellt (das ist leider nicht selbstverständlich, da die DVB Treiber noch nicht sysfs kompatibel sind).
 +
Die Anwendung von MAKEDEV.dvb bzw. mknod in scripten zum Laden des DVB-Treibers bzw. Starten von VDR muss dann disabled werden. Da die Anleitung erst nach Installation erstellt wurde, können sich noch kleine Fehler eingeschlichen haben.
 +
wirbel
 +
}}
  
 
==Installation==
 
==Installation==
Zeile 11: Zeile 17:
 
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.
 
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: Kernel 2.6===
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.
  
Zeile 19: Zeile 26:
 
<pre>
 
<pre>
 
cd $SOURCEDIR
 
cd $SOURCEDIR
wget [URL]http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_09_23.tar.bz2[/URL]
+
wget http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_09_23.tar.bz2
 
tar xfj hotplug-2004_09_23.tar.bz2
 
tar xfj hotplug-2004_09_23.tar.bz2
 
cd hotplug-2004_09_23
 
cd hotplug-2004_09_23
 
make install
 
make install
 
cp etc/hotplug/pnp.distmap /etc/hotplug
 
cp etc/hotplug/pnp.distmap /etc/hotplug
rm -rf /etc/init.d
+
rm -rf /etc/init.d <-- das wuerde ich nicht empfehlen !
 
rm -f /etc/hotplug/net.agent
 
rm -f /etc/hotplug/net.agent
 
ln -sf /usr/lib/hotplug/firmware /lib/firmware
 
ln -sf /usr/lib/hotplug/firmware /lib/firmware
Zeile 32: Zeile 39:
 
<pre>
 
<pre>
 
cd $SOURCEDIR
 
cd $SOURCEDIR
wget [URL]http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-058.tar.bz2[/URL]
+
wget http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-058.tar.bz2
wget [URL]http://downloads.linuxfromscratch.org/udev-config-3.rules[/URL]
+
wget http://downloads.linuxfromscratch.org/udev-config-3.rules
 
tar xfj udev-058.tar.bz2
 
tar xfj udev-058.tar.bz2
 
cd udev-058
 
cd udev-058
Zeile 46: Zeile 53:
  
 
<pre>
 
<pre>
KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
+
KERNEL=="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
 
</pre>
 
</pre>
  
 
===dvb script===
 
===dvb script===
Es muss ein neues script dvb.sh in /etc/udev/scripts angelegt werden:
+
Es muss ein neues script '''dvb.sh''' in '''/etc/udev/scripts''' angelegt werden.<br>
 
+
Das Verzeichnis scripts existiert noch nicht:
 
<pre>
 
<pre>
 
mkdir -p /etc/udev/scripts
 
mkdir -p /etc/udev/scripts
 
</pre>
 
</pre>
 
 
Dann mit dem Editor eures Vertrauens oder mit cat:
 
Dann mit dem Editor eures Vertrauens oder mit cat:
 
<pre>
 
<pre>
#/bin/bash"
+
#!/bin/bash
 
/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'  
 
/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'  
 
</pre>
 
</pre>
Zeile 65: Zeile 71:
 
chmod +x /etc/udev/scripts/dvb.sh
 
chmod +x /etc/udev/scripts/dvb.sh
 
</pre>
 
</pre>
 +
 
=== /etc/fstab ===
 
=== /etc/fstab ===
In der /etc/fstab muss sysfs nach /sys gemountet werden:
+
In der [[Dir_etc#.2Fetc.2Ffstab|/etc/fstab]] muss sysfs nach /sys gemountet werden:
 
<pre>
 
<pre>
 
sysfs          /sys        sysfs  defaults        0    0
 
sysfs          /sys        sysfs  defaults        0    0
 
</pre>
 
</pre>
 +
 +
Diese Zeile ist bei Kernel 2.6 Systemen Standard.
  
 
==Probleme==
 
==Probleme==
*Einige Treiber unterstützen kein das sysfs Dateisystem noch nicht korrekt. In diesem Fall müssen die Device Nodes extra konfiguriert werden.
+
*Einige Treiber unterstützen 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.
+
*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. Die Module müssen dann mit insmod oder modprobe geladen werden. Für Module die beim Systemstart regelmäßig geladen werden sollen gibt es ein extra Startscript bei LFS.
 
+
  
 
==Links==
 
==Links==
{|
+
# [http://www.kernel.org/pub/linux/utils/kernel/hotplug/ hotplug und udev download]
|}[[Kategorie:LFS]]
+
 
 +
[[Kategorie:LFS]]

Aktuelle Version vom 29. April 2007, 17:37 Uhr

Inhaltsverzeichnis

[Bearbeiten] 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.

Hinweis
Hinweis

Diese Anleitung beschreibt den Weg zu einer komplett funktionierenden udev Installation, die auch die device nodes der DVB Treiber automatisch erstellt (das ist leider nicht selbstverständlich, da die DVB Treiber noch nicht sysfs kompatibel sind). Die Anwendung von MAKEDEV.dvb bzw. mknod in scripten zum Laden des DVB-Treibers bzw. Starten von VDR muss dann disabled werden. Da die Anleitung erst nach Installation erstellt wurde, können sich noch kleine Fehler eingeschlichen haben. wirbel


[Bearbeiten] Installation

[Bearbeiten] 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.

[Bearbeiten] Benötigt: Kernel 2.6

  • 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.

[Bearbeiten] hotplug-2004_09_23

cd $SOURCEDIR
wget http://www.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_09_23.tar.bz2
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 <-- das wuerde ich nicht empfehlen !
rm -f /etc/hotplug/net.agent
ln -sf /usr/lib/hotplug/firmware /lib/firmware

[Bearbeiten] udev-058

cd $SOURCEDIR
wget http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-058.tar.bz2
wget http://downloads.linuxfromscratch.org/udev-config-3.rules
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

[Bearbeiten] 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"

[Bearbeiten] 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

[Bearbeiten] /etc/fstab

In der /etc/fstab muss sysfs nach /sys gemountet werden:

sysfs          /sys         sysfs  defaults        0     0

Diese Zeile ist bei Kernel 2.6 Systemen Standard.

[Bearbeiten] Probleme

  • Einige Treiber unterstützen 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. Die Module müssen dann mit insmod oder modprobe geladen werden. Für Module die beim Systemstart regelmäßig geladen werden sollen gibt es ein extra Startscript bei LFS.

[Bearbeiten] Links

  1. hotplug und udev download