Hallo. * Dienstag, 31. Januar 2006 um 02:06 (+0100) schrieb David Haller:
Ich auch, deswegen sollte es udev auch nicht stoeren, wenn ein device per Hand angelegt wird.
"Das kommt drauf an..." -- Wenn 'udev' einen gleichnamigen Device-Node oder Symlink anlegt/anlegen würde, dann löscht es i.a. den Node oder Symlink auch beim Entfernen des Devices oder beim Reboot.
Aber ich kenne udev eben nicht. In 'man udev' hab ich nix gefunden. Und da ich kein udev habe (und will) kann ich's auch nicht ausprobieren. Was mich aber bei udev wundert ist:
==== man udev [von SuSE 9.1] ==== As part of the hotplug subsystem, udev is executed if a kernel device is added or removed from the system. ====
So, wie kann aber nun der Kernel merken, dass ein Device "dazukommt" wenn kein Modul fuer so ein Device da ist? Reicht ein Zugriff auf ein "nicht-existentes"(!) Device, z.B. /dev/sg1 um das Device zu erstellen, die noetigen Module z.B. fuer meinen Scanner g_NCR5380 und sg zu laden?
AFAIK "scannt" der Kernel (2.6.X) während des Bootens alle Geräte bzw. Busse, lädt ggfs. die passenden Module und schreibt die Daten der gefundenen Geräte ins sysfs. Diese Daten werden auch an das Hotplug-Subsystem gesendet, womit sie von 'udev(d)' empfangen werden und 'udev' dann aus den Daten u.a. Device-Nodes und falls gewünscht Symlinks o.ä. anlegt. Oder anders ausgedrückt (aus http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ): "[...] Q: But udev will not automatically load a driver if a /dev node is opened when it is not present like devfs will do. A: Right, but Linux is supposed to load a module when a device is discovered not to load a module when it's accessed. [...]"
Denn bis g_NCR5380 geladen ist weiss mein Kernel genau nix ueber SCSI-Devices:
# ls /proc/scsi ls: /proc/scsi: No such file or directory # modprobe sg # ls /proc/scsi . .. g_NCR5380 ide-scsi scsi sg
Das ist aber entweder ein antiker oder kastrierter Kernel ;-)
Und wenn der Kernel nix weiss... Fuer mich liest sich das wie ein Henne-Ei Problem. Folgerung: man muss zwingend beim booten z.B. die USB-Module (-ehci/-uhci usw.) laden, sonst bekommt der Kernel ja nix von mit, wenn ich einen USB-Stick einstoepsel.
Nein, der Kernel lädt die Module (automagisch), sobald er die Geräte erkennt.
Yippie-ah-yea-ah, Schweinebacke, also DAS nennt ich Fortschritt.
Ich breche hier mal eine Lanze für 'udev' -- IMHO ist das wirklich Fortschritt. Schliesse doch mal einen 2. Scanner an deine SCSI-Karte an und sieh dir an, wie die /dev/sg* den beiden Scannern zugeordnet werden, abhängig davon welcher Scanner eingeschaltet. (Noch schöner ist das mit einem externen SCSI-CD-Brenner, der auch über /dev/sg* angesprochen werden muss...) Und nun stell dir das Chaos bei den USB-Massenspeicher-Device-Nodes vor, wenn du ein paar USB-Sticks, einige USB-Festplatten und einen 16fach-Speicherkarten-Leser anschliesst (oder eben nicht alle anschliesst). Nee, da lob' ich mir dann doch 'udev'... Gruß Andreas (Back in town) -- XMMS spielt gerade "The Who - I Can See For Miles"... PGP-ID/Fingerprint: BD7C2E59/3E 11 E5 29 0C A8 2F 49 40 6C 2D 5F 12 9D E1 E3 PGP-Key on request or on public keyservers --