Archiv verlassen und diese Seite im Standarddesign anzeigen : devfs vs. udev
Hallo,
kann mir jemand nen Tip geben wo diese beiden Systeme verglichen werden, insbesondere in Bezug auf Treiberprogrammierung?
Herzlichsten Dank
Ben
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ä
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ä
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?
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!
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
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!
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ä
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ä
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ä
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ä
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.