HAL (freedesktop.org)

HAL
Tip de Programul sistemului
Scris in C [1]
Sistem de operare Linux , FreeBSD , NetBSD , OpenSolaris , Solaris
Platformă hardware UNIX
ultima versiune 0.5.14 ( 30 noiembrie 2009 )
Stat Dezvoltarea sa încheiat
Licență Licență publică generală GNU și licență gratuită academică
Site-ul web freedesktop.org/wiki/Sof…

HAL (abreviat din engleză. Stratul de abstractizare  hardware ) - nu mai este demon dezvoltat , reprezentând un strat de abstracții hardware pentru Linux și alte sisteme asemănătoare Unix .

Obiective și istoric de dezvoltare

Proiectul a fost creat inițial de Red Hat . Daemonul HAL primește informații hardware din nucleul sistemului de operare (pe Linux, de exemplu, HAL își obține cea mai mare parte a informațiilor de la sysfs ) și le pune la dispoziție pentru programele client prin D-Bus într-un mod ușor de utilizat. Obținerea informațiilor direct din nucleu este complexă și poate fi plină de probleme de securitate; prin urmare, prezența unui HAL simplifică foarte mult dezvoltarea programelor care trebuie să știe despre hardware-ul computerului (de exemplu, că utilizatorul tocmai a deconectat o imprimantă sau a introdus o unitate flash USB). Deoarece HAL oferă informații în același format pe toate platformele, indiferent de sistemul de operare și versiunea kernelului, facilitează, de asemenea, dezvoltarea de software pe mai multe platforme . În plus, HAL a făcut posibilă crearea de acțiuni automate (montare automată a discurilor, autoconfigurare imprimante etc.) prin reguli.

HAL este licențiat sub Licența publică generală GNU și Licența gratuită academică și este software liber [2] .

Starea actuală

HAL este depreciat și depreciat . Deciziile luate ca bază pentru proiectarea HAL s-au dovedit a fi ineficiente în practică, iar singura cale de ieșire a fost crearea unui nou subsistem și transferul funcționalității. udev [3] a devenit un astfel de sistem .

În prezent, suportul HAL a fost eliminat din kernel, iar distribuțiile majore ( Ubuntu [4] , Debian [5] și Fedora [6] ) au finalizat tranziția și au folosit Udev .

Motivele eliminării

Principalul avantaj al noului subsistem udev (peste HAL) este că primul este bazat pe evenimente și are o integrare strânsă cu nucleul, în timp ce HAL, fiind implementat în spațiul utilizatorului ca un daemon , este forțat să interogheze periodic nucleul. Astfel, utilizarea udev determinată de evenimente reduce semnificativ sarcina sistemului și, prin urmare, consumul de energie. De asemenea, descrierile regulilor pentru dispozitive sunt realizate sub formă de fișiere de configurare simple și sunt mult mai simple și mai ușor de înțeles pentru utilizatori și dezvoltatori decât XML-ul folosit anterior în HAL. În cele din urmă, udev este proiectat dintr-o listă curată, bazată pe experiența anterioară și nu are cod învechit sau dezordonat.

Procesul de migrare de la HAL la udev

Inițial, cea mai mare parte a logicii HAL a fost mutată în udev, iar regulile au fost mutate într-un nou modul numit DeviceKit (a nu fi confundat cu PolicyKit sau ConsoleKit ).

Cu toate acestea, schema udev+DeviceKit s-a schimbat oarecum în curând - dezvoltatorii au descoperit că cea mai mare parte a hardware-ului era deja controlată de diverse componente software și erau necesare doar reguli pentru discuri ( udisks ) [7] și putere ( upower ) [8] . Proiectul DeviceKit a fost împărțit în mai multe părți mai mici și nu mai este folosit sau menționat [9] .

Astfel, distribuțiile moderne folosesc doar Udev și regulile sale (discurile, upower fac parte din pachetul udev-extras). Cu toate acestea, din cauza inerției codului, multe programe necesită încă un HAL învechit (în principal pentru detectarea discurilor) și, prin urmare, distribuțiile sunt forțate să furnizeze un HAL, duplicând efectiv logica (de exemplu, Qt3 și proiectul Trinity care a întâlnit acest lucru). ).

Vezi și

Note

  1. Proiectul Hal Open Source pe Open Hub: Pagina de limbi - 2006.
  2. Fișier „COPYING” din codul sursă (downlink) . - „HAL vă este licențiat în baza Licenței Academice Gratuite, versiunea 2.1, sau a Licenței Publice Generale GNU, versiunea 2.” Arhivat din original pe 15 martie 2012. 
  3. Actualizare pe DeviceKit (link descendent) . Arhivat din original pe 15 martie 2012. 
  4. Halsectomy , ubuntu.com , < https://wiki.ubuntu.com/Halsectomy > . Recuperat la 1 noiembrie 2009. Arhivat la 17 februarie 2012 la Wayback Machine 
  5. Eliminarea HAL Arhivat 26 noiembrie 2011 la Wayback Machine , wiki Debian
  6. Hal Removal Arhivat pe 9 decembrie 2011 la Wayback Machine , fedora
  7. Udisks , freedesktop.org , < http://www.freedesktop.org/wiki/Software/udisks > . Recuperat la 1 noiembrie 2010. Arhivat la 22 noiembrie 2011 la Wayback Machine 
  8. Upower , freedesktop.org , < http://upower.freedesktop.org/ > . Recuperat la 1 noiembrie 2010. Arhivat la 27 noiembrie 2011 la Wayback Machine 
  9. DeviceKit liquidation , freedesktop.org , < http://www.freedesktop.org/wiki/Software/DeviceKit > . Recuperat la 1 noiembrie 2010. Arhivat la 5 decembrie 2011 la Wayback Machine