5.2 Hardware Abstraction Layer (HAL)

HALとは、ハードウェア抽象層で、システムに存在するデバイスのリストを作成します。リストには、物理的なデバイスが「デバイスオブジェクト」の形式で格納されます。デバイスオブジェクトは、デバイスのアドレス可能な部分すべてを指します。

HALは、変更があった場合にデバイスに問い合わせ、通知するためのネットワークAPIをD-BUSを介して提供します。HALは、非侵入的なデバイスのモニタリングも行います。現在では、イーサネットリンクの検出およびボリュームのマウントが監視されます。

HALの中心コンポーネントは、haldというHALデーモンです。haldは、デバイスオブジェクトのデータベースを管理するシステムデーモンです。このデーモンには、PCI、USBバスなどのバス、ネットワーキングおよびストレージデバイスなどのデバイスの検出とモニタリングコードも含まれます。haldは、デバイスオブジェクトのライフサイクルを管理します。

デバイスオブジェクトは、一意のデバイス識別番号(UDI)と、キーと値のペアによる一連のプロパティで構成されます。プロパティは、HAL仕様で定義されます(5.3項 「関連情報」 (↑コネクティビティガイド)を参照)。新しいプロパティを追加するか、または/usr/share/hal/fdiディレクトリ内に格納されているデバイス情報ファイルを使用して調整できます。

デバイスオブジェクトリストが変更された場合、またはデバイスプロパティが変更した場合、haldは呼び出しを起動します。呼び出しは、デバイスのパーミッションの変更、システムファイルの更新などのシステムポリシーを管理するのに使用可能なプログラムです。呼び出しには次の3種類があります。

Device AddまたはDevice Remove

この種類の呼び出しはすべて、/etc/hal/device.dに格納されます。Device Addという呼び出しは、デバイスがグローバルデバイスリスト(GDL)に記述された後、D-BUSを介してアナウンスされる前に起動されます。Device Removeという呼び出しは、デバイスが削除されるときに起動されます。そのデバイスは、最後の呼び出しが完了するまで削除されません。

Capability AddまたはCapability Remove

この種類の呼び出しはすべて、/etc/hal/capability.dに格納されます。この呼び出しは、機能が追加または削除されたときに起動されます。

Property Change

この種類の呼び出しはすべて、/etc/hal/property.dに格納されます。この呼び出しは、デバイスプロパティが追加、削除または変更されたときに起動されます。

hal-resmgr (hal-resmgrパッケージ)は、Device Add Removeの呼び出しの例です。hal-resmgr呼び出しは、新規および削除されたデバイスのresmgrdを通知するためにhaldによって使用されます。hal-resmgrのfdiファイルは、/usr/share/hal/fdi/policy/10osvendor/80-resmgr.fdiです。