Hardware Abstraction Layer

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Der Hardware Abstraction Layer / HAL (dt. "Hardwareabstraktionsschicht") ist eine architektonische Ebene grösserer Rechnerprogramme oder Systeme solcher Programme, die dafür sorgt, dass andere Software-Bestandteile nicht auf die Spezifikationen der Hardware Rücksicht nehmen müssen, auf der das Programm läuft.

Zusätzlich zu den Kernel- und udev-Informationen verwaltet der HAL weitere Einzelheiten über die Geräte, die er als FDI-Dateien (device information files) im XML-Format ablegt. Ohne die zusätzlichen Informationen in der FDI-Datei würde etwa eine digitale Kamera oder ein MP3-Spieler lediglich als USB-Speicher erkannt. Die weitergehende Spezifikation ermöglicht es nun, z. B. automatisch einen Bildbetrachter oder Musikverwalter zu starten, sobald das passende Gerät mit dem Rechner verbunden wird.

Derselbe Mechanismus erlaubt z. B. auch, alle oder bestimmte Geräte vom automatischen Einbinden auszunehmen. Voraussetzung dafür ist allerdings, dass sich das Userspace-Programm, das schliesslich das Einhängen durchführt, überhaupt um die FDI-Dateien kümmert, was nicht zwangsläufig der Fall sein muss. Tut es dies jedoch so wie "submount" unter SUSE, so bewirkt ein Eintrag wie der folgende, der unter "/usr/share/hal/fdi/95userpolicy" in einer beliebigen Datei mit der Endung ".fdi" liegen muss, dass keine Komponente mehr Wechselmedien und Hotplug-Geräte automatisch einbindet und der Benutzer sie wieder manuell einhängen kann.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- -*- SGML -*- -->
<!-- This .fdi file prevents automount for every media (storage devices) e. g. floppy, CD/DVD, USB stick, USB disk, external harddisk. -->
<deviceinfo version=".2">
  <device>
    <match key="storage.policy.should_mount" bool="true">
      <merge key="storage.policy.should_mount" type="bool">false</merge>
    </match>
  </device>
</deviceinfo>

Hotplug-Events erfährt der HAL-Daemon vom udev-Subsystem, z. B. unter Fedora über eine Regel, die in der Datei "/tec/udev/rules/.d/90-hal.rules" steht. Der "RUN+="-Eintrag dieser Regel legt fest, dass sie für jede andere Regel zusätzlich auszuführen ist. Die Kommunikation läuft dabei über einen Socket.

RUN+="socket:/org/freedesktop/hal/udev_event"

Ein Beispiel für das Zusammenspiel der Komponenten ist der Gnome Network Manager, der das Netzwerksubsystem vom HAL-Daemon überwachen lässt. Der Daemon benachrichtigt den Gnome Network Manager bei Veränderungen über den D-Bus, z. B. beim Ein- oder Ausstecken von Wireless USB-Sticks. Neben echten Geräten kann HAL auch mit Dateisystemen umgehen und deren Typ feststellen, sogar mit LUKS-verschlüsselten Partitionen.

Unter Gnome übernimmt HAL inzwischen einen grossen Teil der Hardwareverwaltung, vor allem von Hotplug-Geräten. Dazu läuft im Hintergrund der Prozess "gnome-volume-manager", den der GNOME-Anwender mit dem Frontend "gnome-volume-properties" konfiguriert. Auch für HAL selbst gibt es ein Frontend, das alle angeschlossenen Geräte in einem Baum anzeigt. Der "hal-device-manager" verbirgt sich beispielsweise bei Fedora im Paket "hal-gnome".

Weblinks

Vorlage:dewi Vorlage:enwi