La couche d'abstraction matérielle HAL vise à fournir une liste des périphériques présents dans le système. Les périphériques physiques sont stockés dans la liste sous la forme d'objets périphériques. L'objet périphérique peut être n'importe quelle partie adressable du périphérique.
HAL offre une API réseau par l'intermédiaire de D-BUS pour interroger les périphériques et notifier lorsque des choses changent. Enfin, HAL permet la surveillance non intrusive des périphériques. Actuellement, la détection de liaison ethernet et le montage des volumes sont surveillés.
Le composant central de HAL est le démon de HAL, hald. Ce démon système gère une base de données des objets périphériques. Il contient également le code de détection et de surveillance des bus, tels que les bus PCI et USB, et des périphériques, tels que les périphériques de mise en réseau et de stockage. hald est responsable de la gestion du cycle de vie des objets périphériques.
Un objet périphérique est constitué d'un identificateur unique de périphérique (UDI) et d'un ensemble de propriétés dans des paires de clés et de valeurs. Les propriétés sont définies dans la spécification de HAL (reportez-vous à la Section 5.3, « Pour plus d'informations » (↑Guide de la connectivité)). Vous pouvez ajouter des propriétés ou les régler par l'intermédiaire de fichiers d'information de périphérique, stockés dans le répertoire /usr/share/hal/fdi.
Lorsque la liste des objets périphériques est modifiée ou lorsque d'une propriété d'un périphérique change, hald appelle des légendes. Les légendes sont des programmes utilisés pour gérer la stratégie du système, par exemple, pour changer les autorisations des périphériques ou mettre à jour les fichiers du système. Il existe trois types de légendes :
Toutes les légendes de ce type doivent se trouver dans /etc/hal/device.d. La légende Device Add (ajout de périphérique) est appelée après qu'un périphérique ait été ajouté à la liste globale des périphérique (GDL) et avant qu'il ne soit annoncé par l'intermédiaire de D-BUS. la légende Device Remove (suppression de périphérique) est appelée lorsqu'un périphérique est supprimé. Le périphérique n'est pas supprimé avant que la dernière légende ne soit terminée.
Toutes les légendes de ce type doivent se trouver dans /etc/hal/capability.d. Cette légende est appelée lorsqu'une fonction a été ajoutée ou supprimée.
Toutes les légendes de ce type doivent se trouver dans /etc/hal/property.d. Cette légende est appelée lorsqu'une propriété de périphérique a été ajoutée, supprimée ou modifiée.
hal-resmgr (paquetage hal-resmgr) est un exemple de légende Device Add Remove (ajout ou suppression de capacité). La légende hal-resmgr est utilisée par hald pour notifier resmgrd des périphériques nouveaux et supprimés. Le fichier fdi de hal-resmgr est /usr/share/hal/fdi/policy/10osvendor/80-resmgr.fdi.