Gentoo Logo

Konfiguracja kart nVidia w Gentoo

Spis treści:

1.  Wprowadzenie

Dostępne w drzewie Portage sterowniki nVidia, wydane przez nVidia są budowane niezależnie od sterowników dostarczanych z jądrem Linux. Zawierają zamknięty kod, który poprawnie działa z kartami. Są dwa rodzaje sterowników: moduły jądra lub te z xorg-x11. Obie części są dostępne w jednym pakiecie. Ponieważ nVidia pakowała swoje sterowniki, konieczne będzie dokonanie pewnego wyboru przed instalacją.

Pakiet nvidia-driver zawiera najnowsze sterowniki do wszystkich kart firmy nVidia. W zależności od tego jak bardzo stara jest nasza karta, możemy wybierać spośród kilku dostępnych wersji. Do wykrycia karty i zainstalowania odpowiednich sterowników pakiet ten używa pliku eclass.

2.  Zgodność sterowników

Która wersja?

Pakiet nvidia-drivers wspiera cały wachlarz dostępnych kart spod znaku nVidia. Zależnie od posiadanej karty, dostępne są różne wersje.

Nowsze karty, takie jak GeForce w serii 9, 8, 7 i 6, korzystają z najnowszych sterowników.

Karty GeForce FX5 powinny działać na sterownikach serii 173.x takich jak na przykład nvidia-drivers-173.14.15. Dlatego dla tych kart należy zamaskować >=x11-drivers/nvidia-drivers-174.00 w pliku /etc/portage/package.mask. Zapobiegnie to instalacji nowszych i niekompatybilnych z kartą wersji sterowników.

Starsze karty jak serie GeForce 3 lub GeForce 4 wymagają sterowników 96.x. Dla tych kart należy zamaskować >=x11-drivers/nvidia-drivers-97.00 w pliku /etc/portage/package.mask.

Stare karty bazowane na NV2x (takie jak TNT, TNT2, GeForce oraz GeForce 2) wymagają starszego sterownika 71.x (takiego jak nvidia-drivers-71.86.01). Dla tych kart należy zamaskować >=nvidia-drivers-87.00 w pliku /etc/portage/package.mask.

Kompatybilność sterownika z używaną kartą można sprawdzić w pliku README dla konkretnego wydania i architektury sterowników.

3.  Konfiguracja karty

Konfiguracja jądra

Tak jak wspominaliśmy wcześniej sterowniki nVidii zawierają moduły jądra, które musimy włączyć do jądra. By tego dokonać jądro musi obsługiwać ładowanie modułów. Jeśli użyto genkernel all, aby skonfigurować jądro wszystko powinno być odpowiednio ustawione. Jeśli nie, należy sprawdzić dwa razy konfigurację jądra i upewnić się, że mamy to włączone:

Listing 3.1: Włączanie obsługi ładowania modułów jądra

Loadable module support --->
  [*] Enable loadable module support

Musimy także włączyć obsługę Memory Type Range Register:

Listing 3.2: Włączanie MTRR

Processor and Features --->
  [*] MTRR (Memory Type Range Register) support

Opcjonalnie, jeśli posiadana karta jest AGP, można włączyć agpgart w jądrze (wkompilowane na stałe lub jako moduł). Możliwe jest też użycie implementacji agpgart, nazwanej NvAGP. Na niektórych systemach działa on lepiej niż ten wbudowany w kernel, na innych gorzej. Należy samemu się przekonać i dokonać wyboru. W razie wszelkich niepewności najbezpieczniej jest użyć wersji wbudowanej w kernel.

Listing 3.3: Włączanie agpgart

Device Drivers --->
Graphics Support --->
-*- /dev/agpgart (AGP Support) --->

Uwaga: Na systemach z architekturą amd64, IOMMU kontroluje ustawienia agpgart.

Uwagi do architektur

Ważne: Dla procesorów x86 oraz AMD64, sterownik dostarczany przez jądro konfliktuje z binarnym sterownikiem dostarczanym przez producenta. Podczas kompilacji dla tych architektur należy całkowicie usunąć wsparcie dla sterowników dostarczanych przez jądro, tak jak to pokazano poniżej:

Listing 3.4: Usunięcie sterownika z jądra

Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
< >   nVidia Framebuffer Support
< >   nVidia Riva support

Alternawym buforem ramki jest uvesafb, zaawansowany bufor ramki. Można wkompilować go na stałe w jądro lub dodać jako moduł. Oto przykład dla pierwszej z tych opcji:

Listing 3.5: Włączanie obsługi uvesafb

Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
<*>   Userspace VESA VGA graphics support

Możemy również wypróbować VESA:

Listing 3.6: Włączanie VESA

Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
[*]   VESA VGA graphics support

Więcej informacji można znaleźć w odpowiednim dla wybranego bufora ramki pliku w katalogu /usr/src/linux/Documentation/fb/.

Kontynuowanie konfiguracji jądra

Ebuild nvidia-drivers automatycznie rozpoznają wersję używanego kernela w oparciu o dowiązanie symboliczne /usr/src/linux/. Z tego powodu należy się upewnić, że dowiązanie to wskazuje na prawidłowe źródła jądra. Szczegóły dotyczące konfiguracji jądra znajdują się w dokumencie Podręcznik Gentoo.

Jeśli eselect nie jest zainstalowany, należy tego dokonać poprzez polecenie emerge. W przypadku gdy w użyciu jest gentoo-sources-2.6.18-r4, lista konfiguracji może wyglądać tak:

Listing 3.7: Sprawdzanie dowiązania do źródeł jądra

# eselect kernel list
Available kernel symlinks targets:
 [1]   linux-2.6.18-gentoo-r4 *
 [2]   linux-2.6.20-gentoo-r7
 [3]   linux-2.6.20-gentoo-r8
(Należy się upewnić czy prawidłowa wersja kernela jest oznaczona przez gwiazdkę)

W powyższym przykładzie widać, że gwiazdką (*) jest oznaczona wersja linux-2.6.18-gentoo-r4, co wskazuje na cel dowiązania symbolicznego /usr/src/linux.

Jeśli dowiązanie nie jest prawidłowe to należy je poprawić poprzez podanie numeru pożądanej wersji źródeł kernela.

Listing 3.8: Tworzenie lub uaktualnianie dowiązania symbolicznego /usr/src/linux

(Należy podać numer odpowiedniej wersji kernela)
# eselect kernel set 1

Instalacja sterowników

Teraz jest odpowiednia chwila na instalację sterowników.

Listing 3.9: Instalacja sterowników nVidii

# emerge nvidia-drivers

Uwaga: Nowsze sterowniki mogą być zainstalowane z flagą USE gtk. Zainstaluje to media-video/nvidia-settings - poręczne narzędzie do monitorowania i konfigurowania kilkunastu funkcji związanych z używaną kartą.

Ważne: Za każdym razem gdy kompilujemy jądro musimy ponownie uruchomić polecenie emerge nvidia-drivers w celu ponownego zainstalowania modułów. Lepszą opcją aby trzymać moduły instalowane przez zewnętrzne pakiety (takie jak nvidia-drivers), jest zainstalowanie sys-kernel/module-rebuild. Jeśli pakiet ten jest już zainstalowany, wystarczy uruchomić polecenie module-rebuild populate aby stworzyć listę pakietów, które wymagają przebudowy. Kiedy to nastąpi, można wykonać polecenie module-rebuild rebuild aby przebudować moduły dla nowego jądra.

Gdy instalacja się zakończy wpisujemy modprobe nvidia, aby załadować moduł jądra do pamięci. Jeśli jest to aktualizacja do nowszej wersji, należy najpierw wyładować moduł.

Listing 3.10: Ładowanie modułu jądra

# lsmod | grep nvidia && rmmod nvidia
# modprobe nvidia

Dobrym pomysłem i wygodnym rozwiązaniem jest aby działo się to automatycznie przy każdym uruchomieniu systemu. Aby to osiągnąć wystarczy dodać linijkę nvidia do pliku /etc/modules.autoload.d/kernel-2.6 (lub kernel-2.4). Później należy wykonać polecenie update-modules.

Ważne: Jeśli agpgart zostało skompilowane jako moduł, będzie trzeba dodać je do /etc/modules.autoload.d/kernel-2.6.

Listing 3.11: Uruchamianie update-modules

# update-modules

Konfiguracja Serwera X

Po instalacji odpowiednich sterowników należy skonfigurować serwer X, aby używał sterownika nvidia zamiast domyślnego nv.

Otwieramy /etc/X11/xorg.conf ulubionym edytorem (np. nano lub vim) i przechodzimy do sekcji Device. Należy tam odpowiednio zmienić linię Driver:

Listing 3.12: Zamiana nv na nvidia w konfiguracji serwera X

Section "Device"
  Identifier "nVidia Inc. GeForce2"
  Driver     "nvidia"
  VideoRam   65536
EndSection

W sekcji Module należy upewnić się, że moduł glx będzie ładowany i że moduł dri nie będzie wczytywany:

Listing 3.13: Uaktualnianie sekcji Module

Section "Module"
  (...)
  # Load  "dri"
  Load  "glx"
  (...)
EndSection

Następnie w sekcji Screen należy upewnić się, że dyrektywa DefaultDepth jest ustawiona na 16 lub 24 lub w podsekcjach Display mamy Depth ustawione tylko i wyłącznie na 16 lub 24. Bez tego rozszerzenia nVidia GLX nie zostaną uruchomione.

Listing 3.14: Uaktualnianie sekcji Screen

Section "Screen"
        (...)
        DefaultDepth 16
        Subsection "Display"
        (...)
EndSection

Na koniec uruchamiamy polecenie eselect, co sprawi, że serwer X będzie używał bibliotek GLX nVidii:

Listing 3.15: Uruchamianie opengl-update

# eselect opengl set nvidia

Dodawanie użytkownika do grupy video

Należy dodać odpowiednich użytkowników do grupy, która ma dostęp do plików urządzenia nVidia:

Listing 3.16: Dodawanie użytkownika do grupy video

# gpasswd -a username video

Może to nie być potrzebne, jeśli używa się udeva, ale nie zaszkodzi to również, a pewność pozostanie.

Sprawdzanie karty

Aby sprawdzić kartę nVidia, należy uruchomić serwer X i wpisać polecenie glxinfo. Powinna pokazać się informacja, że bezpośrednie renderowanie (ang. direct rendering) jest włączone:

Listing 3.17: Sprawdzanie statusu bezpośredniego renderowania

$ glxinfo | grep direct
direct rendering: Yes

Do sprawdzania ilości FPS korzystamy z programu glxgears.

Włączanie obsługi nvidia

Niektóre programy, takie jak np. mplayer czy xine-lib wykorzystują flagę USE o nazwie xvmc, która włącza XvMCNVIDIA, przydatną podczas oglądania filmów w bardzo dużej rozdzielczości. Aby ją uaktywnić należy dodać wpis xvmc do zmiennej USE w pliku /etc/make.conf lub dodać jako flagę wyłącznie dla media-video/mplayer lub media-libs/xine-lib w pliku /etc/portage/package.use.

Jest również kilka pakietów, które używają flagi nvidia, więc dobrym pomysłem jest dodanie jej do /etc/make.conf.

Na koniec należy wpisać polecenie emerge -uD --newuse world, które przebuduje wszystkie programy, tak by mogły korzystać z nowych ustawień flag USE.

Korzystanie z narzędzi do konfiguracji NVidia

nVidia dostarcza również narzędzie do konfiguracji. Aplikacja ta monitoruje i zmienia ustawienia graficzne bez konieczności restartowania serwera X. Jest dostępna w drzewie Portage jako media-video/nvidia-settings. Jak już wspomniano, będzie on zainstalowany automatycznie przy instalacji sterowników z flagą gtk dodaną do /etc/make.conf lub /etc/portage/package.use.

4.  Rozwiązywanie problemów

Co zrobić, aby działała grafika 2D na komputerach z 4GB (lub więcej) pamięci

Jeśli pojawią się problemy z przyspieszeniem grafiki 2D prawdopodobnie nie można zestawić zakresu kombinacji zapisu (ang. write-combining ranges) z MTRR. Aby się upewnić, należy sprawdzić zawartość /proc/mtrr:

Listing 4.1: Sprawdzanie czy mamy włączone kombinacje zapisu

# cat /proc/mtrr

W liniach powinno być napisane "write-back" lub "write-combining". Jeśli tak nie jest to trzeba przestawić ustawienie w BIOS-ie aby to naprawić.

Uruchamiamy ponownie komputer i wchodzimy do BIOS-u, znajdujemy tam ustawienia MTRR (prawdopodobnie w "Ustawieniach CPU") i zmieniamy ustawienie z "ciągłe" (ang. continuous) na "dyskretne" (ang. discrete), a następnie zapisujemy i uruchamiamy Linuksa. Zniknie wpis "uncachable", a przyspieszenie 2D zacznie działać bez zarzutu.

Kiedy ładuję moduł dostaję ostrzeżenie, że nie ma takiego urządzenia ("no such device").

Z reguły zdarza się to w sytuacji gdy nie mamy odpowiedniej karty graficznej. Należy się upewnić, że posiadamy kartę graficzną opartą o GPU NVidia (możemy tego dokonać przy użyciu polecenia lspci).

Jeśli jesteśmy pewni, że posiadamy kartę graficzną NVidia, należy sprawdzić ustawienia BIOS-u i upewnić się, że pozycja Assign IRQ to VGA jest poprawnie ustawiona.

5.  Konfiguracja dla ekspertów

Dokumentacja

Pakiet sterownika nvidia zawiera mnóstwo użytecznej dokumentacji, która jest instalowana do katalogu /usr/share/doc i może być odczytana przy pomocy następującego polecenia:

Listing 5.1: Przeglądanie dokumentacji NVIDIA

$ less /usr/share/doc/nvidia-drivers-*/README.txt.gz

Parametry modułów jądra

Moduł nvidia można uruchomić z jedną z kilku opcji, które pozwalają dostosować jego zachowanie do naszych potrzeb. Aby dodać lub usunąć te opcje należy wyedytować plik /etc/moprobe.d/nvidia.conf. Po wprowadzeniu zmian należy uruchomić polecenie update-modules i przeładować moduł.

Listing 5.2: Dostosowywanie ustawień

(Otwieramy /etc/modprobe.d/nvidia.conf ulubionym edytorem)
# nano -w /etc/modprobe.d/nvidia.conf
(Aktualizujemy informacje o sterownikach)
# update-modules
(Usuwamy moduł z pamięci...)
# modprobe -r nvidia
(...i ładujemy go na nowo)
# modprobe nvidia

Zaawansowana konfiguracja X-ów

Nakładka GLX również posiada wiele opcji, które można dostosować do własnych potrzeb. Za ich pomocą można np. zmienić zachowanie wyjścia TV, wykrywanie częstotliwości monitora itp. Po raz kolejny dostępne opcje są opisane w szczegółowej dokumentacji.

Aby używać którejś z tych opcji należy dopisać ją w odpowiednim miejscu w pliku konfiguracyjnym serwera X (zwykle jest to /etc/X11/xorg.conf). Na przykład, aby wyłączyć wyświetlanie logo nvidii przy każdym starcie serwera X należy wpisać:

Listing 5.3: Dodatkowe opcje konfiguracyjne

Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver     "nvidia"
Option     "NoLogo" "true"
VideoRam   65536
EndSection


Drukuj

Zaktualizowano 5 sierpnia 2009

Oryginalna wersja dokumentu nie jest już aktualizowana

Podsumowanie: Wielu użytkowników Gentoo posiada karty nVidia. nVidia wypuszcza specjalne sterowniki dla Linuksa, które poważnie zwiększają wydajność kart tej firmy. Ten tekst pokazuje jak zainstalować i skonfigurować te sterowniki.

Sven Vermeulen
Autor

Joshua Saddler
Autor

M Curtis Napier
Redaktor

Chris Gianelloni

Robert Sebastian Gerus
Tłumacz

Piotr Chmyłkowski
Tłumacz

Dawid Węgliński
Tłumacz

Donate to support our development efforts.

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