This page (revision-13) was last changed on 02-Apr-2010 21:10 by ThomasBayen 

This page was created on 05-Nov-2006 16:19 by ThomasBayen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
13 02-Apr-2010 21:10 11 KB ThomasBayen to previous Symlink zu neu angelegtem Device erzeugen
12 03-Oct-2008 14:23 10 KB ThomasBayen to previous | to last Beispiel: Skript starten mit USB-Device
11 03-Oct-2008 12:54 9 KB ThomasBayen to previous | to last Beispiel: Skript starten mit USB-Device
10 20-Jun-2008 09:52 7 KB PeterHormanns to previous | to last Link Schwabenblog
9 08-Feb-2008 08:46 7 KB MarkusMonderkamp to previous | to last Udev Troubleshooting
8 31-Dec-2006 17:31 5 KB ThomasBayen to previous | to last udev unter Xen verwechselt Netzwerkkarten
7 19-Dec-2006 14:58 5 KB ThomasBayen to previous | to last
6 19-Dec-2006 11:54 5 KB Jens Kapitza to previous | to last qemu -- fix KERNEL==
5 11-Dec-2006 17:17 4 KB Jens Kapitza to previous | to last ** ja vorschau ** ;)
4 11-Dec-2006 17:12 4 KB Jens Kapitza to previous | to last load_modules=off Kai und Debian ?
3 09-Nov-2006 00:14 4 KB ThomasBayen to previous | to last Beispiele für udev-Rules
2 05-Nov-2006 16:21 2 KB ThomasBayen to previous | to last
1 05-Nov-2006 16:19 2 KB ThomasBayen to last udev-Problem verewigt

Page References

Incoming links Outgoing links

Version management

Difference between version and

!!! udev

Udev dient seit dem Linux-Kernel 2.6 dazu, alle Geräte des Systems automatisch zu konfigurieren. Dabei ist die Philosophie (im Gegensatz zu früher), daß ein Userspace-Programm (nämlich udev) erfährt, wenn ein Device in das System kommt (beim hochfahren oder wenn z.B. ein USB-Gerät eingesteckt wird). In ''/etc/udev'' gibt es nun umfangreiche Konfigurationsdateien. Dort kann man festlegen, welches Gerät dann wie heissen soll. Udev sorgt dabei automatisch dafür, daß ein bestimmtes Gerät immer unter dem gleichen Namen erreichbar ist. So ist die USB-Kamera immer an derselben Stelle (am besten z.B. an /dev/camera) und nicht zufällig gerade heute mal auf ''/dev/sdc'', weil ich vorher zwei Flashkarten eingelegt habe (wie früher üblich).

Die udev-Weseite findet sich unter http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html.

Hier soll nicht die udev-Dokumentation wiederholt werden. Stattdessen möchte ich hier (mindestens) einen Fallstrick dokumentieren, der mich viel Zeit gekostet hat.

! Netzwerkkarte auf einmal weg

Folgendes ist passiert: Ich habe einen Rechner mit einer internen Netzwerkkarte (forcedeth) installiert. Bei der Debian Etch-Installation wurde diese Karte als "eth0" eingebunden. Bis dahin war ich gar nicht erstaunt. Was ich nicht wusste, ist, daß diese Namensgebung neuerdings von udev gemacht wird und udevs Philosophie bedeutet, daß ein Gerät, das man einmal eingebaut hat, in Zukunft immer unter dem gleichen Namen erreichbar sein soll. Also merkt sich udev in ''etc/udev/rules.d/z25_persistent-net.rules'' diese Karte.

Nun habe ich eine zweite Netzwerkkarte installiert. Das System hat diese (8139too) aus irgendeinem Grund (vor dem udev-Start) als erste und die forcedeth als eth1 installiert. Nun meinte udev, die forcedeth als eth0 einrichten zu müssen. Da eth0 aber schon besetzt war, hat es sich dieses auch gemerkt, die forcedeth umbenannt in __eth1_rename__ und fertig.

Jetzt hatte ich in ''etc/udev/rules.d/z25_persistent-net.rules'' beide Karten als eth0 stehen und in welcher Reihenfolge ich die Module auch lud, ein eth1 bekam ich nicht.

__Fazit:__ Wem also plötzlich eine zweie Netzwerkkarte fehlt, der sollte mal {{ifconfig -a}} machen. Findet man eine {{*_rename}}-Karte, so kann ein Blick in o.g. Datei nicht schaden. -- ThomasBayen

! Permissions für Devicedateien setzen

Das Acceleratormodul für [QEmu] nennt sich __kqemu__. Ich möchte dieses Modul z.B. beim Systemstart laden und dann durch einen normalen Benutzer [QEmu] starten. Um das für mehrere Benutzer zu erlauben, kommen diese in eine gemeinsame Gruppe ''qemu''.

Hierzu erzeuge ich eine Datei ''/etc/udev/rules.d/022_qemu.rules'', in der folgendes steht:
{{{
KERNEL="kqemu",      MODE="0660", GROUP="qemu"
}}}

Und fertig. Die *.rules-Dateien werden alphabetisch abgearbeitet und beim laden des neuen Moduls werden die angegebenen Parameter direkt gesetzt. -- ThomasBayen

! USB-Drucker fest zuordnen

Ich möchte an einem Computer zwei USB-Drucker anbringen. Das Problem ist, daß diese beim Hochfahren keine feste Reihenfolge bekommen und deshalb jeweils mal lp0 und mal lp1 sind. Habe ich beim Booten einen der Drucker nicht eingeschaltet, schnappt der andere sich sowieso das erste Device "lp0". Theoretisch kann man anhand der Drucker-ID die Drucker in einer udev-Regel unterscheiden. Bei mir war es jedoch noch komplizierter, da ich zwei identische Drucker anschliesse, die anhand der ID nicht unterscheidbar sind. Sie enthalten jedoch unterschiedliches Papier (Listen- und Formulardrucker), weshalb sie auf keinen Fall vertauscht werden dürfen.

Das geht aber mit udev auch: Jede USB-Buchse hat eine eindeutige Bus-ID. Anhand derer kann man die Drucker dann benennen. Die Regeldatei ''/etc/udev/rules.d/024_printer.rules'' sieht dann z.B. so aus:
{{{
BUS="usb", KERNEL="lp[0-9]*", ID="2-1:1.0",  SYMLINK+="usb/liste"
BUS="usb", KERNEL="lp[0-9]*", ID="2-2:1.0",  SYMLINK+="usb/formular"
}}}

Hierdurch werden neben den normalen Devices Symlinks unter den von mir gewünschten Namen angelegt, die ich dann z.B. in CUPS angeben kann, um die Drucker zu benutzen.

Wichtig ist übrigens, daß der angegebene Kernel-Name nicht in einer vorhergehenden Regel umbenannt wurde. Dies geschieht nämlich in meinem Debian Sarge-System in der Datei ''devfs.rules'' (dort wird''lp0'' zu ''usb/lp0''), weshalb meine Datei alphabetisch davor stehen muss. -- ThomasBayen

If you pass load_modules=off on your kernel boot line, then udev will skip all the auto-loading business. This is to provide you with a big ripcord to pull if something goes wrong. If udev loads a problematic module that hangs your system or something equally awful, then you can bypass auto-loading with this parameter, then go in and blacklist the offensive module(s).

--- ich habe es nur gelesen
--- blacklist hat mir gereicht!


[
>> <<archlinux | http://wiki.archlinux.org/index.php/Udev <<] KaiEhlers  Google dochmal nach Kernel Module laden verhindern G. JensKapitza