udev, hotplug und CDRom devices

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
weizenbier
Beiträge: 387
Registriert: 26.11.2002 15:37:00
Wohnort: Oberhausen

udev, hotplug und CDRom devices

Beitrag von weizenbier » 03.08.2004 19:42:58

Hallo Leute,

ich habe mir mal udev angeschaut, um persistente Namen fuer meine
/dev devices zu haben.

Installation and Konfiguration gehen soweit auch ganz gut.
Bis auf.... ja bis auf meine CDRom devices. Sie werden einfach nicht angelegt.

Schaut man in die Konfig unter /etc/udev/udev.rules gibt es folgende Zeile, die das machen sollte:

Code: Alles auswählen

# /dev/cdrom symlink
BUS="ide", KERNEL="hd[a-z]", PROGRAM="/etc/udev/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2}"
Meine devices sind normalerweise hdc und hdd.
Sobald aber udev laeuft, gibt es nur die devices fuer die zwei Platten hda und hdb.

Die einzige Loesung ausser das komplette Ausschalten von Udev ist ein Init Script,
das die CDRom devices per Hand anlegt.

So nun meine Fragen:
Wer kennt das Problem?
Wer kann mir die generelle Idee des Zusammenspiels von hotplug und udev erklaeren?
Ist dies vielleicht ein SID Bug siehe http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=255150 ?

Mein System:
SID mit udev 0.030-1 sowie hotplug 0.0.20040329-12 mit Kernel 2.6.7 Debian Image

Danke fuer Tipps,

Weizenbier
Zuletzt geändert von weizenbier am 03.08.2004 20:51:26, insgesamt 1-mal geändert.
There are only 10 types of people in the world:
Those who do understand binary and those who don't.

LittleBoy
Beiträge: 718
Registriert: 30.04.2002 14:32:26

Beitrag von LittleBoy » 03.08.2004 20:21:35

Also,

hotplug macht mehrere Sachen:
a) beim Systemstart werden die notwendigen Treiber fürd en jeweiligen Bus geladen (uhci-usb, ohci-usb, ohci1374, usw.)
b) danach werden die Busse nach vorhandenen geräten gescannt (Coldplugging) und wenn ein Gerät gefunden wurde, wird in einer Tabelle der passende Treiber nachgeschlagen. Der wird dann, wenn er nicht auf der Blacklist steht geladen.
c) im späteren betrieb überwacht hotplug die Busse: Wenn ein Gerät ausgestöpselt wird, wird der Treiber entfernt, wenn neue Geräte hinzukommen, werden die Treiber wie oben geladen

Wenn ein neuer Treiber geladen wurde, legen diese im /sys bereich neue Eintärge für die neuen Geräte an. Darauf wiederum reagiuert udev. Der analysiert die Einträge im /sys und erstellt nach den Regeln die Gerätedateien unter /dev.

Bleibt noch das Problem, wenn ein Gerät zwar vorhanden ist, aber im Betrieb ein Medium eingefügt wird (z.B. USB-CardReader). Hierfür gibts den hal - der pollt die Deivces, und wenn ein neues Medium eingelegt wurde, erzeugt er die nötigen Events, damit udev die Einträge erzeugen kann. hal ist stark in der Entwicklung - und die Version in sarge ist mehr oder weniger funktionslos (die ist vom März 04).

Im Fall von IDE-Laufwerken ist udev etwas "überfordert". Die legen nämlich keinen vernünftigen /sys Einträge an. Also erkennt udev "nur" IDE Laufwerke, und die eigentliche Analyse, ob es ein CD oder Festplattenlaufwerk ist, müssen zusätzliche Skripte übernehmen. (Wie in deinem Fall)

Wenn du also die Fehlerursache suchst, schau dir das Skript an - da wird der Fehler drinnestecken.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 04.08.2004 01:21:19

Nur so als Datenpunkt: Hier geht es mit SID einwandfrei...

Code: Alles auswählen

lrwxrwxrwx  1 root root      3 Jul 18 17:45 cdrom -> hdc
brw-rw----  1 root cdrom 22, 0 Jul 18 17:45 hdc
Keine manuelle Intervention erforderlich...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Antworten