FlossDoc: 請協力 GPLv3 的中文翻譯工作。
HAL
FlossDoc,自由中文開源知識庫
HAL 是 freedesktop.org 的軟件計劃,用作為 Unix-like 系統 (特別是 GNU/Linux) 提供硬體抽象層 (hardware abstraction layer)。它容許桌面應用程式透過一個簡單、可移植和抽像的 API 偵測和使用電腦系統上的硬體裝置。HAL 最早由 Havoc Pennington 提出,後來變成了 FreeDesktop.org 的專案並成為 GNOME、KDE 和 Xfce 等桌面其中一個重要部份好一段時間。然而在 2008 至 2010 間,HAL 已在各 GNU/Linux distribution 中逐步被 udev 取替。
目录 |
歷史
傳統上,操作系統核心負責為電腦系統上的硬體提供抽象介面。應用程式透過系統呼叫 (system call) 或對裝置檔案 (device node) 進行存取來和硬體溝通,這已足夠應付早期簡單的電腦硬體。但隨著電腦硬體越來越複雜,傳統 Unix/Linux 所提供的介面已不足應付常見的硬體設備。新一代的匯流排 (bus) 已可以熱插拔 (hotplug) 和使用相對複雜的架構。這令傳統系統呼叫或 Unix IPC 難以測知新硬體裝置的插入或狀態改變,以致很多應用程式開發者被迫要自行開發硬體支援方案。而一些硬體可能需要高權力助理程式協助,例如讓一般使用者在桌面上連接無綫網絡需要高權力處理使用權限問題。個別應用程式會使用 setuid 程式或背景服務 (daemon) 解決問題,但�亦帶來一些安全問題。
2003 年,Havoc Pennington 提出了 HAL 以解決以上問題。[1]HAL 本身由單一個服務 hald 負責發現,列出和控制存取大部份硬體。而應用程式可以使用 D-Bus 提供的物件基礎 (object-based) IPC 和 HAL 溝通。在 HAL 中,每一個硬體裝置包括磁碟分割區 (disk partition) 和無線網絡介面會用一個 D-Bus 物件 (object) 代表,而裝置的每一個功能會以 D-Bus 介面 (interface) 代表,裝置的狀態則以 D-Bus 屬性 (properties) 代表。當有裝置事件發生,例如有數碼相機插入電腦或筆記簿型電腦的螢幕被蓋下等,HAL 會以裝置物件訊息 (signal) 廣播事件,聆聽的應用程式就可以收到訊息並作出回應。
HAL 一般會透過不斷檢查 /sys 檔案系統來發現硬體和聆聽 Linux 核心的 hotplug 事件。在不少 GNU/Linux 上,udev 亦會主動通知 HAL 新裝置檔案的出現。
Fedora Core 3 開始使用 HAL。HAL 成為 GNU/Linux 桌面一個很重要的部份。但隨著不斷開發,HAL 變成非常冗腫而很難管理。2008 年 5 月,HAL 開發者 David Zeuthen 提出取 HAL 完全重寫成 DeviceKit。[2]DeviceKit 早期的設計是把 HAL 的功能分拆成 DeviceKit 主服務和多個子服務,包括負責管理區塊裝置的 DeviceKit-disks 和負責管理電源的 DeviceKit-power 。udev 亦開始提供一個分享程式庫 libudev,讓 DeviceKit 和其他程式輕易使用 udev 固有功能,免卻重覆開發。
Fedora 11 和 Ubuntu 9.10 開始使用 DeviceKit 逐步取替 HAL,其他主要 GNU/Linux distribution 亦表示會取替 HAL。然而,DeviceKit 在 2009 年 3 月終止,其功能被併入 udev,而其他 DeviceKit 程式如 DeviceKit-disks 和 DeviceKit-power 則改為使用 libudev 直接和 udev 通訊。[3][4]至同年 12 月,DeviceKit-Disks 和 DeviceKit-Power 更分別先後重新命名為 udisks 和 upower。[5]而 Ubuntu 10.04 LTS 和 Fedora 13 完成了 udev (DeviceKit) 替代 HAL 工程,完全把 HAL 移除。
工具
- lshal - 列出 HAL 的硬體裝置
參考資料
- ↑ Pennington, Havoc (2003-07-10) Making Hardware Just Work. OMeter.
- ↑ Zeuthen, David (2008-05-07) Update on DeviceKit. HAL Mailing List.
- ↑ Zeuthen, David (2009-03-01) DeviceKit 003 released. DeviceKit Mailing List.
- ↑ Sievers, Kay (2009-04-26) udev rules files DeviceKit Mailing Litst.
- ↑ Zeuthen, David (2009-12-01) DeviceKit-disks renamed to udisks. DeviceKit Mailing List.
請參看
外部連結
- 維基百科: HAL (software) - 維基百科對 HAL 的說明
- RedHat Magazine #3: HAL (David Zeuthen 2003-01)
- Linux Symposium 2006: Dynamic Device Handling on the Modern Desktop (David Zeuthen & Kay Sievers 2006-07)
- 維基百科: DeviceKit - 維基百科對 DeviceKit 的說明

