Instalace nVidia ovladačů pro Gentoo
1.
Úvod
nVidia produkuje svoje vlastní linuxové ovladače, které poskytují dobrý výkon a
plnou podporu 3D akcelerace. Jsou rozděleny na 2 části: nvidia-kernel a
nvidia-glx.
nvidia-kernel je kernelový ovladač, který zajišťuje hrubou komunikaci
s grafickou kartou. V podstatě jde o modul jádra s názvem
nvidia, který se instaluje na kernel a musí být načtený (loaded) vždycky
když se mají používat nVidia ovladače.
Stejně jako kernelový ovladač je potřeba nainstalovat vrstvu X11 GLX
(nvidia-glx), tu X používá k vykreslování grafiky, která vnitřně
využívá nvidia-kernel jako rozhraní k hardwaru.
2.
Nastavení grafické karty
Nastavení jádra
Jak bylo zmíněno, nVidiovský ovladač funguje "na" běžícím kernelu. Je sestaven
jako modul, takže logicky kernel musí podporovat načítání modulů jádra. Pokud
jste k sestavení kernelu použili genkernel, je všechno hotovo. Pokud
ne, je potřeba zkontrolovat nastavení a případně zkompilovat nový kernel
s podporou načítání modulů:
Výpis kódu 2.1: Povolení načítání modulů jádra |
Loadable module support --->
[*] Enable loadable module support
|
Také je potřeba povolit Memory Type Range Register:
Výpis kódu 2.2: Povolení MTRR |
Processor and Features --->
[*] MTRR (Memory Type Range Register) support
|
V jádře budete muset povolit také agpgart, ať už napevno či jako
modul.
Výpis kódu 2.3: Povolení agpgart |
Device Drivers --->
Character devices --->
<*> /dev/agpgart (AGP Support)
|
Pokyny pro jednotlivé architektury
Důležité:
Na architekturách x86 a AMD64 dochází ke konfliktům mezi binárními ovladači
a těmi integrovanými v jádře. Kompilujete-li tedy jádro pro jednu
z těchto architektur, budete muset zcela odstranit podporu v jádře:
|
Výpis kódu 2.4: Odstranění ovladače z jádra |
Device Drivers --->
Graphics Support --->
< > nVidia Framebuffer Support
< > nVidia Riva support
|
Dobrou alternativou k framebufferu může být VESA:
Výpis kódu 2.5: Povolení podpory VESA |
Device Drivers --->
Graphics Support --->
<*> VESA VGA graphics support
|
Poté pod položkou "VESA driver type" vyberte buď vesafb a nebo
vesafb-tng:
Výpis kódu 2.6: Výběr typu framebufferu |
( ) vesafb
(X) vesafb-tng
|
Pro více informací viz /usr/src/linux/Documentation/fb/vesafb.txt
(používáte-li vesafb), případněobecně
/usr/src/linux/Documentation/fb/.
Pokračování konfigurací jádra
Moduly a knihovny od nVidia jsou zkombinovány ve dvou balíčcích:
nvidia-glx a nvidia-kernel. nvidia-glx je rozhraní pro X11
GLX a nvidia-kernel je samotný modul jádra.
Ebuild nvidia-kernel automaticky zjistí verzi vašeho kernelu ze symlinku
/usr/src/linux, proto je důležité se ujistit, že ukazuje na správný
a dobře nastavený kernel (detailní informace o konfiguraci kernelu viz část
Konfigurace jádra Gentoo Handbooku)
V případě, že používáte gentoo-sources-2.6.11-r6, by měl adresář
/usr/src vypadat asi takhle:
Výpis kódu 2.7: Kontrola symlinku /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
|
Z předchozího výstupu je jasné, že symlink linux ukazuje tam, kam má,
tedy na linux-2.6.11-gentoo-r6 kernel.
V jiném případě je potřeba tento odkaz vytvořit nebo změnit:
Výpis kódu 2.8: Vytvoření/změna symlinku /usr/src/linux |
# cd /usr/src
# ln -snf linux-2.6.11-gentoo-r6 linux
|
Volitelně: podpora starších karet
Poznámka:
Novější verze nvidia-glx a nvidia-kernel bohužel nepodporují
starší karty, viz seznam
podporovaných karet na webu firmy nVidia. Před instalací ovladačů se proto
prosím přesvědčte, že je vaše karta podporovaná.
|
Následuje seznam nepodporovaných starších grafických karet:
Výpis kódu 2.9: Nepodporované karty |
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
|
Používáte-li jednu z těchto karet, zamaskujte novější verze ovladačů a
nainstalujte verzi starší:
Výpis kódu 2.10: Zamaskování nových olvadačů |
# 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
|
Instalace ovladačů
Teď přišla chvíle instalace nvidia-kernel a nvidia-glx. Protože
nvidia-glx je závislý na nvidia-kernel, stačí instalace
nvidia-glx:
Výpis kódu 2.11: Instalace nVidia ovladačů |
# emerge nvidia-glx
|
Důležité:
Pokaždé, kdy zkompilujete nový
kernel nebo jen překonfigurujete používaný, musíte spustit emerge
nvidia-kernel, aby se přeinstalovaly moduly závislé na přesné konfiguraci
jádra. nvidia-glx není změnou kernelu jakkoliv dotčen a nemusí být
znovu přeložen ani při upgradu X.
|
Po dokončení instalace načteme modul do paměti:
Výpis kódu 2.12: Načítání modulu jádra |
# modprobe nvidia
|
Abychom to nemuseli ručně dělat po každém bootování systému, můžeme nastavit
automatické načtení modulu nvidia. Upravíme proto soubor
/etc/modules.autoload.d/kernel-2.6 (nebo kernel-2.4,
podle toho, kterou verzi kernelu používáme) - přidáme do něj řádek
nvidia a necháme proběhnout modules-update.
Důležité:
Jestliže jste zvolili podporu agpgart formou modulu, budete jej muset
přidat do souboru /etc/modules.autoload.d/kernel-2.6 (případně
kernel-2.4, podle verze vašeho jádra).
|
Výpis kódu 2.13: Spuštění modules-update |
# modules-update
|
Nastavení X serveru
Jakmile jsou nainstalovány správné ovladače, zbývá nastavit X server (XFree86
nebo Xorg), aby používal ovladač nvidia místo výchozího nv.
Otevřte /etc/X11/xorg.conf (nebo /etc/X11/XF86Config,
pokud používáte starší umístění konfiguračního souboru) vaším oblíbeným
editorem (jako např. nano nebo vim) a prohlédněte si sekci
Device. Tam je potřeba změnit Driver:
Výpis kódu 2.14: Změna ovladače z nv na nvidia v konfiguraci X serveru |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
VideoRam 65536
EndSection
|
V sekci Module je pak nutné zajistit, aby se načetl modul
glx a nenačítal modul dri:
Výpis kódu 2.15: Nastavení sekce Module |
Section "Module"
# Load "dri"
Load "glx"
EndSection
|
Dále v sekci Screen zajistíme, že hodnota DefaultDepth je
nastavená na 16 nebo 24, nebo že podsekce Display mají Depth
nastaven jen na hodnoty 16 or 24. Bez toho se rozšíření nvidia-glx není schopné
spustit.
Výpis kódu 2.16: Nastavení sekce Screen |
Section "Screen"
DefaultDepth 16
Subsection "Display"
EndSection
|
Pomocí eselect nastavíme, aby X server používal nVidia knihovny:
Výpis kódu 2.17: Použití eselectu |
# eselect opengl set nvidia
|
Přidávání uživatelů do skupiny video
Aby uživatel mohl používat nVidia ovladače, musí být členem skupiny
video.
Výpis kódu 2.18: Přidání uživatele uzivatel do skupiny video |
# gpasswd -a uzivatel video
|
Tento krok není úplně nezbytný, pokud nepoužíváte udev, ale v zásadě
to vůbec nebolí a pro váš systém je to kousek naděje že pojede správně i po
dalším upgradu...
Testování grafické karty
Pro kontrolu výsledku našeho snažení nahodíme X a spustíme příkaz glxinfo |
grep direct, měl by potvrdit funkci přímého renderování.
Výpis kódu 2.19: Kontrola funkce ovladačů |
$ glxinfo | grep direct
direct rendering: Yes
|
Ke zjištění skutečného renderovacího výkonu a FPS můžeme spustit
glxgears.
Aktivace podpory nVidia v aplikacích
Některé nástroje, jako mplayer nebo xine-lib, používají USE flag
"nvidia", který povoluje XvMCNVIDIA, což je užitečné při sledování filmů
s vysokým rozlišením. Pro povolení je potřeba přidat "nvidia" do nastavení
proměnné USE v souboru /etc/make.conf nebo do souboru
/etc/portage/package.use jako USE flag pro
media-video/mplayer, případně media-libs/xine-lib.
Poté je potřeba spustit příkaz emerge -uD --newuse world, aby se
znovu přeložily všechny balíčky ovlivněné změnou v USE.
NVidia Settings Tool
Od verze 1.0.6106 nabízí NVidia nástroj pro nastavení grafické karty, který
umožňuje měnit některé parametry bez restartu X serveru. Tento balíček je
v Portage dostupný jako media-video/nvidia-settings.
3.
Problémy
Problém s 2D na strojích s více než 4Gb paměti
Při problémech s 2D nVidia akcelerací je pravděpodobné, že jde
o problém s MTRR a nastavením write-combining. Pro ujištění
zkontrolujte /proc/mtrr:
Výpis kódu 3.1: Kontrola povolení kombinovaného zápisu |
# cat /proc/mtrr
|
Každý řádek by měl obsahovat "write-back" nebo "write-combining". Pokud najdete
řádek s "uncachable", bude potřeba změnit nastavení BIOSu.
Restartute PC a spusťte BIOS, pak najděte MTRR (pravděpodobně někde v "CPU
Settings") a změňte nastavení z "continuous" na "discrete". Potom
nabootujte zpátky do Linuxu. V /proc/mtrr by se už "uncachable" nemělo
vyskytovat a 2D akcelerace by měla fungovat bez problémů.
Varování o nepodporovaném "4K stack size"
Balíčky nvidia-kernelu starší než verze 1.0.6106 podporují jen jádra
používající zásobník (stack) o velikosti 8K. Novější kernely (od 2.6.6
výše) podporují i velikost 4K. Pokud používáte takový nvidia-kernel,
musíte zakázat podporu 4K zásobníků - v sekci Kernel Hacking
zakážeme volbu Use 4Kb for kernel stacks instead of 8Kb.
Při pokusu o načtení modulu dostanu chybu "no such device"
Většinou se tak děje, pokud nemáte odpovídající grafickou kartu, proto se
ujistěte, že opravdu používáte adaptér od firmy nVidia (například přes
lspci).
Pokud si jste jisti, že máte podporovanou kartu, zkuste v BIOSu
překontrolovat, zda je aktivní volba Assign IRQ to VGA.
Dostávám chybové hlášení "no screens found" a v logu je "Failed to
initialize the NVIDIA kernel module!"
Pravděpodobně nemáte soubory /dev/nvidia*. Vytvořte je pomocí
NVmakedevices.sh:
Výpis kódu 3.2: Vytvoření souborů zařízení |
# /sbin/NVmakedevices.sh
|
Pokud se zařízení /dev/nvidia* po rebootu stále nebjevují, velmi
pravděpodobně je udev samo nevytváří. Nápravu můžete zjednat spuštěním skriptu
NVmakedevices.sh a změnou nastavení v souboru
/etc/conf.d/rc:
Výpis kódu 3.3: Editace /etc/conf.d/rc |
RC_DEVICE_TARBALL="yes"
|
Tím zajistíte, že soubory /dev/nvidia* budou přístupné i po rebootu.
Poznámka:
Alternativní metodou je instalace posledních balíků nvidia-kernel a
nvidia-glx, konkrétně série 8xxx. V době psaní tohoto návodu byly
ještě v testovací větvi (~arch). Tyto ovladače již nespoléhají na
subsystémy hotplug a udev, nýbrž nechávají vytváření odpovídajících uzlů
zařízení na X serveru. Nebudete tedy muset spouštět NVmakedevices.sh,
zato se však neobejdete bez nového jádra (2.6.14 a vyšší).
|
4.
Pokročilá nastavení
Dokumentace
nVidia ke svým ovladačům poskytuje vyčerpávající dokumentaci, která je
instalovaná v /usr/share/doc a snadno si ji můžete prohlédnout:
Výpis kódu 4.1: Prohlížení nVidia doumentace |
# less /usr/share/doc/nvidia-glx-*/README.txt.gz
|
Parametry modulu jádra
Modul nvidia pracuje s velkým množstvím parametrů, které můžete
použít k vyladění chování ovladačů. Většina z nich je popsána
v dokumentaci. Změna nebo přidání parametrů se provádí v souboru
/etc/modules.d/nvidia. Důležité je po takové změne spustit
modules-update a znovu načíst modul nvidia, aby se změny
vůbec uskutečnily.
Výpis kódu 4.2: Nastavení voleb pro modul nvidia |
# nano -w /etc/modules.d/nvidia
# modules-update
# modprobe -r nvidia
# modprobe nvidia
|
Pokročilé nastavení X serveru
Vrstva GLX také poskytuje mnoho vyladitelných nastavení, například pro TV-out
(výstup na televizi), vícemonitorové systémy (dual head), detekci frekvence
monitoru atd. Opět se o všech lze dočíst v dokumentaci.
Tato nastavení se provádějí v sekci Device v konfiguračním
souboru X (většinou to je /etc/X11/xorg.conf). Pro ilustraci si ukážeme
například zakázání nVidiovského loga při startu X:
Výpis kódu 4.3: Pokročilé nastavení GLX |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
Option "NoLogo" "true"
VideoRam 65536
EndSection
|
Obsah tohoto dokumentu je licencován pod licencí Creative Commons -
Attribution / Share Alike.
|