Ghid Gentoo pentru nVidia
1.
Introducere
nVidia au publicat driver-ele lor proprii de Linux ce oferă performanţe bune şi
accelerare 3D totală. Versiunile publicate ale driver-elor sunt împărţite în
două părţi: nvidia-kernel şi nvidia-glx.
nvidia-kernel este un driver de kernel ce manipulează o comunicare la
nivelul inferior cu componentele video hardware. Acesta constă pur şi simplu
într-un modul de kernel, denumit nvidia, ce se instalează utilizând
sursele dvs. de kernel şi este necesar a fi încărcat de oricâte ori doriţi să
utilizaţi driver-ele nvidia.
La fel ca şi driver-ul de kernel, trebuie să instalaţi nivelul GLX pentru X11
(nvidia-glx). Acesta este utilizat de X pentru a interpreta informaţiile
grafice, ce utilizează intern driver-ul de kernel nvidia-kernel pentru a
interfaţa cu componentele hardware.
2.
Configurarea Plăcii Dumneavoastră
Configurarea Kernel-ului
Aşa cum am menţionat anterior, driver-ul de kernel nVidia se instalează şi
rulează pe baza kernel-ului ce rulează curent. Se compilează ca modul, deci are
sens suportul kernel-ului dvs. pentru încărcarea modulelor de kernel. Dacă aţi
folosit genkernel ca să configuraţi kernel-ul sunteţi pregătiţi. Dacă
nu, mai faceţi încă o verificare în configurarea kernel-ului pentru ca acest
suport să fie activ:
Cod 2.1: Activarea Încărcării de Module |
Loadable module support --->
[*] Enable loadable module support
|
Va trebui, de asemenea, să activaţi în kernel opţiunea Memory Type Range
Register:
Cod 2.2: Activarea MTRR |
Processor and Features --->
[*] MTRR (Memory Type Range Register) support
|
De asemenea, va trebui să adăugaţi suportul agpgart în kernel-ul
dvs., fie compilat, fie ca modul:
Cod 2.3: Activarea agpgart |
Device Drivers --->
Character devices --->
<*> /dev/agpgart (AGP Support)
|
Note specifice de arhitectură
Important:
Pentru procesoarele x86 şi AMD64, dacă driver-ul integrat în kernel
intră în conflict cu driver-ul binar oferit de nVidia. Dacă vă veţi
compila kernel-ul pentru aceste procesoare, trebuie să îndepărtaţi
complet suportul pentru driver-ul din kernel, ca mai jos:
|
Cod 2.4: Îndepărtarea driver-ului din kernel |
Device Drivers --->
Graphics Support --->
< > nVidia Framebuffer Support
< > nVidia Riva support
|
O alternativă bună de framebuffer este VESA:
Cod 2.5: Activarea suportului VESA |
Device Drivers --->
Graphics Support --->
<*> VESA VGA graphics support
|
Apoi, sub "VESA driver type" selectaţi fie vesafb sau
vesafb-tng:
Cod 2.6: Selectaţi tipul de framebuffer |
( ) vesafb
(X) vesafb-tng
|
Pentru mai multe informaţii, puteţi consulta
/usr/src/linux/Documentation/fb/vesafb.txt dacă utilizaţi
vesafb sau căutaţi documentaţia de framebuffer în
/usr/src/linux/Documentation/fb/.
Continuarea Configurării Kernel-ului
Modulele nVidia şi librăriile sunt găsite în două pachete: nvidia-glx şi
nvidia-kernel. Primele sunt librăriile X11 GLX în timp ce ultimele sunt
modulele de kernel.
Ebuild-ul pachetului nvidia-kernel descoperă automat versiunea dvs. de kernel
pe baza link-ului simbolic /usr/src/linux. Vă rugăm să vă
asiguraţi că acest link simbolic indică spre sursele corecte de kernel şi că
acestea sunt configurate corect. Vă rugăm să consultaţi secţiunea despre
Configurarea Kernel-ului din Manualul de
Instalare pentru detalii despre configurarea kernel-ului dvs.
Dacă utilizaţi gentoo-sources-2.6.11-r6, conţinutul directorului
/usr/src ar trebui să fie ca în următorul exemplu:
Cod 2.7: Verificaţi link-ul simbolic /usr/src/linux |
# cd /usr/src
# ls -l
lrwxrwxrwx 1 root root 22 Apr 23 18:33 linux -> linux-2.6.11-gentoo-r6
drwxr-xr-x 4 root root 120 Apr 8 18:56 linux-2.4.26-gentoo-r4
drwxr-xr-x 18 root root 664 Dec 31 16:09 linux-2.6.10
drwxr-xr-x 18 root root 632 Mar 3 12:27 linux-2.6.11
drwxr-xr-x 19 root root 4096 Mar 16 22:00 linux-2.6.11-gentoo-r6
|
În textul afişat mai sus, veţi observa că link-ul simbolic linux indică
spre kernel-ul linux-2.6.11-gentoo-r6.
Dacă link-ul simbolic nu indică spre sursele corecte, trebuie să îl actualizaţi
în modul următor:
Cod 2.8: Creaţi/Actualizaţi link-ul simbolic /usr/src/linux |
# cd /usr/src
# ln -snf linux-2.6.11-gentoo-r6 linux
|
Opţional: Verificarea Suportului pentru Plăcile Vechi
Notă:
Din păcate, unele plăci video mai vechi nu sunt suportate de către
versiunile mai noi de nvidia-glx şi nvidia-kernel. nVidia
oferă o listă de
plăci suportate. Vă rugăm să verificaţi lista înainte de a
instala driver-ele.
|
Urmează o listă de plăci video vechi nesuportate:
Cod 2.9: Plăci nesuportate |
TNT2
TNT2 Pro
TNT2 Ultra
TNT2 Model 64 (M64)
TNT2 Model 64 (M64) Pro
Vanta
Vanta LT
GeForce 256
GeForce DDR
GeForce2 GTS
GeForce2 Pro
GeForce2 Ti
GeForce2 Ultra
GeForce2 MX Integrated graphics
Quadro
Quadro2 Pro
Quadro2 EX
|
Dacă aveţi una din aceste plăci va trebui să mascaţi versiunile mai noi
ale driver-elor nVidia şi să instalaţi o versiune mai veche:
Cod 2.10: Mascarea driver-elor mai noi |
# echo ">media-video/nvidia-kernel-1.0.6629-r5" >> /etc/portage/package.mask
# echo ">media-video/nvidia-glx-1.0.6629-r7" >> /etc/portage/package.mask
|
Instalarea Driver-elor Aferente
Acum este timpul să instalaţi nvidia-kernel şi nvidia-glx.
Deoarece nvidia-glx depinde de nvidia-kernel, instalarea
nvidia-glx este suficientă:
Cod 2.11: Instalarea modulelor nVidia |
# emerge nvidia-glx
|
Important:
De fiecare dată când compilaţi un nou
kernel sau îl recompilaţi pe cel curent, trebuie să rulaţi şi emerge
nvidia-kernel pentru a reinstala modulele nVidia. nvidia-glx nu este
afectat de modificările de kernel şi nu trebuie reinstalat nici măcar când
recompilaţi/actualizaţi X.
|
Odată ce instalarea s-a finalizat, executaţi comanda modprobe nvidia
pentru a încărca modulele de kernel în memorie.
Cod 2.12: Încărcarea modulelor de kernel |
# modprobe nvidia
|
Pentru a preveni încărcarea manuală a modulului la fiecare pornire a
sistemului, probabil că doriţi această operaţie să fie efectuată automat de
fiecare dată când sistemul dumneavoastră porneşte, aşa că editaţi
/etc/modules.autoload.d/kernel-2.6 (sau kernel-2.4)
şi adăugaţi nvidia în acesta. Nu uitaţi să rulaţi modules-update
ulterior.
Important:
Dacă aţi compilat agpgart ca modul, va trebui să-l adăugaţi în
fişierul /etc/modules.autoload.d/kernel-2.6 (sau
kernel-2.4, în funcţie de versiunea dvs. de kernel).
|
Cod 2.13: Rularea modules-update |
# modules-update
|
Configurarea Serverului X
Odată ce driver-ele aferente au fost instalate trebuie să configuraţi Serverul
X (XFree86 sau Xorg) pentru a folosi driver-ul nvidia în loc de
driver-ul nv implicit.
Deschideţi /etc/X11/xorg.conf (sau
/etc/X11/XF86Config dacă încă mai utilizaţi locaţia mai veche a
fişierului de configurare) cu editorul dumneavoastră favorit (spre exemplu
nano sau vim) şi căutaţi linia cu secţiunea Device. În
aceea secţiune, schimbaţi linia Driver:
Cod 2.14: Schimbarea de la nv la nvidia în configuraţia X |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
VideoRam 65536
EndSection
|
Apoi căutaţi secţiunea Module şi asiguraţi-vă că modulul
glx este definit pentru a fi încărcat şi că modulul dri,
nu:
Cod 2.15: Actualizarea secţiunii Module |
Section "Module"
# Load "dri"
Load "glx"
EndSection
|
Apoi, în secţiunea Screen, asiguraţi-vă, fie că directiva
DefaultDepth este setată la 16 sau 24, fie că aveţi subsecţiuni
Display cu setări Depth la 16 sau 24. Fără aceasta, extensiile
nvidia-glx nu vor porni.
Cod 2.16: Actualizarea secţiunii Screen |
Section "Screen"
DefaultDepth 16
Subsection "Display"
EndSection
|
Rulaţi eselect pentru ca aplicaţia server X să folosească
librăriile nVidia GLX:
Cod 2.17: Rularea eselect |
# eselect opengl set nvidia
|
Adăugarea de Utilizatori în Grupul video
Va trebui să adăugaţi utilizatorul dvs. în grupul video pentru a avea
acces la fişierele dispozitiv nvidia:
Cod 2.18: Adăugarea utilizatorului dvs. în grupul video |
# gpasswd -a youruser video
|
Aceasta nu este în totalitate necesar dacă nu utilizaţi udev, dar nu vă
poate afecta în nici un mod, şi vă va pregăti sistemul pentru viitor :)
Testarea plăcii dumneavoastră
Pentru a testa placa dumneavoastră nVidia, lansaţi X şi rulaţi comanda
glxinfo | grep direct. Ar trebui să afişeze că direct rendering este
activat:
Cod 2.19: verificarea stării direct rendering |
$ glxinfo | grep direct
direct rendering: Yes
|
Pentru a monitoriza FPS (numărul de cadre pe secundă), rulaţi glxgears.
Activarea Suportului nvidia
Unele utilitare, cum ar fi mplayer şi xine-lib, utilizează un
indicator USE local, denumit "nvidia" care activează suportul XvMCNVIDIA, util
în cazul filmelor cu rezoluţie mare. Adăugaţi "nvidia" în definiţia variabilei
dvs. USE din /etc/make.conf sau adăugaţi-l ca indicator USE pentru
media-video/mplayer şi/sau media-libs/xine-lib în
/etc/portage/package.use.
Apoi, rulaţi emerge -uD --newuse world pentru a recompila toate
aplicaţiile ce beneficiază de modificarea acestui indicator USE.
Folosirea Utilitarului NVidia Settings
Începând din momentul în care NVidia a publicat versiunea 1.0.6106, v-a oferit,
de asemenea, o unealtă de setare. Acest utilitar vă permite să modificaţi
setările grafice fără a reporni server-ul X şi este disponibilă în Portage ca
media-video/nvidia-settings.
3.
Probleme
Activarea funcţionalităţilor 2D pe maşinile cu mai mult de 4GO Memorie
Dacă aveţi probleme cu accelerarea 2D de la nVidia, cel mai probabil nu puteţi
seta o plajă valorică pentru proprietatea write-combining cu MTRR. Pentru a
verifica, analizaţi conţinutul fişierului /proc/mtrr:
Cod 3.1: Verificarea dacă este activată proprietatea write-combining |
# cat /proc/mtrr
|
Fiecare linie ar trebui să conţină "write-back" sau "write-combining". Dacă
este o linie ce conţine "uncachable" în acest fişier, va trebui să schimbaţi o
setare din BIOS pentru a repara eroarea.
Reporniţi şi intraţi în mediul BIOS, căutaţi setările MTRR (probabil sub "CPU
Settings"). Schimbaţi setarea din "continuous" în "discrete" şi porniţi înapoi
în Linux. ACum, veţi observa că nu mai există nici o intrare cu valoarea
"uncachable" şi accelerarea 2D funcţionează fără probleme.
Primesc mesaje de eroare despre mărimi de stivă de 4K nesuportate (unsupported 4K stack sizes)
Pachetele nvidia-kernel mai vechi de versiunea 1.0.6106 suportă doar
versiuni de kernel ce utilizează mărimea stivei de 8K. Versiunile mai recente
de kernel (2.6.6 sau mai noi) conţin suport pentru mărimea stivei de 4K, de
asemenea. Nu selectaţi mărimea stivei de 4K în configuraţia dvs. de kernel,
dacă utilizaţi o asemenea versiune a pachetului nvidia-kernel. Puteţi
găsi această opţiune în secţiunea Kernel Hacking.
Când încerc să încarc un modul de kernel primesc mesajul "no such
device"
Aceasta se întâmplă, de obicei, când nu aveţi o placă video care să
se potrivească. Asiguraţi-vă că aveţi o placă grafică de la nVidia
(puteţi să verificaţi încă o dată acest lucru utilizând
lspci).
Dacă sunteţi convins că aveţi o placă nVidia, verificaţi in sistemul
BIOS dacă aveţi activată directiva Assign IRQ to VGA.
Primesc erori "no screens found" iar în loguri este scris mesajul "Failed to
initialize the NVIDIA kernel module!"
Cel mai probabil este fapul că vă lipsesc fişierele dispozitiv
/dev/nvidia*. Creaţi-le utilizând NVmakedevices.sh:
Cod 3.2: Crearea nodurilor dispozitiv nvidia |
# /sbin/NVmakedevices.sh
|
Dacă dispozitivele dvs. /dev/nvidia încă lipsesc de fiecare
dată când reporniţi, atunci cel mai probabil este din cauza faptului că
udev nu creează în mod automat nodurile dispozitiv. Puteţi repara această
problema prin rularea din nou a NVmakedevices.sh, şi apoi editarea
fişierului /etc/conf.d/rc ca:
Cod 3.3: Editarea /etc/conf.d/rc |
RC_DEVICE_TARBALL="yes"
|
Aceasta vă va păstra nodurile dvs. /dev/nvidia chiar şi
dacă reporniţi.
Notă:
Alternativ, aţi putea să încercaţi să instalaţi ultima versiune a
nvidia-kernel şi nvidia-glx din seria 8xxx. În momentul
redactării, ambele sunt încă marcate ~arch. Aceste driver-e nu se mai
bazează pe hotplug sau udev pentru a crea nodurile dispozitiv, deci nu va mai
trebui să rulaţi NVmakedevices.sh. În loc, însuşi driver-ul X
vă va crea fişierele /dev/nvidia când porniţi X. Totuşi,
aceasta va necesita utilizarea unui kernel recent (2.6.14 sau mai nou).
|
4.
Configurare Avansată
Documentaţie
Pachetul driver-ului nVidia conţine, de asemenea, o documentaţie comprehensivă.
Aceasta este instalată în /usr/share/doc şi poate fi vizualizată cu
următoarea comandă:
Cod 4.1: Vizualizarea documentaţiei NVIDIA |
# less /usr/share/doc/nvidia-glx-*/README.txt.gz
|
Parametrii modulelor de kernel
Modulul de kernel nvidia acceptă un număr de parametri (opţiuni) ce pot
fi utilizaţi pentru a personaliza comportamentul driver-ului. Cei mai mulţi
dintre aceştia sunt menţionaţi în documentaţie. Pentru a adăuga sau modifica
valorile acestor parametri, editaţi fişierul /etc/modules.d/nvidia.
Amintiţi-vă să rulaţi modules-update după ce modificaţi acest fişier şi
ţineţi minte că trebuie să reîncărcaţi modulul nvidia înainte ca setările
să aibă efect.
Cod 4.2: Ajustarea opţiunilor nvidia |
# nano -w /etc/modules.d/nvidia
# modules-update
# modprobe -r nvidia
# modprobe nvidia
|
Configurare avansată pentru X
Nivelul GLX are, de asemenea, o mulţime de opţiuni ce pot fi configurate.
Acestea controlează configuraţia ieşirii TV, afişări pe două monitoare,
detecţia frecvenţei monitorului, etc. Din nou, toate aceste opţiuni disponibile
sunt detaliate în documentaţie.
Dacă doriţi să utilizaţi oricare din aceste opţiuni, va trebui să le includeţi
în secţiunea Device relevantă din fişierul de configurare al X (de obicei
/etc/X11/xorg.conf). Spre exemplu, presupunând că se doreşte
dezactivarea imaginii logo:
Cod 4.3: Configurare avansată pentru nvidia în configuraţia X |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
Option "NoLogo" "true"
VideoRam 65536
EndSection
|
Conţinutul acestui document este publicat sub licenţa Creative Commons -
Attribution / Share Alike.
|