PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : devfs vs. udev



Navy2k
07-06-2006, 16:21
Hallo,

kann mir jemand nen Tip geben wo diese beiden Systeme verglichen werden, insbesondere in Bezug auf Treiberprogrammierung?

Herzlichsten Dank
Ben

nul
07-06-2006, 17:10
Der grosse unterschied wird wohl die Kernel Version sein.
udev kann erst ab einer bestimmten Version vom 2.6er eingesetzt werden (2.6.12 denk ich, kann mich aber auch irren).
devfs ist hingegen schon in der 2.4er Reihe vorhanden. (obs schon frueher war weiss ich nicht).

Fuer Treiberprogrammierung? Was genau willst du da genau wissen?

peschmae
07-06-2006, 19:00
"schon ab" und vor allem bis und mit 2.6.12 für devfs.

Udev geht schon länger - seit es sysfs gibt. Also afair seit 2.6.0. Aber aktuelle Versionen von udev laufen nur noch mit Kerneln ab 2.6.12.

Inwiefern interessiert dich das eigentlich genau? Devfs ist tot - raus aus Mainline - und entsprechend wenig relevant.

MfG Peschmä

Navy2k
07-06-2006, 23:26
Hallo ihr Zwei und erstmal danke für das Interesse.

Ich studiere zZ Informatik und hab eine Laborantenstelle im Betribssystem-Labor angetreten. zZ verwenden wir da noch nen 2.4er Kernel und vermitteln den Studenten unter Anderem die Grundlagen über Treiber und Devices. (Bei devfs ja schön anschaulich mit Major- und Minor-Devicenumbers)

Da jetzt aber immer mehr 2.4er feindliche Technik im Vormarsch ist (SATA ....) sind wir am überlegen auf den 2.6er Kernel zu wechseln was allerdings nicht geht wenn UDEV zu abstrakt und zu weit weg von der restlichen Unixwelt ist. (Soll ja eine allgemeingültige Vorlesung sein)

Gruß Ben

peschmae
08-06-2006, 07:43
Dann hast du wohl mehr Ahnung von den Sachen als ich :)

Schon mal an folgendes gedacht: Man muss ja nicht udev verwenden. Kernel 2.6 läuft auch mit statischem dev. Oder möchtest du unbedingt ein dynamisches dev-System vorstellen?

MfG Peschmä

Navy2k
08-06-2006, 10:31
Heißt das es ist möglich das alte Dev system mit dem 2.6er Kernel zu verwenden? Das heisst unsere selbstgeschriebenen Treiber müssten alle noch funktionieren?

nul
08-06-2006, 12:47
Nein, die Kernel-API hat sich geandert.
Will heisen, vielleicht lassen sie sich kompilieren, aber dass sie dann wirklich auch korrekt geladen werden und auch das tun was sie sollen, dafuer kann keiner garantieren!

Navy2k
08-06-2006, 13:41
Ich bin jetzt schon den ganzen tag am recherchiren und versuch mal zusammenzfassen:

1. UDEV schert sich nicht um Major / Minor Devicenumbers und generiert daraus nur ne Nodeid ( Unterschiedliche geräte könnten die selbe major number haben)

2. alte Treiber sind komplett hinfällig

3. Einzigster Vorteil: Geräten eindeutige Namen zuweisbar und /dev nur gefüllt mit tatsächlich aktiven Geräten

4. DEVFS wollen manche Kernelentwickler mit Gewalt töten (Also 2.6er Kernel mit DEVFS keine langfristige Alternative)

Stimmt das im Großen und Ganzen so?

Eine Frage hät ich dann noch: SuSe 9.0 verwendet ja hoffentlich DEVFS oder? Sonst wär ich jetzt bissl verwirrt :) Kann man das irgendwie überprüfen? Was könnte es sonst sein? (Bin mal über SYS-FS gestolpert)

Gruß Ben

nul
08-06-2006, 14:39
was jetzt Suse einsetzt weiss ich nicht genau, habe im moment nur debian stable und testing am laufen, aber probier mal folgendes:

dmesg | grep devfs
bzw.
dmesg | grep udev

und wenn du noch keine klarheit hast poste mal die ausgabe davon!

Navy2k
08-06-2006, 14:50
dmesg | grep udev wie erwartet keine ausgabe da ja 2.4er Kernel

dmesg | grep devfs -> usb.c: registered new driver usbdevfs

Gruß Ben

Kann es sein das da noch ein System von vor DEVFS läuft o.O

peschmae
09-06-2006, 07:26
4. DEVFS wollen manche Kernelentwickler mit Gewalt töten (Also 2.6er Kernel mit DEVFS keine langfristige Alternative)


Zu den anderen Punkten weiss ich nichts - aber in den aktuellen 2.6er Kerneln ist devfs schon nicht mehr drin. Ich glaub ab 2.6.13 oder so.

MfG Peschmä

Navy2k
12-06-2006, 14:18
Ok, gibts evtl ne Möglichkeit für das System UDEV zu benutzen und zusätzlich den alten Treiber (simuliert ein Blockdevice mit einem Teil vom Arbeitsspeicher) einsetzen zu können?

Und noch ne Kleinigkeit: Gabs vor Devfs noch was anderes (bei SuSe)? Kann ich irgendwo erkennen ob der Treiber für DevFS oder evtl was älteres geschrieben wurde? Thx.

EDIT: Großer umbruch :/ Ich hab grad festgestellt das DevFS garnicht im Kernel aktiviert ist (hät ich auch eher mal draufkommen können) Wie zur Hölle laufen dann hier die Kisten ? O.o

Gruß Ben

peschmae
12-06-2006, 22:26
Wie meinst du das "wie zur Hölle laufen dann hier die Kisten"?

Normal ist eigentlich immer noch ein statisches /dev. D.h. *kein* devfs und auch kein udev. Einfach die nodes dort hin...

Bei Debian kannst du auch z.B. apt-get remove udev machen. Abgesehen davon dass dir dann die Hotplug-Funktionalität fehlt weil die Pakete gemerged wurden sollte das System problemlos laufen.

MfG Peschmä

nul
12-06-2006, 23:03
Wenn devfs bzw. udev nicht in den Kernel mit einkompiliert sind dann sollten sich die Treiber, die darauf aufbauen, sich nicht mal laden lassen.
Muesste eine entsprechende Fehlermeldung geben!

peschmae
13-06-2006, 08:07
Udev ist ein Userspace-Tool. Da ist nix mit in den Kernel einkompilieren.

MfG Peschmä

Navy2k
13-06-2006, 12:22
Ahh, ok dann ist das so nen statischer Treiber.

Kann ich statische Treiber zusätzlich zu UDEV laden oder geht das dann nur noch über UDEV ?

LAngsam komm ich der Sache auf die Spur ;) thx

peschmae
13-06-2006, 20:47
Statischer treiber? Wer? Wo? Egal - soo viel Ahnung ovn der technischen Seite hab ich nicht.

Du kannst Treiber eigentlich immer laden wie du willst. Udev kümmert sich in erster Linie darum dass nur die Device-Dateien in /dev existieren, für die es auch Geräte gibt. Der Hotplug-Teil ist davon eigentlich recht unabhängig (auch wenn das jetzt afaik aus Performancegründen integriert wurde)

MfG Peschmä

nul
14-06-2006, 22:22
Udev ist ein Userspace-Tool. Da ist nix mit in den Kernel einkompilieren.

MfG Peschmä
Hast recht, sorry, hab mir das jetzt noch mal angeschaut wie das mit udev funktioniert. Hab bis noch nur Kernel-Module fuer 2.4er mit devfs geschrieben.

Naja, wenn ich mal Zeit habe schau ich mir das mit udev noch mal genauer an, in der Kernel-Struktur hat sich auf 2.4 ja einiges getan!

RapidMax
14-06-2006, 23:01
Die Idee hinter udev ist, möglichst viel Logik dem User-Space zu überlassen. Wie bereits bemerkt arbeitet man mit normalen Device-Dateien, die natürlich auch von Hand angelegt werden können (wie bisher).

Nun kommt der Hotplug-Mechanismus zum Tragen: Wenn der Kernel feststellt, das ein neues Geräte hinzugefügt/entfernt wurde, ruft er /sbin/hotplug (default) auf und übergibt als Parameter und im Enviroment informationen zu der neue hinzugefügten Geräteklasse.

Der Rest läuft nun in User-Space ab. Mit Hilfe von Sysfs wird nun nach dem neuen Gerät gesucht und über vorher definierte Rules für das neue Gerät eine Device-Datei erstellt oder wieder entfernt. z.B. werden USB-Sticks mit den Standard-Regeln einfach durchnummeriert. Aber man kann eigene Regeln anlegen, welche die aus dem sysfs auslesbare, eindeutige Geräte-ID des USB-Sticks fest an eine bestimmte Device-Datei binden.

Durch den neuen Mechanismus müssen einige User-Land tools angepasst werden, da es zu race-conditions kommen kann. Im folgenden Debian-devel Thread werden die Probleme diskutiert: http://lists.debian.org/debian-devel/2006/05/msg01806.html

Gruss, Andy