2007-01-08

Nouveau un Nvidia

Nu jau ilgāku laiku - kādus 3 mēnešus - sev publisku uzmanību ir piesaistījuši Nouveau projekta puši. Šo vīru veikums laikā, ka sakarā ar Ubuntu izstrādātāju ierosinājumu nākošajā izlaidumā Feisty pieļaut noklusējamo bināro draiveru instalēšanu ir izraisījusies ļoti nokaitēta diskusija par mūsu atkarību no divu kompāniju - Nvidia un ATI - nevēlēšanās izdot karšu specifikācijas, ir ļoti svētīgs. Lai arī daudzi sākumā ļoti skeptiski vīpsnāja un apšaubija šāda projekta jēgu - atpakaļinžinierēt sarežģītu video karti, kas pietam izmanto GPU, nav tas pats, kā tādā pašā veidā dabūt pie "dziesmas" tīkla karti - projekta mājas lapa tiek pieminēta arvien biežāk un biežāk. Vislielāko interesi manī izraisija iespēju matrica (features matrix), kurā zaļo plankumu (t.i. funkcionalitāte ir atkosta) ir cerīgi daudz. Protams, kāmēr neredzēsim reāli strādājošu atvērtā koda draiveri kurš varēs palaist Beryl, tikmēr būs grūti noticēt, ka tas ir iespējams. Bet ja izdosies, tad laikam būs jāpiekrīt senam teicienam, ka apņēmīgus cilvēkus ir grūti apturēt un ka runāšana par un pret bināriem draiveriem ir tikai gaisa karsēšana - ja neko nespējam mainīt, tad ir jāķeras pie darba.

Tie, kuri vēlas "ķerties pie darba" un palīdzēt kaut nedaudz projektam, var to darīt ar reģistra dumpu palīdzību. Ja jums ir kāds eksotisks Nvidia čipsets, vai vienkārši vēlaties pielikt savu roku lielajā darbā, kā arī zināt pietiekami daudz konsoles komandu, varat mēģināt paspēlēties ar REnouveau. Tā ir programmiņa, kas palaiž 3D acelerācijas komandas un skatās datora reģistru pierakstus, tādējādi provējot uztaustīt, ko savā starpā "čato" binārais draiveris un Nvidia video karte.

Ja esat nolēmis piedalīties, virzieties par šādiem soļiem:
1. Vispirms programmas prasības.
+ Tai ir jābūt salīdzinoši modernai Nvidia video kartei, TNT un pirmās paaudzes Geforce varētu arī nestrādāt;
+ Otrais, jums ir jābūt reāli strādājošam binārajam nvidia Xorg draiverim uzinstalētam un uzkonfigurētam;
+ Trešais, Beryl un XGL/AIXGL vajag izslēgt, lai netraucē programmas datu vākšanai;
+ Ceturtais, datoram jābūt izstrādātāja komplektam - gcc, glib, utt., jo REnuveau ir jākompilē no CVS, jo tā nemitīgi tiek papildināta;
+ Piektais, datorā ir jābūt uzstādītam cvs;
+ Sestais, ir jābūt uzinstalētiem libsdl-dev un libsdl-gfx1.2-dev "headeriem" (paktoņu nosaukumi Ubuntu sistēmai);
+ Septītais - pārliecinieties, vai jūsu kartei nav dumps jau izdarīts. Vispirms jums ir jāiegūst čipseta numurs. To var izdarīt ar lspci komandu:
lspci | grep VGA
Kur vajadzētu būt pieminētam NV čipsetam ar tālāk sekojošo divu ciparu kodu, piemēram, NV40. Vai arī, kā es biju spiests darīt, izmantojiet cat un grep iespējas attiecībā uz Xorg failiem:
cat /var/log/Xorg* | grep NV
Ja kaut kur pavid NV ar diviem cipariem kā izvēlētā karte, tad esat dabujis īsto, piem., kaut kas tāds:
(**) | |-->Device "NVIDIA Corporation NV44 [GeForce 6200 TurboCache]"

2. Pieņemsim, ka viss augstāk minētais ir izdarīts. Ķeramies pie reālās "gaļas". Vispirms lejupielādējam REnouveau ar cvs palīdzību, veicot šādu komandu konsolē:

cvs -z3 -d:pserver:anonymous@nouveau.cvs.sourceforge.net:/cvsroot/nouveau co -P renouveau


Tas izveidos direktoriju renouveau, kurā tad atrodas programmas kods. Tagad ieejam šajā direktorijā:

cd renouveau

Un veicam programmas kompilēšanu ar komandu make all. Ja visas atkarības augšminētās būs izpildītas, tad rezultātā kompilācijai jābeidzas bez kļūdu paziņojumiem un jūs iegūsiet palaižamo failu renouveau.

3.
Palaižam Xorg, izmantojot bināro acelerēto draiveri "nvidia", bet bez XGL vai AIGLX.

4.
Atveram savu mīļāko termināļa programmu un palaižam renouveau programmu šādi:

cd renouveau
./renouveau

Programmas darbības laikā vēlams neko nedarīt, un noņemt peles kursoru no loga, kuru atver šī programma. Pēc parastās programmas aptuveni 7 - 10 minūšu laikā programma būs savu darbu pabeigusi un rezultātus ierakstījusi lielā čupā teksta failu ar paplašinājumu txt.

5.
Tālāk seko neliela Bash muskuļu izkustināšana. Izstrādātāji prasa, lai txt faili būtu sazipoti ar gzip -9. Sanāca uzveidot nelielu skriptiņu, kuru palaidu programmas direktorijā:

#!/bin/bash

for i in $( ls *.txt );
do
gzip -9 $i
done

6. Tālāk izveidojam direktoriju ar čipseta un PCI ID numuru nosaukumā, pārvietojam visus failus programmas mājas direktorijā ar paplašinājumu *.gz uz jaunizveidoto direktoriju, un sazipojam to:

mkdir n44-0161 (Manā gadījumā tā bija.PCI ID numuru jūs varat noteikt no tekstu failu nosaukuma, trešā ar svītrām atdalītā četru ciparu daļa)
mv *.gz n44-0161
tar nv44-0161.tar.gz n44-0161/

7. Pēdējais solis ir nogādāt iegūto arhīvu ar dumpiem draivera izstrādātājiem. Ir vairākas iespējas - ja negribat ķēpāties, nosūtiet man uz pecisk pie gmail punkts com, un es to nodošu izstrādātājiem. Vai arī, varat izmantojot IRC, pieslēgties Freenode tīklam (irc.freenode.net), un pieslēgties #nouveau kanālam, kurā iemest linku, kur esat uzlicis savu dumpu (piem, http://www.serveris.lv/~lietotajs/n44-0161.tar.gz) un informējiet par to marcheu vai citu izstrādātāju.

Nav komentāru: