Disclaimer :
Dit document is niet juist en is niet meer onderhouden.
|
Gentoo Linux nVidia Guide
1.
Inleiding
nVidia geven hun eigen Linux drivers vrij die goede prestaties en volledige 3d
acceleratie leveren. De driver versies zijn opgesplitsts in twee delen :
nvidia-kernel en nvidia-glx.
nvidia-kernel is een kernel driver die laag-level communicatie doet met
je video hardware. Dit is een simpele kernel module genaamd, nvidia, die
in je kernel bronnen wordt geinstalleerd en geladen moet worden wanneer je die
drivers wilt gebruiken.
Ook zoals de kernel driver, moet je ook de X11 GLX laag (nvidia-glx)
installeren. Deze is gebruikt door X om afbeeldingen te renderen, die intern de
nvidia-kernel gebruikt om met de hardware te communiceren.
2.
Je Kaart Configureren
Kernel Configuratie
Zoals hierboven vermeld installeert en start de nVidia kernel driver op je
huidige kernel. Het bouwt een module, dus is het duidelijk dat je kernel enkele
opties moet bevatten voor het laden van kernel modules. Als je de
genkernel gebruikt om je kernel te configureren dan ben je al klaar.
Indien niet, controleer je kernel configuratie voor als de ondersteuning voor
de volgende zaken zijn ingeschakelt:
Codevoorbeeld 2.1: Inschakelen van ondersteuning voor het laden van Kernel Modules |
Loadable module support --->
[*] Enable loadable module support
|
Je moet ook ondersteuning voor Memory Type Range Register inschakelen in
je kernel:
Codevoorbeeld 2.2: Inschakelen van MTRR |
Processor and Features --->
[*] MTRR (Memory Type Range Register) support
|
Je zult ook moeten ondersteuning inschakelen voor agpgart in je kernel
(gecompileerd, of als module).
Codevoorbeeld 2.3: Inschakelen van agpgart |
Device Drivers --->
Character devices --->
<*> /dev/agpgart (AGP Support)
|
Arch-specifieke nota's
Belangrijk:
Voor x86 en AMD64 proccesoren, de in-kernel driver zal conflicten brengen met
de binary driver gelevert door nVidia. Als je je kernel compileert voor deze
CPUs, moet je ondersteuning voor in-kernel compleet uitschakelen zoals
hieronder omschreven:
|
Codevoorbeeld 2.4: Verwijderen van de in-kernel driver |
Device Drivers --->
Graphics Support --->
< > nVidia Framebuffer Support
< > nVidia Riva support
|
Een goed framebuffer alternatief is VESA:
Codevoorbeeld 2.5: Schakel VESA ondersteuning in |
Device Drivers --->
Graphics Support --->
<*> VESA VGA graphics support
|
Daarna, onder "VESA driver type", selecteer vesafb of vesafb-tng:
Codevoorbeeld 2.6: Selecteer framebuffer type |
( ) vesafb
(X) vesafb-tng
|
Voor meer informatie, kun je volgende documentatie lezen:
/usr/src/linux/Documentation/fb/vesafb.txt als je vesafb
gebruikt of zoek voor je framebuffer documentatie onder
/usr/src/linux/Documentation/fb/.
Verdergaan met Kernel Configuratie
nVdidia's modules en bibliotheken zijn gecombineerd in twee pakketen:
nvidia-glx en nvidia-kernel. De eerste zijn de X11 GLX
bibliotheken terwijl de laatste de kernel modules zijn.
De nvidia-kernel ebuilds vindt autmatisch je kernel versie gebaseerd op de
/usr/src/linux snelkoppeling. Controleer dat je deze snelkoppeling
verwijst naar de juiste bronnen en dat je kernel correct is geconfigureerd.
Bekijk het "Configureer de kernel" hoofdstuk van de Installatie Handboek voor details over hoe je,
je kernel kan configureren.
Als je gentoo-sources-2.6.11-r6 gebruikt, kan je /usr/src map zo
eruit zien:
Codevoorbeeld 2.7: Controleer je /usr/src/linux snelkoppeling |
# 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
|
In de teruggave hierboven, zul je merken dat de linux snelkoppeling
wijst naar de linux-2.6.11-gentoo-r6 kernel.
Als je snelkoppeling niet wijst naar de juiste bron, moet je de link updaten
zoals hieronder omschreven:
Codevoorbeeld 2.8: Creeer/update de /usr/src/linux snelkoppeling |
# cd /usr/src
# ln -snf linux-2.6.11-gentoo-r6 linux
|
optioneel: controle op ondersteuning van verouderde kaarten
Nota:
Jammer genoeg zijn zekere kaarten niet meer ondersteund door de nieuwere
versies van nvidia-glx en nvidia-kernel. nVidia levert een
lijst met alle
ondersteunde kaarten. Controleer de lijst vooraleer de drivers te
installeren.
|
De volgende lijst is een niet officiele lijst van niet ondersteunde
video kaarten:
Codevoorbeeld 2.9: niet-ondersteunde kaarten |
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
|
Als je een van deze kaarten bezit, zul je de nieuwere versie moeten wijgeren en
een oudere versie vand e nVidia drivers installeren:
Codevoorbeeld 2.10: Masken van de nieuwere drivers |
# 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
|
Installeren van de aangewezen drivers
Installeer nu nvidia-kernel en nvidia-glx.
Codevoorbeeld 2.11: Installeren van de nVidia modules |
# emerge nvidia-glx
|
Belangrijk:
Elke keer je een nieuwe kernel
compileert of je huidige hercompileert moet je de nVidia modules opnieuw
installeren. Dit kun je doen door emerge nvidia-kernel uit te voeren.
nvidia-glx is onaangetast bij het veranderen van de kernel. Je hoeft het
zelfs niet hercompileren na een recompilatie/update van X.
|
Eenmaam de installatie is afgerond, voer modprobe nvidia uit om de
kernel module in het gegeugen te laden.
Codevoorbeeld 2.12: Inladen van de kernel module |
# modprobe nvidia
|
Om te voorkomen dat je steeds de module manueel moet laden bij het opstarten
van de pc, moet je /etc/modules.autoload.d/kernel-2.6 (of
kernel-2.4, hangt af van welke kernel-versie je gebruikt)
aanpassen en nvidia aan dit bestand toevoegen. Vergeet niet om
modules-update achteraf uit te voeren.
Belangrijk:
Als je agpgart als een module hebt gecompileerd, moet je deze ook
toevoegen aan /etc/modules.autoload.d/kernel-2.6 (of
kernel-2.4, hangt af van welke kernel-versie je gebruikt).
|
Codevoorbeeld 2.13: Uitvoeren van modules-update |
# modules-update
|
De X Server Configureren
Eenmaal de bijhorende drivers geinstalleerd zijn, moet je je X Server
configureren (XFree86 of Xorg) om de nvidia driver te gebruiken in
plaats van de standaard nv driver.
Open /etc/X11/xorg.conf (of /etc/X11/XF86Config als
je nog steeds het oude configuratiebestands-locatie gebruikt) met je favoriete
editor (zoals nano of vim) en ga naar het device
hoofdstuk. In dat hoofdstuk moet je de lijn met Driver veranderen:
Codevoorbeeld 2.14: Veranderen van nv naar nvidia in de X Server configuratie |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
VideoRam 65536
EndSection
|
Ga dan naar het Module hoofdstuk en controleer dat de glx module
geladen wordt terwijl de dri module niet geladen wordt:
Codevoorbeeld 2.15: Updaten van het Module hoofdstuk |
Section "Module"
# Load "dri"
Load "glx"
EndSection
|
Vervolgens, in het Screen hoofdstuk, controleer dat DefaultDepth
ingesteld staat op 16 of 24; of dat je display subsecties met
depth instellingen alleen maar 16 of 24 zijn. Zonder dat zal de
nvidia-glx extensie niet starten.
Codevoorbeeld 2.16: Updaten van het Screen hoofdstuk |
Section "Screen"
DefaultDepth 16
Subsection "Display"
EndSection
|
Voer eselect uit zodat de X Server de nVidia GLX bibliotheken gebruikt:
Codevoorbeeld 2.17: Uitvoeren van eselect |
# eselect opengl set nvidia
|
Gebruikers toevoegen aan de groep video
Je moet ook je lokale gebruiker toevoegen aan de groep video zodat hij
toegang heeft om de nVidia bestanden te kunnen raadplegen:
Codevoorbeeld 2.18: Je gebruiker teovoegen aan de video groep |
# gpasswd -a youruser video
|
Dit is misschien niet helemaal nodig als je udev gebruikt, maar het kan
ook geen kwaad en het maakt je systeem toekomst-veilig :)
Testen van je kaart
Om je nVidia kaart te testen, start X op en voer het glxinfo | grep
direct uit. Het zou moeten zeggen dat direct renderen geactiveerd is.
Codevoorbeeld 2.19: Checking the direct rendering status |
$ glxinfo | grep direct
direct rendering: Yes
|
Om je FPS te bekijken, start glxgears.
Inschakelen van nvidia ondersteuning
Sommige programmas, zoals mplayer en xine-lib, gebruiken een
lokale USE variabele genaamd "nvidia" die XvMCNVIDIA ondersteuning aanschakelt. Dit
is handig als je naar hoge-resolutie films kijkt. Voeg "nvidia" toe aan je USE
variabelen in /etc/make.conf of voeg het toe als USE variabele in
media-video/mplayer en/of media-libs/xine-lib in
/etc/portage/package.use.
Voer dan emerge -uD --newuse world om je systeem te herbouwen met
de USE-variabelen ondersteuning voor de programma's die die kunnen gebruiken.
De nVidia Instellingen Hulpprogramma gebruiken
Sinds nVidia versie 1.0.6106 op de markt heeft gebracht, bied het je ook een
instellingen hulpprogramma aan. Dit programma laat je toe om grafische
veranderingen aan te brengen zonder daarvoor te moeten de X server te
herstarten. Dit programma is beschikbaar in de Portage als
media-video/nvidia-settings.
3.
Probleemoplossing
2D werkend krijgen voor machines met meer dan 4 Gb of meer gegeugen
Als je problemen hebt met de nVidia 2d acceleratie is het goed mogelijk dat je
niet mogelijk bent om een schrijf-combinatie afstand met MTRR in te stellen. Om
te controleren, bekijk je best de inhoud van /proc/mtrr:
Codevoorbeeld 3.1: Controleren of je schrijf-combinatie hebt aangeschakelt |
# cat /proc/mtrr
|
Iedere lijn zou moeten "write-back" of "write-combining" bevatten. Als je een
lijn met "uncachable" erin ziet, zul je moeten je bios instellingen veranderen.
Reboot en ga naar de BIOS, zoek de MTRR instelling (waarschijnlijk onder "CPU
instelingen"). Verander de optie van "continuous" naar "discrete" en start
terug op in Linux. Je zult nu merken dat er geen "uncachable" meer is, en 2D
acceleratie nu gewoon werkt zonder problemen.
Ik krijg waarschuwingen over niet geondersteunde 4K stack grootte
nvidia-kernel pakketten die ouder zijn dan 1.0.6106 ondersteunen alleen
maar kernels die een 8K stack grootte. Meer recentere kernels (2.6.6 en hoger)
hebben ook ondersteuning voor 4k stack groottes. Selecteer niet "4k stack size"
in je kernel configuratie als je zo'n nvidia-kernel pakket gebruikt. Je
kunt deze optie vinden in de sectie Kernel Hacking.
Als ik probeer om de kernel module te laden, krijg ik "no such device"
Dit komt meestal voora ls je geen kaart hebt die overeen komt met je video
kaart. Controleer dat je een nVidia-ondersteunende kaart hebt. (Je kunt dit
hercontroleren met lspci).
Als je zeker bent dat je een nVidia kaart hebt, controleer je BIOS en kijk of
de richtlijn Assign IRQ to VGA ingeschakeld is.
Ik krijg "no screens found" en vindt in de logs "Failed to initialize the NVIDIA
kernel module!"
Je mist hoogst waarschijnlijk de /dev/nvidia* apparaat bestanden.
Maak ze aan door NVmakedevices.sh te gebruiken:
Codevoorbeeld 3.2: Aanmaken van nvidia aparaat bestanden |
# /sbin/NVmakedevices.sh
|
Als je /dev/nvidia* aparaten steeds verdwijnen na het opnieuw
opstarten; dan heb je hoogst waarschijnlijk een verkeerde instelling in
/etc/conf.d/rc pas dit bestand als volgt aan:
Codevoorbeeld 3.3: Editing /etc/conf.d/rc |
RC_DEVICE_TARBALL="yes"
|
Dit zal de bestanden /dev/nvidia* reserveren zelfs na opnieuw op te
starten.
Nota:
Als alternatief kun je ook proberen de laatste nvidia-kernel en
nvidia-glx van de 8xxx series installeren. Op het moment van dit
schrijven, zijn bijde nog steeds onder "~arch" geplaatst. Deze drivers hangen
niet meer af van hotplug of udev om de nodige apparaatbestanden aan te maken.
Dit zal wel een recente kernel vereisen (2.6.14 en hoger).
|
4.
Configuratie voor experten
Documentatie
De nVidia driver pakket heeft ook zijn eigen documentatie. Die is geinstalleerd
in /usr/share/doc en kan bekeken worden met het volgende commando:
Codevoorbeeld 4.1: Bekijken van de NVIDIA documentatie |
# less /usr/share/doc/nvidia-glx-*/README.txt.gz
|
Kernel module parameters
De nvidia kernel module accepteerd een aantal parameters (opties) die je
toelaten het gedrag van de driver te veranderen. Meeste van die parameters
staan vermeld in de documentatie. Pas het /etc/modules.d/nvidia bestand
aan en voer modules-update uit na het aanpassen. Daarna moet je de
nvidia module opnieuw laden vooraleer je iets merkt.
Codevoorbeeld 4.2: Aanpassen van nvidia opties |
# nano -w /etc/modules.d/nvidia
# modules-update
# modprobe -r nvidia
# modprobe nvidia
|
Gevorderde X configuratie
De GLX laag heeft ook een overvloed aan opties die kunnen ingesteld worden.
Deze controleren de configuratie van de TV-uitgang, meerdere monitors,
frequentie detectie enz. Al deze opties staan uigebreid uitgelegt in de
documetatie.
Als je wenst om enige van deze opties te gebruiken, moet je ze gebruiken zoals
hieronder beschreven. Deze natuurlijk in het "device" sectie van je X
configuratie bestand (meestal /etc/X11/xorg.conf). Voor een
voorbeeld-configuratie, neem nu dat je het opstartlogo niet wilt zien:
Codevoorbeeld 4.3: Gevorderde nvidia configuratie in de X configuratie |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
Option "NoLogo" "true"
VideoRam 65536
EndSection
|
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|