HAL (freedesktop.org)

програмне забезпечення

HAL (скорочення від англ. Hardware Abstraction Layer) — демон, що надає шар апаратних абстракцій для Linux і деяких інших Unix-подібних систем. Проект спочатку створювався Red Hat, зараз розробляється на freedesktop.org. Демон HAL отримує інформацію про апаратне забезпечення від ядра ОС (у Linux, наприклад, HAL черпає велику частину інформації з sysfs), і надає програмам-клієнтам через D-Bus в зручному для користування форматі. Отримання інформації безпосередньо від ядра — процес складний і може бути пов'язаний з проблемами з безпекою, отже, наявність HAL сильно спрощує розробку програм, які мають знати про апаратну частину комп'ютера (наприклад, що користувач щойно від'єднав принтер або вставив флешку). Оскільки HAL на всіх платформах надає інформацію в одному форматі, незалежно від операційної системи і версії ядра, він також полегшує розробку крос-платформного ПЗ.

HAL
Тип Системне програмне забезпечення
Стабільний випуск 0.5.13 (15 липня 2009; 14 років тому (2009-07-15))
Платформа UNIX
Операційна система Linux, FreeBSD, NetBSD, OpenSolaris, Solaris
Мова програмування C[1]
Ліцензія GNU General Public License та Academic Free License
Вебсайт freedesktop.org/wiki/Software/hal

HAL розповсюджується за ліцензіями GNU General Public License і Academic Free License, і отже, є вільним програмним забезпеченням[2].

У теперішній час HAL вважається застарілим і не рекомендується до використання. Основними причинами є монолітність і труднощі налаштування[3].

Спочатку велика частина логіки HAL була перенесена в Udev, а правила в новий модуль — DeviceKit (не має нічого спільного з PolicyKit або ConsoleKit). Перевага udev перед HAL в тому, що перший є подієво-керованим модулем, а HAL періодично опитує ядро. Таким чином, використання подієво-керованого udev значно знижує навантаження на систему, а значить і електроспоживання.

Однак незабаром схема udev+DeviceKit дещо змінилася — розробники виявили, що велика частина апаратури вже управляється різними програмними компонентами і необхідні тільки правила для дисків (udisks)[4] і живлення (upower)[5]. Проект DeviceKit був розбитий на кілька дрібніших частин і більше не використовується і не згадується.[6]

Таким чином, сучасні дистрибутиви використовують тільки Udev і правила до нього (udisks, upower). Проте зважаючи на інерційності коду, багато програм все ще вимагають застарілий HAL (в основному для виявлення дисків) і тому дистрибутиви змушені поставляти HAL, фактично дублюючи логіку.

Але багато дистрибутивів (наприклад, Ubuntu[7], Debian[8] и Fedora[9]) вже приступили до використання замість нього Udev.

Виноски ред.

  1. The hal Open Source Project on Open Hub: Languages Page — 2006.
  2. "COPYING" file from the source code. Архів оригіналу за 15 березня 2012. Процитовано 20 січня 2010. 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. Update on DeviceKit. Архів оригіналу за 15 березня 2012. Процитовано 30 листопада 2011.
  4. Udisks, freedesktop.org, архів оригіналу за 22 листопада 2011, процитовано 1 листопада 2010
  5. Upower, freedesktop.org, архів оригіналу за 27 листопада 2011, процитовано 1 листопада 2010
  6. Ликвидация DeviceKit, freedesktop.org, архів оригіналу за 5 грудня 2011, процитовано 1 листопада 2010
  7. Halsectomy, ubuntu.com, архів оригіналу за 17 лютого 2012, процитовано 1 листопада 2009
  8. HAL Removal [Архівовано 26 листопада 2011 у Wayback Machine.], Debian wiki
  9. Hal Removal [Архівовано 9 грудня 2011 у Wayback Machine.], fedora

Див. також ред.