HAL (software)

HAL (software)
HAL
Stable release 0.5.14 / November 30, 2009; 23 months ago (2009-11-30)
Development status Deprecated; functionality merged with udev
Operating system Linux, FreeBSD, NetBSD, OpenSolaris, Solaris
Platform UNIX
Type System software
License GNU General Public License and Academic Free License
Website freedesktop.org/wiki/Software/hal

HAL was a software project providing a hardware abstraction layer for Unix-like computer systems.

HAL is now deprecated on GNU/Linux systems, with functionality being merged into udev as of 2008–2010. Previously, HAL was built on top of udev, which was lower level.

It aimed to allow desktop applications to discover and use the hardware of the host system through a simple, portable and abstract API, regardless of the type of the underlying hardware.[1]

HAL was originally envisioned by Havoc Pennington and is now a freedesktop.org project, being a key part of the software stack of the GNOME and KDE desktop environments. It is free software, dual-licensed under both the GNU General Public License and the Academic Free License.[2]

HAL is unrelated to the earlier concept of Windows NT kernel HALs (also found in current Windows releases), which handle some platform-specific core functionality within the kernel, such as interrupt routing.

Contents

Rationale

Traditionally, the operating system kernel was responsible for providing an abstract interface to the hardware the system ran on. Applications used the system call interface, or performed file I/O on device nodes in order to communicate with hardware through these abstractions. This sufficed for the simple hardware of early desktop computing.

Computer hardware, however, has increased in complexity and the abstractions provided by Unix kernels have not kept pace with the proliferating number of device and peripheral types now common on both server and desktop computers. Most modern buses have also become hotplug-capable and can have non-trivial topologies. As a result, devices are discovered or change state in ways which can be difficult to track through the system call interface or Unix IPC. The complexity of doing so forces application authors to re-implement hardware support logic.[1]

Some devices also require privileged helper programs to prepare them for use. These must often be invoked in ways that can be awkward to express with the Unix permissions model (for example, allowing users to join wireless networks only if they are logged into the video console).[1] Application authors resort to using setuid binaries or run service daemons to provide their own access control and privilege separation, potentially introducing security holes each time.

Design

HAL is a single daemon responsible for discovering, enumerating and mediating access to most of the hardware on the host computer. Applications communicate with HAL through the D-Bus IPC mechanism, which abstracts the hardware behind an object-based RPC mechanism.

Each logical hardware device is represented as a D-Bus object, and its bus address is used as a unique identifier. Devices include abstractions like disk partitions and visible wireless networks. The device's functionality is exposed through D-Bus interfaces, and its state accessed through properties, a set of key-value pairs.

HAL broadcasts hardware events as signals on these objects: listening applications can listen for these to react on hardware events (such as a digital camera being plugged in, an optical disc spinning up or a laptop computer closing its lid).[3]

Implementations and obsolescence

On Linux, HAL uses the /sys filesystem to discover hardware and listen for kernel hotplug events. Some Linux distributions also provide a udev rule to allow the udev daemon to notify HAL whenever new device nodes appear.

Deprecated

As of 2011, GNU/Linux distributions such as Ubuntu,[4] Debian,[5] and Fedora,[6] and projects such as KDE[7], GNOME and X.org are in the process of deprecating HAL as it has "become a large monolithic unmaintainable mess".[4] The process is largely complete, but some use of HAL remains – Debian squeeze (Feb 2011) and Ubuntu version 10.04 remove HAL from the basic system and boot process.[8]

In GNU/Linux, it is in the process of being merged into udev (main udev, libudev, and udev-extras) and existing udev and kernel functionality. No specific replacement for non-GNU/Linux systems has been identified.

Initially a new daemon DeviceKit was planned to replace certain aspects of HAL, but in March 2009, DeviceKit was deprecated in favor of adding the same code to udev as a package: udev-extras, and some functions have now moved to udev proper.

See also

  • udev – lower level on which HAL builds, and replacement for HAL, on GNU/Linux systems

References

  1. ^ a b c Pennington, Havoc (2003-07-10), Making Hardware Just Work, http://ometer.com/hardware.html 
  2. ^ HAL source code license text, http://cgit.freedesktop.org/hal/tree/COPYING, "HAL is licensed to you under your choice of the Academic Free License version 2.1, or the GNU General Public License version 2" 
  3. ^ Zeuthen, David (2007-06-13), HAL 0.5.10 Specification, freedesktop.org, archived from the original on April 6, 2008, http://web.archive.org/web/20080406073253/http://people.freedesktop.org/~david/hal-spec/hal-spec.html, retrieved 2009-04-18 
  4. ^ a b Halsectomy, ubuntu.com, https://wiki.ubuntu.com/Halsectomy, retrieved 2009-11-01 
  5. ^ HAL Removal, Debian wiki
  6. ^ Hal Removal, fedora
  7. ^ Retire the old HAL backend for KDE, KDE
  8. ^ Ubuntu lucid Beta1 HAL Removal

External links


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • HAL (Software) — HAL Aktuelle Version 0.5.14 (30. November 2009) Betriebssystem Linux, FreeBSD Lizenz GPL and AFL …   Deutsch Wikipedia

  • HAL (software) — HAL Desarrollador FreeDesktop.org freedesktop.org/wiki/Software/hal Información general Última versión estable 0.5.14 30 de noviembre de …   Wikipedia Español

  • HAL (software) — …   Википедия

  • Hal — puede referirse a: HAL 9000: Personaje de la saga iniciada con 2001: Una odisea del espacio. HΛL: Banda musical japonesa. HAL (software): Capa de abstracción software para acceder al hardware en Linux y Windows. (En inglés: en:HAL (software)) HAL …   Wikipedia Español

  • Hal — steht für: HAL 9000, der Computer in den Filmen: „2001: Odyssee im Weltraum“ und „2010 – Das Jahr, in dem wir Kontakt aufnehmen“ (9000) Hal, ein Hauptgürtelasteroid, dessen Name auf den vorstehenden Computer anspielt. HAL Dhruv, ein indischer… …   Deutsch Wikipedia

  • HAL — steht für: HAL 9000, der Computer in den Filmen: „2001: Odyssee im Weltraum“ und „2010 – Das Jahr, in dem wir Kontakt aufnehmen“ (9000) Hal, ein Hauptgürtelasteroid, dessen Name auf den vorstehenden Computer anspielt. HAL Dhruv, ein indischer… …   Deutsch Wikipedia

  • HAL — NOTOC HAL or Hal may refer to:PeopleHal is a short form of the English name Harold or Henry. * Hal Prince (born 1928), producer and director * Hal Barwood, game designer * Hal Jordan, the silver age Green Lantern * Hal ( A Series of Unfortunate… …   Wikipedia

  • Hal Abelson — Nom de naissance Harold Abelson Nationalité …   Wikipédia en Français

  • Hal Leonard Corporation — is a US music publishing company headquartered in Milwaukee, WI. It is the largest sheet music publisher in the world. Profile In its more than 100,000 available titles, Hal Leonard represents in print some of the world s best known and most… …   Wikipedia

  • HAL Laboratory — Tipo Subsidiaria Fundación 21 de febrero de 1980 Sede …   Wikipedia Español

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”