Pierwsze sotkanie z HAL’em – katalog montowania dla napędów zewnętrznych w Ubuntu
HAL (ang. hardware abstraction layer) czyli warstwa abstrakcji sprzętowej. Stanowi ogniwo pośredniczące między sprzętem a jądrem systemu operacyjnego. Odseparowuje konkretną architekturę systemu komputerowego od oprogramowania użytkowego. Dla programisty jest sposobem komunikacji ze sprzętem przez udostępniane funkcje biblioteczne i sterowniki.
To tyle z teorii, teraz trochę praktyki. Powyższa regułka jest ogólnym opisem samej idei HAL’a. Jak wiemy obecne systemy Linux do zarządzania sprzętem korzystają z demona o takiej samej nazwie. Dzięki HAL’owi mamy z głowy ręczne konfigurowanie całego sprzętu w naszym systemie, bo HAL dzięki swoim skryptom i bazie sprzętu, automatycznie go rozpoznaje i konfiguruje. Jest to rozwiązanie łatwe miłe i przyjemne. Nadchodzi jednak taka chwila, gdy okazuje się że mamy trochę inne potrzeby niż przewidzieli to programiści – wtedy nie pozostaje nam nic innego jak nauczyć się konfigurowania usługi.
Systemy z rodziny Ubuntu montują napędy zewnętrzne w katalogu /media/nazwa_volumenu. Ja natomiast poczułem potrzebę aby wszystkie napędy USB były montowane zawsze do tego samego katalogu, czyli /media/usbdrive. Pierwsza myśl jaka przyszła mi do głowy to wpis w /etc/fstab – o ile sprawdza się to przy napędach stałych, tak w przypadku wymiennych zupełnie nie zdaje egzaminu, ponieważ po wyjęciu np. pendrive nie zostaje on automatycznie odmontowany i „wisi” w systemie. Nie pozostało mi nic innego jak określić regułę dla HAL’a. Z dużą przykrością muszę stwierdzić, że informacji na temat konfiguracji HAL’a w Internecie jest bardzo niewiele, a w języku polskim właściwie wcale. Moje pierwsze kroki z HAL’em stawiałem dzięki: ubntuforums.org. Moje reguły dla HAL’a zapisałem w /etc/HAL/90-usbdrive.fdi w następujący sposób:
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.category" string="volume">
<match key="block.device" string="/dev/sdb1">
<merge key="volume.label" type="string">usbdrive</merge>
<merge key="volume.policy.desired_mount_point" type="string">usbdrive</merge>
</match>
</match>
</device>
</deviceinfo>
Jak to działa:
03: jeżeli urządzenie jest volumenem
04: jeżeli urządzenie znajduje się w pliku /dev/sdb1 (w moim przypadku pierwszy napęd USB zawsze jest nazywany jako sdb)
05: zmień nazwę volumenu na „usbdrive”
06: zamontuj w katalogu „usbdrive”
Niby nic trudnego, ale bez zewnętrznych źródeł trudno samemu do tego wszystkiego dojść.
Z powyższego przykładu widać, że HAL jest bardzo elastyczny i można go dostosować do swoich potrzeb, problemem jest dostępność dokumentacji HAL’a wraz z opisem poszczególnych kluczy.
Kategorie : Linux












Najnowsze komentarze