Gentoo Logo

Upozornění : Tento dokument již neplatí a není udržován.


Instalace nVidia ovladačů pro Gentoo

Obsah:

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
(Zkontrolujte, jestli linux ukazuje na správný adresář)
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

(Otevřte /etc/modules.d/nvidia ve svém oblíbeném editoru)
# nano -w /etc/modules.d/nvidia
(Aktualizujte informace o modulech)
# modules-update
(Odstraňte modul nvidia...)
# modprobe -r nvidia
(...a znovu jej načtěte)
# 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


Tisk

Aktualizace: 25. červenec 2006

Původní verze tohoto dokumentu již není udržována

Shrnutí: Mnoho uživatelů Gentoo ve svém PC používá grafickou kartu od nVidia. nVidia proto poskytuje specifické linuxové ovladače, se kterými většinou karty pracují rychleji. Tento průvodce popisuje, jak je nainstalovat a nastavit.

Sven Vermeulen
Autor

M Curtis Napier
Editor

Joshua Saddler
Editor

Mirek Kratochvíl
Překladatel

Jan Kundrát
Překladatel

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.