Dedinčan odporúča...

dnsmasq logodnsmasq je jednoduchý DNS server, ktorý dokáže plniť úlohu DNS servera pre lokálnu sieť, lokálnej vyrovnávacej pamäte DNS, preposiela požiadavky DNS nadradeným serverom. Okrem toho ponúka zabudovaný DHCP a TFTP server, vrátane jednoduchého PXE menu.

nVidia a aktualizácia Xorg

Kategória: Debian GNU/Linux
Upravené: nedeľa, 12. december 2010
Contents

Po aktualizácii Xorg prestala fungovať 3D podpora grafickej karty? Stáva sa to ak používate binárne ovládače nVidia. A oprava? Žiadny problém, je to spôsobené nahradením jedného súboru, ale o tom ďalej.

Ja to už poznám, pri každej aktualizácii kontrolujem čo sa vlastne aktualizuje (nie len kvôli nVidia), a tak po zistení nejakých aktualizácií Xorg spúšťam pre kontrolu glxgears. Ak neviete o čo ide, je to program z balíčka mesa-utils, ktorý zobrazuje otáčajúce sa ozubené kolieska. Do konzoly vypisuje rýchlosť renderovania a vlastne slúži ako benchmarkový nástroj, ktorý zároveň jednoducho (a vizuálne) preverí funkčnosť GLX. Ak po spustení dostanem chybové hlásenie

$ glxgears
Error: glXCreateContext failed

viem, že je niekde chyba. Pôvodne som to riešil opakovanou inštaláciou ovládača nVidia, ale práve pri nej som si všimol jedno chybové hlásenie, ktoré ma upozorňovalo, že istý súbor nie je symbolickým odkazom. Je to súbor /usr/lib/xorg/modules/extensions/libglx.so. Ak si ho dáte vypísať, dostanete toto

$ ll /usr/lib/xorg/modules/extensions/libglx.so
-rw-r--r-- 1 root root 518K  3. aug 00.27 /usr/lib/xorg/modules/extensions/libglx.so

lenže pri nainštalovanom binárnom ovládači nVidia by mal byť výsledok podobný tomuto (samozrejme, s číslom Vašej verzie ovládača):

$ ll /usr/lib/xorg/modules/extensions/libglx.so
lrwxrwxrwx 1 root root 19 30. júl 23.54 /usr/lib/xorg/modules/extensions/libglx.so -> libglx.so.173.14.09

Jednoduchou pomôckou nech Vám je, že ak máte nainštalovaný ovládač nVidia a súbor nie je symbolickým odkazom, podpora GLX nepôjde. Tak si dajme vypísať aké GLX knižnice v systéme máme (teraz už ako root):

# cd /usr/lib/xorg/modules/extensions
# ll libglx*
-rw-r--r-- 1 root root  426657  2. aug 23.44 libglx.so
-rwxr-xr-x 1 root root 1269664  2. aug 12.33 libglx.so.173.14.09

Vo výpise vidieť dve knižnice, tá prvá (libglx.so) je súčasťou balíka xserver-xorg-core a overiť si to môžete príkazom:

dpkg -S libglx.so
xserver-xorg-core: /usr/lib/xorg/modules/extensions/libglx.so

Druhý súbor je jeho obdoba, ale z binárneho ovládača nVidia. Na konci mena si všimnite číslo verzie ovládača. Teraz nastal čas, upraviť odkaz, takže najprv premenovať originál libglx.so (možno ho aj zmazať) a vytvoriť symbolický odkaz na súbor z nVidia:

# mv libglx.so libglx.so.old
# ln -s libglx.so.173.14.09 libglx.so

Ak to prebehlo v poriadku, výsledok by mal vyzerať takto (pre laikov pripomínam, že číslo verzie môžu mať iné):

ll libglx*
lrwxrwxrwx 1 root root      19 18. aug 10.53 libglx.so -> libglx.so.173.14.09
-rw-r--r-- 1 root root  426657  2. aug 23.44 libglx.so.old
-rwxr-xr-x 1 root root 1269664  2. aug 12.33 libglx.so.173.14.09

Ostáva reštartovať X server (Ctrl + Alt + BackSpace), ale odporúčam sa najprv odhlásiť a po prihlásení skúsiť ozubené kolieska:

$ glxgears
28465 frames in 5.0 seconds = 5692.935 FPS
28732 frames in 5.0 seconds = 5746.363 FPS
...

Diverzia

Iným spôsobom je vytvoriť pravidlo, ktoré balíku(om) nariadi, aby tento súbor neinštalovali, na čo slúži príkaz dpkg-divert. V takejto podobe:

dpkg-divert --divert /usr/lib/xorg/modules/extensions/libglx.so.orig \
            --rename /usr/lib/xorg/modules/extensions/libglx.so

Tento príkaz vytvorí pravidlo, aby všetky balíky, ktoré sa snažia tento súbor inštalovať, ho po inštalácii premenovali na libglx.so.orig. Dajte však pozor a tento príkaz spusťte po aktualizácii xorg, ale pred novou inštaláciou nVidia. Prípadne pred aktualizáciou xorg. Pretože už samotné vykonanie príkazu premenuje dotyčný súbor podľa pravidla!

Súbor libglx.so nie je jediný, ktorý sa kope so súbormi balíkov Debianu. Zatiaľ som narazil na tieto súbory, ktoré treba ošetriť:

Tento zoznam už neudržiavam, vytvoril som balík (nvidia-nonfree), ktorý tieto diverzie nainštaluje a v budúcnosti dokáže zaistiť aj aktualizácie (teda odstraňovanie/pridávanie) diverzií.

dpkg-divert --rename --divert /usr/include/GL/gl.h.orig /usr/include/GL/gl.h
dpkg-divert --rename --divert /usr/include/GL/glext.h.orig /usr/include/GL/glext.h
dpkg-divert --rename --divert /usr/include/GL/glx.h.orig /usr/include/GL/glx.h
dpkg-divert --rename --divert /usr/include/GL/glxext.h.orig /usr/include/GL/glxext.h
dpkg-divert --rename --divert /usr/include/vdpau/vdpau.h.orig /usr/include/vdpau/vdpau.h
dpkg-divert --rename --divert /usr/include/vdpau/vdpau_x11.h.orig /usr/include/vdpau/vdpau_x11.h
dpkg-divert --rename --divert /usr/lib/libvdpau.so.orig /usr/lib/libvdpau.so

Tak, nech slúži!

Pridajte svoj komentár...

    Copyright © 2008 - 2012 Sprievodca dedinčana... Niektoré práva vyhradené.
    Ak nie je uvedené inak, obsah podlieha licencii „Creative Commons Uveďte autora – Zachovajte licenciu 3.0 Unported

    Nenasledovať tento odkaz, inak budete maž zakázaný prístup na stránku!