[[Vorlage(Archiviert, "Ab [:Lucid: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.")]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal:Einen Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] [http://www.freedesktop.org/wiki/Software/hal HAL] {en} steht für '''H'''ardware '''A'''bstraction '''L'''ayer (ü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 [:Dapper_Drake: 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''' {{{#!vorlage Warnung 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 {{{#!vorlage Paketinstallation 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: {{{#!vorlage Befehl 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: ||<-2 cellstyle="background-color: #E2C890;" :> '''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 [:man:Manpages] zu lshal. == Weitere Tools == HAL bringt noch eine Reihe weitere Hilfsprogramme mit, die im Folgenden kurz beschrieben werden. {{{#!vorlage Hinweis Der Einsatz dieser Programme ist normalerweise nicht notwendig; sie werden nur bei Problemen mit der Erkennung von Geräten benötigt. }}} ||<-2 cellstyle="background-color: #E2C890;" :> '''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 [:man:Manpages]. Besonders vor dem Einsatz von '''`hal-disable-polling`''' sollte man die Manpage lesen! = Links = * [http://www.ometer.com/hardware.html Making hardware just work] {en} - Hintergründe über die Motivation, HAL zu entwickeln * [wikipedia:Hardwareabstraktionsschicht:HAL in der Wikipedia] (allgemein) * [wikipedia_en:HAL_(software):HAL] in der englischen Wikipedia (ausführlicher) #tag: Hardware, System, Server