Einige von den Programmen, die Sie vielleicht später installieren
möchten, erwarten die Existenz der symbolischen Links /dev/cdrom
und /dev/dvd
und dass diese auf ein CD-Rom- oder
DVD-Laufwerk verweisen (z. B. einige Media-Player). Außerdem
könnte es praktisch sein, diese symbolischen Links in /etc/fstab
einzutragen. Udev enthält ein Skript,
welches Regel-Dateien erzeugt, die diese symbolischen Links für Sie
anlegen (abhängig von den verfügbaren Funktionen der Geräte). Es
gibt zwei Betriebsmodi, in denen die Skripte laufen können. Sie
müssen sich entscheiden, welchen der Modi Sie verwenden möchten.
Zum Einen kann das Skript „nach Pfad“ arbeiten (Voreinstellung für USB- und FireWire-Geräte), wobei die erzeugten Regeln abhängig vom physikalischen Pfad zu dem CD- oder DVD-Gerät sind. Außerdem kann das Skript „nach ID“ arbeiten (Voreinstellung für IDE- und SCSI-Geräte), wobei die erzeugten Regeln abhängig sind von Identifikationsmerkmalen, die in den CD-/DVD-Geräten selber gespeichert sind (z. B. Seriennummer). Ein Pfad wird von Udevs Skript path_id ermittelt und ein Identifikationsmerkmal wird aus der Gerätehardware mit den Programmen ata_id bzw. scsi_id ausgelesen, je nach verwendetem Gerät.
Jede Vorgehensweise hat ihre Vorteile; welche Methode Sie am besten verwenden hängt davon ab, welche Geräteänderungen stattfinden können. Fall sich voraussichtlich der physikalische Pfad zu einem Gerät ändern wird (z. B. die Anschlüsse/Steckplätze, an denen es angeschlossen ist), weil Sie ein Gerät an einen anderen IDE-Bus oder USB-Anschluss anschließen möchten, dann sollten Sie die Methode „nach ID“ verwenden. Wenn Sie jedoch damit rechnen müssen, dass sich das Identifikationsmerkmal eines Gerätes ändert und sie es mit einem gleichwertigen Gerät ersetzen möchten, dann sollten Sie die „nach Pfad“-Methode einsetzen.
Wenn beide Arten Geräteänderungen möglich sind, wählen Sie die Methode anhand der wahrscheinlich häufigeren Änderung aus.
Externe Geräte (z. B. CD-Rom-Laufwerke über USB) sollten nicht mit Regeln „nach Pfad“ angesteuert werden, weil sich der physikalische Geräte-Pfad mit jedem Anschließen ändert. Dieses Problem besteht mit allen extern angeschlossenen Geräten, die mit Udev über den physikalischen Pfad angesteuert werden; es ist nicht nur auf CD- und DVD-Laufwerke beschränkt.
Wenn Sie sehen möchten, welche Werte die Udev-Skripte verwenden,
suchen Sie für Ihr CD-Rom-Laufwerk den zugehörigen Ordner in
/sys
(dies könnte z. B.
/sys/block/hdd
sein) und führen Sie
dieses Kommando aus:
udevadm test /sys/block/hdd
Sehen Sie sich die Ausgabe der verschiedenen *_id-Programme an. Der Modus „nach ID“ verwendet den Wert ID_SERIAL, sofern er verfügbar und nicht leer ist. Ansonsten wird eine Kombination aus ID_MODEL und ID_REVISION verwendet. Der Modus „nach Pfad“ verwendet den Wert von ID_PATH.
Wenn der Standard-Modus für Ihre Situation unpassend zu sein
scheint, können Sie folgende Änderung an der Datei /etc/udev/rules.d/75-cd-aliases-generator.rules
vornehmen. Ersetzen Sie mode
entsprechend durch
„by-id“ oder
„by-path“:
sed -i -e 's/write_cd_rules/& mode
/' \
/etc/udev/rules.d/75-cd-aliases-generator.rules
Es ist nicht nötig, die Regel-Dateien oder symbolischen Links jetzt
zu erstellen, weil Sie den Ordner /dev
per bind in Ihr LFS-System eingebunden haben
und wir davon ausgehen, dass die symbolischen Links auf dem
Host-System vorhanden sind. Die Regeln und Links werden automatisch
erzeugt, wenn Sie Ihr neues System das erste mal neustarten.
Falls Sie allerdings mehrere CD-Rom-Laufwerke haben, können die
dann erzeugten symbolischen Links auf andere Geräte verweisen, als
es auf Ihrem Host-System der Fall war, weil die Reihenfolge der
Geräteerkennung nicht vorhersehbar ist. Die Zuordnung, wie sie beim
ersten Neustart von LFS vorgenommen wird, bleibt jedoch stabil, so
dass dies nur ein Problem ist, wenn die symbolischen Links des
Host-Systems mit denen in Ihrem LFS übereinstimmen sollen (auf die
gleichen Geräte zeigen sollen). Falls die Links auf beiden Systemen
auf die gleichen Geräte zeigen müssen, untersuchen (und bearbeiten)
Sie die Datei /etc/udev/rules.d/70-persistent-cd.rules
nach dem
Neustart und stellen Sie sicher, dass die symbolischen Links Ihren
Vorstellungen entsprechen.
In Abschnitt 7.4,
„Umgang mit Geräten und Modulen an einem
LFS-System“ wurde ja bereits erwähnt, dass die
Reihenfolge, in der Geräte in /dev
angelegt werden, vollkommen zufällig sein kann. Nehmen wir an Sie
haben eine USB-Webcam und eine USB-TV-Tuner, so zeigt /dev/video0
auf die Kamera und /dev/video1
auf den Tuner. Manchmal kann sich die
Reihenfolge bei einem Neustart aber auch einfach umkehren. Dieses
Phänomen kann man für alle Geräte außer Sound- und Netzwerkkarten
mittels Udev-Regeln und symbolischen Links lösen. Wie man dies mit
Netzwerkkarten löst, steht in Abschnitt 7.13,
„Einrichten des network-Skripts“ beschrieben, und
die Anleitung für Soundkarten finden Sie in BLFS.
Sie sollten für jedes der möglicherweise problematischen Geräte
(selbst, wenn das Problem mit Ihrer bisherigen Linux-Distribution
nicht auftritt) den passenden Ordner unter /sys/class
oder /sys/block
suchen. Videogeräte finden Sie unter
/sys/class/video4linux/video
. Finden Sie die Attribute,
die das Gerät unverwechselbar erkennbar machen (üblicherweise
Hersteller- und Produkt-IDs und/oder Seriennummern):
X
udevadm info -a -p /sys/class/video4linux/video0
Schreiben Sie nun die passenden Regel zum Erzeugen der symbolischen Links:
cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
# Persistent symlinks for webcam and tuner
KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
SYMLINK+="webcam"
KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \
SYMLINK+="tvtuner"
EOF
Als Ergebnis erhalten Sie immer noch die Gerätedateien /dev/video0
und /dev/video1
, die jeweils unterschiedliche Geräte
meinen können (und deshalb nicht direkt angesprochen werden
sollten). Zusätzlich erhalten Sie aber auch die symbolischen Links
/dev/tvtuner
und /dev/webcam
, und diese zeigen immer auf das
richtige Gerät.
Weitere Informationen zum Schreiben von Udev-Regeln finden Sie in
/usr/share/doc/udev-130/index.html
.