Jadro 2.6.25 a nVidia
S potešením som v úložisku vetvy testing zaregistroval nové jadro, trochu zaváhal, ale nakoniec som sa pustil do jeho aktualizácie. Ale beda, v novom jadre sa nedá nainštalovať ovládač grafickej karty nVidia! Prečo je to tak a ako sa nainštalovať dá som zhrnul do tohoto článku.
Prečo som najprv trochu zaváhal? Na nové jadrá sa pozerám s nedôverou a k ich aktualizácii sa staviam negatívne. To neznamená, že neaktualizujem, ale vopred očakávam problémy, ktoré sa mi už dopredu nechce riešiť. Nakoniec sa ale vždy do aktualizácie pustím s nádejou, že teraz už možno problémy nebudú.
Nové jadro na amd64
S inštaláciou nového jadra som začal na mojom stroji, kde mám Debian/testing na architektúre amd64. Keď si odmyslím obligátne problémy so skenerom (Samsung SCX-4200) a s potrebou kompilácie nových modulov pre nVidiu a pre VirtualBox, všetko prebehlo bez problémov. Spomeniem tu aj "problém" s verziou kompilátora. Inštalátor hlási, že jadro je preložené pomocou prekladača gcc-4.1 a preloženie modulu iným prekladačom môže spôsobiť problémy. Na novom jadre som to neskúšal, ale na starších bolo možné pokojne toto hlásenie ignorovať a pokračovať v inštalácii. Toto správanie možno priamo nastaviť voľbou inštalátora --no-cc-version-check. Ak chcete modul preložiť starším prekladačom, je potrebné nastaviť premennú CC:
export CC=`which gcc-4.1`
Po aktualizácii mi blbol zvuk, konkrétne aRts, ale to asi nesúvisí z jadrom, ale prinútilo ma to konečne pristúpiť k jeho vypnutiu a zvuky riešiť inak. Celkovo môžem skonštatovať, že aktualizácia na architektúre amd64 bola viac-menej bezproblémová.
Jadro na i386
Na druhý deň som sa pustil do aktualizácie druhého stroja. Ten beží na architektúre i386, na ktorej používam jadro *-686. Nainštaloval som nové jadro, reštartoval a pustil sa do inštalácie nvidie. Nastavil som CC a spustil inštalátor. Povzbudený relatívnou bezproblémovosťou na 64 bitovej architektúre som bol optimista. Ale inštalátor skončil chybou:
ERROR: The kernel you are installing for is a Xen kernel!
The NVIDIA driver does not currently work on Xen kernels. If
you are using a stock distribution kernel, please install
a variant of this kernel without Xen support; if this is a
custom kernel, please install a standard Linux kernel. Then
try installing the NVIDIA kernel module again.
Dosť ma to prekvapilo a naozaj som kontroloval, či som náhodou nenainštaloval jadro *-xen-686, ale nie. Už je to tu!
i386 a jadro amd64
Keďže na 64-b to išlo bez problémov, rozhodol som sa skúsiť jadro *-amd64, keďže v stroji je 64-b procesor. Nainštaloval som ho, reštartoval, stiahol ovládač nvidie x86_64, nastavil CC a spustil ho. A nič, tentokrát s chybou:
./nvidia-installer: No such file or directory
Nastal večer, deti mali ísť spať, tak som v Grube nastavil staré jadro a pokračoval v pátraní na internete. Že o čo to ide. Pátranie som začal práve vzhľadom k poslednej uvedenej chybe a nakoniec som vo fóre na stránkach nVidia našiel príspevok z roku 2005, v ktorom som sa dočítal, že ovládač nVidie v 32-b prostredí so 64-b jadrom proste nerozchodím, lebo to nepodporuje. Takže som sa vrátil k pátraniu, prečo to nefunguje s jadrom 686.
Opäť jadro 686
Najprv ma zaujímalo ako je to s tým Xen (kto nevie, ide o virtulaziáciu). Pri pátraní som narazil na diskusiu vo fóre Debianu, kde som sa dočítal ako to s tým Xen vlastne je, citáciou z http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=481161 (voľne preložené):
Všetky jadrá 2.6.25 v Debiane majú povolený xen a to preto, aby každý Debian mohol bootovať ako hosť xen. Treba si prečítať changelog...
Dobre, teraz som už vedel s istotou, že som nenainštaloval zlé jadro, ale X server mi to rozbehnúť veľmi nepomohlo. Najmä nie citácia z http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=481485 (voľne preložené):
Vývojári Debianu dajú do poriadku balíček s jadrovými ovládačmi nVidia v úložisku, ale ak používate ovládač priamo z nvidia, musíte si poradiť sami...
Tak som skúsil balíček s ovládačmi z úložiska. Aj toto skončilo neúspechom (asi mojou chybou). Tak som pátral ďalej. Dočítal som sa, že ignorovanie podpory Xen v jadre sa dá vypnúť nastavením premennej IGNORE_XEN_PRESENCE na 1:
export IGNORE_XEN_PRESENCE=1
Plný nádeje som to vyskúšal ... a zase nič. Inštalátor síce postúpil, ale samotný preklad modulu skončil chybou. Keďže sa ale nerád vzdávam, hľadal som ďalej a našiel som!
Riešenie
Pre tých, ktorí mali trpezlivosť dočítať sa až sem ponúkam zopár informácií v našom jazyku, ktoré som našiel v blogu Petra Velichkova How-to Install Nvidia Driver on 2.6.25-2 Debian Kernel (with Xen):
Riešenie, okrem prekladu vlastného jadra, je vlastne jednoduché (zálohujte):
- cd /lib/modules/2.6.25-2-686 #prípadne si opravte cestu
- grep CONFIG_XEN . -Rl | xargs -i sed -i -e ’s/CONFIG_XEN/CONFIG_LUPO/g’ {}
- export IGNORE_XEN_PRESENCE=1
- sh NVIDIA-Linux-x86-173.09-pkg1.run #prípadne si upravte verziu a cestu
A ejhľa! Funguje! O čo vlastne ide? najprv sa prepnete do adresára s modulmi príslušného jadra. V ďalšom kroku zameníte všetky váskyty reťazca CONFIG_XEN na CONFIG_LUPO, potom nastavíte premennú pre ignorovanie existencie Xen. No a nakoniec spustíte inštalátor.
Ja som po tomto ešte pre istotu vrátil všetko do pôvodného stavu:
- cd /lib/modules/2.6.25-2-686 #prípadne si opravte cestu
- grep CONFIG_LUPO . -Rl | xargs -i sed -i -e ’s/CONFIG_LUPO/CONFIG_XEN/g’ {}
... ale netvrdím, že je to potrebné.
Nie je to jediné riešenie. Na adrese http://techpatterns.com/forums/about933.html rastie projekt sgfxi. Jedná sa vlastne o skript, ktorý stiahne binárny balíček grafického ovládača nVidia alebo ATI, pripraví systém, nainštaluje ovládač, nastaví xorg.conf, a to všetko čistým a intuitívnym spôsobom (preklad z popisu programu). Tento skript som neskúšal, ale reakcie používateľov sú pozitívne, takže skúste.

