
Ich bin ziemlich verwirrt, ob wirklich Hal oder nur Udev verwendet wird.
Was ich verstanden habe:
Im Allgemeinen ist HAL eine Abstraktionsschicht, die einem Betriebssystem die Interaktion mit einem Hardwaregerät ermöglicht.
Und der Daemon Hald unterscheidet sich von HAL. Es handelt sich um einen Dienst, der HAL bereitstellt und zum Identifizieren und anschließenden Mounten von Geräten (und wo sie sich befinden würden, unter /dev?) oder zum automatischen Konfigurieren für die Verwendung durch Anwendungen verwendet wird.
Und es wird mittlerweile von udev ersetzt, das etwas Ähnliches macht, d. h. die Geräte werden automatisch gemountet, wenn sie verbunden werden, indem Nachrichten vom Kernel gelesen und entsprechend der vordefinierten Regeln benannt werden.
Und derzeit verwenden nur wenige GUI-basierte Anwendungen wie GNOMe hald, um Benachrichtigungen über neu verbundene Geräte zu erhalten (während die Bereitstellung weiterhin von udev übernommen wird?)
Meine Frage ist also, ob Hal nur verwendet wird, um GUI-basierte Anwendungen über neu angeschlossene Hardware zu benachrichtigen, da es über DBUS kommunizieren kann, Udev jedoch keine DBUS-Implementierung hat. Und für das automatische Mounten von Geräten macht das nur Udev und nirgends wird Hal verwendet?
Und ich spreche insbesondere von Redhat 5, 6 und 7.
Danke.
Antwort1
Einige Hintergründe: udev
existiert schon seit Ewigkeiten (seit dem Kernel 2.5) und (für RHEL) ist es das Ding, das Geräteknoten einrichtet, wenn Treiber Hardware ankündigen. Sogar auf Systemen, die HAL verwendeten, gab es udev
darunter noch etwas. udev
selbst kann andere Programme aufrufen, wenn es Änderungen „entdeckt“, und HAL war ein Versuch, die Ankündigung und Konfiguration bestimmter Teile neuer Hardware für Desktop-*nix-Systeme (nicht nur Linux, sondern auch andere wie FreeBSD) zu abstrahieren. Schließlich haben die Leute bestimmte Teile von HAL abgeschafft, aber nicht alle Teile von HAL konnten in verschoben werden udev
– einige davon wurden in andere Daemons aufgeteilt. Bis etwa 2012 hatten die meisten hochmodernen Linux-Distributionen HAL aufgegeben, und heutzutage (Anfang 2019) sind die oben genannten Daemons Dinge wie udisks
usw. upower
Es gibt eine nette Zusammenfassung dessen, was passiert ist aufhttps://en.wikipedia.org/wiki/HAL_(software)...
Da RHEL lose auf Fedora basiert (eine grobe Zuordnung finden Sie aufhttps://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux#Beziehung_mit_Fedora) und da wir wissen, dass esFedora 16, das HAL-frei war:
- RHEL 5 wird definitiv haben
hald
- RHEL 6 wird wahrscheinlich
hald
- RHEL 7 ist dazu nicht in der Lage
hald
und andere Daemons werden die Dinge übernommen haben,udev
zu denen sie nicht überredet werden konnten.
Wie finde ich heraus, ob im RHEL-Server Haldaemon oder Udev verwendet wird?
Starten Sie einfach die entsprechende Version von RHEL und tun Sie etwas wie:
rpm -qa "*hal*"
(Oh nein, mir ist gerade aufgefallen, dass Sie mehrere Fragen in einer versteckt haben :-( )
Und der Daemon Hald unterscheidet sich von HAL. Es handelt sich um einen Dienst, der HAL bereitstellt und zum Identifizieren und anschließenden Mounten von Geräten (und wo sie sich befinden würden, unter /dev?) oder zum automatischen Konfigurieren für die Verwendung durch Anwendungen verwendet wird.
Geräte sind untergeordnet /dev
, aber ob ich dann ein Gerät „mounten“ muss, ist kontextabhängig. Ich mounte vielleicht eine Festplatte (z. B. untergeordnet, /mnt
aber es gibt auch andere Orte, an denen Dinge gemountet werden), aber ich mounte keinen Scanner (Scanner anzukündigen/zu finden ist etwas, womit sich HAL befasst hat).
Und es wird mittlerweile von udev ersetzt, das etwas Ähnliches macht, d. h. die Geräte werden automatisch gemountet, wenn sie verbunden werden, indem Nachrichten vom Kernel gelesen und entsprechend der vordefinierten Regeln benannt werden.
Manchmal wird dies nur von durchgeführt udev
, manchmal greifen auch andere Dienste in die Lösung ein. /dev
Die Gerätebenennung ist unter udev
Kontrolle, ja.
Und derzeit verwenden nur wenige GUI-basierte Anwendungen wie GNOM[E] hald, um Benachrichtigungen über neu angeschlossene Geräte zu erhalten (während die Einbindung weiterhin von udev übernommen wird?)
Nun, moderne Systeme haben das nicht, hald
also ist Ihre Frage seltsam und kompliziert. Außerdem lautet die Antwort sogar auf Systemen, die das haben: „Es kommt darauf an“. Ja, das udev
Mounten ist möglich, aber manchmal werden Dinge wie das Anschließen einer USB-Kamera über das PTP-Protokoll größtenteils vom GNOME-Benutzerbereich gehandhabt (obwohl man über den gesamten FUSE-Aspekt wohl streiten kann).
Meine Frage ist also, ob Hal nur zum Benachrichtigen von GUI-basierten Anwendungen über neu angeschlossene Hardware verwendet wird, da es über DBUS kommunizieren kann, Udev jedoch keine DBus-Implementierung hat.
Ist das eine Frage? HAL wurde zum Benachrichtigen von GUI-Apps verwendet, kann aber bei Geräteänderungen auch andere Dinge auslösen (z. B. das Optimieren von Energieregeln/das Einbinden von Datenträgern).
Und für die automatische Bereitstellung von Geräten macht das nur udev und nirgendwo wird hal verwendet?
Auch hier handelt es sich um eine gemeinsame Anstrengung. Ja, es udev
gibt viele Regeln, aber je nach Kontext können auch andere Dinge beteiligt sein (z. B. wenn Sie den Benutzer auffordern müssen), und hier udisks
beginnen Dinge wie diese einzugreifen.
Ich vermute jedoch, dass hier ein Subtext mitschwingt: Warum fragen Sie, ob HAL verwendet wird? Vielleicht wäre es besser, wenn Sie diese Frage direkt stellen würden ...
(Diese Fragen mit mehreren Teilen sind schmerzhaft :-( )