HAL
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Anmerkung: Ab Ubuntu 10.04 ist HAL komplett aus Ubuntu entfernt worden. Dieser Artikel ist nur noch für die KDE-Versionen (Kubuntu bis einschließlich 10.10) gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
HAL 🇬🇧 steht für Hardware Abstraction Layer (übersetzt: Hardware Abstraktionsschicht). HAL ist, wie der Name schon sagt, eine Zwischenschicht zwischen Hardware und Software, welche die Zugriffe der Software auf die Hardware abstrahiert. Dies hat den Vorteil, dass die Software nicht speziell auf jede Art von Hardware angepasst werden muss, sondern dass HAL quasi als "universeller Übersetzer" arbeitet.
HAL unter Linux ist noch relativ jung; produktiv eingesetzt wird HAL seit ca. 2005 / 2006. Ubuntu nutzt HAL seit Ubuntu 6.06 LTS Dapper Drake. HAL kooperiert normalerweise eng mit udev und D-Bus (dem Interprozess-Kommunikationssystem). Seit Ubuntu 8.04 LTS wird zusätzlich noch das PolicyKit zur Prüfung von Privilegien von aufrufenden Prozessen eingesetzt.
Grundsätzlich ist die Idee von HAL weder neu noch Linux-spezifisch. So verwendete schon Windows NT (ebenso wie dessen Nachfolger) eine Hardware-Abstraktionsschicht.
Ab Ubuntu 10.04 Lucid Lynx entfällt HAL komplett.
Installation¶
HAL ist in der Standardinstallation von Ubuntu immer enthalten; das Paket heißt
hal
Achtung!
Dieses Paket sollte niemals entfernt werden, da sonst die korrekte Funktion des Systems nicht mehr gewährleistet ist bzw. viele Programme HAL benötigen!
Wer mehr über HAL erfahren möchte, der kann auch noch die Dokumentation über das Paket
hal-doc
Befehl zum Installieren der Pakete:
sudo apt-get install hal-doc
Oder mit apturl installieren, Link: apt://hal-doc
installieren [1].
Die Dokumentation findet man dann unter /usr/share/doc/hal-doc.
Nutzung¶
Normalerweise bemerkt der Nutzer HAL gar nicht, da es seinen Dienst im Hintergrund verrichtet. HAL wird über den HAL-Demon hald
gesteuert, welcher beim Systemstart automatisch geladen wird.
Das Verhalten von HAL kann über zusätzliche Dateien konfiguriert werden, welche die Endung .fdi tragen und im Verzeichnis /etc/hal/fdi/policy/ liegen müssen. Ein manueller Eingriff ist in der Regel nicht notwendig. Ein Beispiel dafür gibt es im Artikel Archiv/HAL/Eingabegeräte, welcher die Konfiguration von Eingabegeräten für neuere XServer beschreibt.
lshal¶
lshal
ist ein Hilfsprogramm, welches mit HAL installiert wird, das Informationen über die auf dem Rechner von HAL erkannte Hardware ausgibt.
Die allgemeine Syntax lautet:
lshal [OPTIONEN]
Ohne Angabe von Optionen ist die Ausgabe sehr lang, da zu jedem Gerät jede Menge Angaben gemacht werden, z.B.
[...] udi = '/org/freedesktop/Hal/devices/pci_8086_27a2_drm_i915_card0' drm.dri_library = 'i915' (string) info.capabilities = {'drm'} (string list) info.category = 'drm' (string) info.parent = '/org/freedesktop/Hal/devices/pci_8086_27a2' (string) info.product = 'Direct Rendering Manager Device' (string) info.subsystem = 'drm' (string) info.udi = '/org/freedesktop/Hal/devices/pci_8086_27a2_drm_i915_card0' (string) info.vendor = 'Intel Corporation' (string) linux.device_file = '/dev/dri/card0' (string) linux.hotplug_type = 2 (0x2) (int) linux.subsystem = 'drm' (string) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:02.0/drm/card0' (string) [...]
Die uid
ist dabei die eindeutige Identifizierung des Geräts, alle weiteren Angaben sind Charakterisierung, Kategorisierungen etc., die spezifisch für dieses Gerät sind.
lshal kennt die folgenden Optionen:
Optionen von lshal | |
Option | Beschreibung |
-m , --monitor | "Monitoring Mode", gibt die Ausgaben und Aktionen von HAL live aus |
-s , --short | (stark) gekürzte Ausgabe |
-l , --long | lange Ausgabe (Voreinstellung) |
-t , --tree | baumartig-strukturierte Ausgabe (siehe tree) |
-u UID , --show UID | zeigt nur das Gerät mit der uid UID |
Detailliertere Informationen findet man in den Manpages zu lshal.
Weitere Tools¶
HAL bringt noch eine Reihe weitere Hilfsprogramme mit, die im Folgenden kurz beschrieben werden.
Hinweis:
Der Einsatz dieser Programme ist normalerweise nicht notwendig; sie werden nur bei Problemen mit der Erkennung von Geräten benötigt.
weitere Hilfsprogramme von HAL | |
Programm | Beschreibung |
hal-device | Anlegen oder Entfernen von Geräten |
hal-get-property | Liest die Eigenschaften eines Gerätes aus |
hal-set-property | Legt die Eigenschaften eines Gerätes manuell fest |
hal-find-by-property | Sucht nach Geräten basierend auf deren Eigenschaften |
hal-find-by-capability | Sucht nach Geräten basierend auf deren Fähigkeiten |
hal-disable-polling | Schaltet das sog. "Polling" für Geräte aus oder ein |
hal-is-caller-locked-out | Prüft, ob ein Prozess, der ein Gerät benutzen will, auch den D-Bus nutzen darf |
hal-is-caller-privileged | Prüft, ob ein Prozess die Privilegien hat, um ein Gerät zu nutzen |
hal-lock | Sperrt den Zugriff auf (bestimmte) Geräte |
Detailliertere Informationen erhält man bei allen Programmen über die Option --help
oder in den Manpages. Besonders vor dem Einsatz von hal-disable-polling
sollte man die Manpage lesen!
Links¶
Making hardware just work 🇬🇧 - Hintergründe über die Motivation, HAL zu entwickeln
HAL in der Wikipedia (allgemein)
HAL in der englischen Wikipedia (ausführlicher)