Meniu

Gestionarea hardware-ului de tip hotplug si a mediilor amovibile

Începând cu Mandriva Linux 2005 LE, HAL (Hardware Abstraction Layer) este folosit extensiv pentru a gestiona hardware-ul de tip hotplug (dispozitive care sunt disponibile imediat dupa conectare, cum ar fi dispozitive de stocare pe USB, camere foto digitale, hard disk-uri amovibile) si medii amovibile cum ar fi CD-uri sau DVD-uri.

Când un nou dispozitiv este conectat la sistem, intervin o serie de evenimente in urmatoarea ordine :

- kernelul detecteaza cand noul hardware este conectat si cheama /sbin/hotplug (pentru a incarca modulul de kernel si a anunta aplicatiile interesate) si udev (pentru a crea dispozitivele aferente in /dev )
udev va trimite un semnal demonului hal (hald) cand dispozitivele sunt create/indepartate. udev va aplica de asemenea privilegiile PAM pentru nodul creat, permitand utilizatorului logat la sistem (cu setari de securitate scazute, low) sa-si acceseze dispozitivele fara privilegii de root.
- hotplug va trimite un semnal demonului hal cand evenimente hotplug ( dispozitive hardware sunt conectate/deconectate) au loc.
hald, folosind un set de reguli, updateaza configurarea sistemului (tree-ul sistemului) si trimite aceste schimbari in configuratie pe bus-ul sistemului (folosind dbus) la aplicatiile care „asculta“. Hald de asemenea cheama fstab-sync pentru a updata fstab, a adauga/elimina intrari pentru puncte de montare si a crea/elimina puncte de montare (in /mnt) daca este necesar.
- daca un utilizator este logat intr-un mediu grafic (cum ar fi KDE sau GNOME), el ar trebui sa aiba GNOME Volume Manager ruland in background (KDE deocamdata foloseste tot gvm pana cand KDE volume manager is complete). gvm asculta dupa evenimente pe busul sistemului (prin dbus) si este anuntat cand hald trimite evenimente despre adaugarea/eliminarea de dispozitive hardware. Bazat pe aceste evenimente si pe configuratia proprie, gvm fie va monta/demonta noul dispozitiv (pentru usb memory stick sau hard disk) sau va lansa aplicatii asociate (de ex. cand un aparat foto digital este conectat).

Pentru medii amovibile (cum ar fi CD sau DVD), calea este mai scurta :

hald monitorizeaza unitatea CD/DVD (sau oricare alta unitate de medii amovibile, cum ar fi un ZIP drive) in cautarea unui nou mediu. Daca un astfel de mediu este inserat sau ejectat, evenimentul este trimis prin dbus.
gnome-volume-manager „asculta“ dupa aceste evenimente si va monta/demonta punctele de montare respective. Daca mediul nu este unul de date (audio CD, video DVD), gnome-volume-manager va porni scripturile de utilizator /etc/dynamic/user-scripts/ care va incerca sa lanseze o aplicatie specifica mediului de lucru pe care se afla. De exemplu, daca utilizatorul introduce un DVD video sub GNOME, playerul totem va fi folosit ; sub KDE, va fi folosit kaffeine.

Cum sa facem debug?

Acum, urmeaza partea incurcata a problemei… Conectati un dispozitiv si „el nu functioneaza !“. Pentru a rezolva problema, este necesar sa completati un bug report pentru pachetul responsabil, pentru a ajuta dezvoltatorii sa inteleaga care este exact cauza. Cea mai buna cale de a gasi cauza este sa folositi o diagnosticare diferentiata (ca un diagnostic medical). Haideti sa incercam asta cu un dispozitiv de stocare amovibil : Conectati un hard disk amovibil.

Vedeti un icon pe desktop ? daca da, totul este in regula, testul a luat sfarsit
Nici un icon nou pe desktop : verificati /etc/fstab pentru a vedea daca noi puncte de montare au fost adaugate pentru acest dispozitiv. Daca nu sunteti siguri, deconectati dispozitivul, verificati /etc/fstab, apoi conectati dispozitivul, asteptati putin (10 secunde) si verificati iarasi. Daca un punct de montare a fost adaugat si este montat, raportati un bug in nautilus (pentru GNOME) sau kdebase (KDE).
Daca /etc/fstab contine deja un punct de montare, inseamna ca gnome-volume-manager nu a facut montarea automata. Verificati daca gnome-volume-manager ruleaza si daca este configurat sa monteze automat dispozitive amovibile.

Daca este setat asa, verificati daca hal nu a fost configurat sa inchida automount hint (citit de gnome-volume-manager) in /etc/hal/hald.conf (storage_automount_enabled_hint).
Daca este setat, asigurati-va ca acest hint nu a fost inchis in particular pentru dispozitivul pe care il aveti. Pentru aceasta, rulati hal-device-manager (din pachetul hal-gnome) si verificati valorile pentru acest parametru pentru dispozitivul pe care il aveti.
Daca acest hint este setat, probabil ca este un bug in gnome-volume-manager care trebuie raportat.
Daca acest hint nu este setat, fie a fost inchis cu un scop fie din greseala sau poate fi un bug. Acest bug ar trebui raportat pentru pachetul hal.

Daca /etc/fstab nu contine intrare pentru punctul de montare, fie hal nu a detectat dispozitivul fie nu a creat punct de montare pentru el :

verificati daca hald ruleaza corect (/etc/init.d/haldaemon status). Asigurati-va ca dbus ruleaza de asemenea (trebuie pornit inaintea demonului haldaemon), folosind /etc/init.d/messagebus status.
dac hal ruleaza corect, incercati sa monitorizati evenimentele hal noi folosind hal-device-manager : porniti hal-device-manager, apoi conectati (sau deconectati) dispozitivul. Tree-ul sistemului in hal-device-manager ar trebui sa se modifice (cu o latenta de pana la 5 sau 10 secunde).

daca tree-ul nu se modifica, hal nu a primit nici un eveniment hotplug sau nu stie sa il interpreteze. Verificati syslog cand conectati/deconectati dispozitivul :

daca kernelul vede ceva, este probabil un bug in hal.

daca nu, sau un bug in hotplug sau in kernel.

daca tree-ul inregistreaza schimbarile, inseamna ca unii parametrii pentru acest device lipsesc sau sunt gresiti. Ar trebui sa raportati un bug in hal.

Cand raportati un bug pentru hal sau gnome-volume-manager, ar trebui mereu sa adaugati logul „lshal“ la report, care este o reprezentare in mod text a vederii HAL asupra sistemului vostru.

Cand testam medii amovibile (cum ar fi CD-uri sau DVD-uri), scenariul este mai simplu :

daca aveti un mediu de date :

introduceti mediul : daca este montat automat (icon pe desktop), totul este in regula.
daca nu este montat, verificati daca punctele de montare sunt in regula (vezi mai sus). Incercati montarea manuala a dispozitivului. Daca merge, inseamna ca gnome-volume-manager nu l-a montat corect. De asemenea ar trebui sa verificati daca hald ruleaza corect, la fel si pentru dbus si gnome-volume-manager. De asemenea verificati daca gnome-volume-manager este configurat sa monteze automat medii amovibile. Porniti hal-device-manager si verificati daca mediul este detectat. Daca totul pare in regula, raportati un bug pentru gnome-volume-manager. Daca mediul nu este detectat de hal-device-manager, raportati un bug pentru hal.
de asemenea ar trebui sa testati ca atunci cand scoateti mediul este demontat corect.

daca mediul nu este unul de date (audio CD, video DVD) :

introduceti mediul : daca aplicatia nu este pornita, verificati daca este activata in configurarea gnome-volume-manager. Daca este, rulati hal-device-manager sa verificati daca noul mediu a fost corect detectat :

daca nu a fost detectat, completati un bug report pentru hal.
daca este detectat de hal-device-manager, incercati sa schimbati aplicatia asociata cu alta. Ejectati si introduceti iarasi mediul :

Daca noua aplicatie este detectata, ati gasit un bug bug in scripturile folosite la lansarea aplicatiilor. Completati un bug report pentru pachetul dynamic

Daca nici o aplicatie nu este pornita, este probabil un bug in gnome-volume-manager pe care ar trebui sa il raportati.

FlorinM

Utilizator Linux - Solus OS, pasionat de calatorii.
  • | 2708 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign