Po co w ogóle instalować zamknięte sterowniki dla kart graficznych Nvidii? Przede wszystkim z powodu wydajności, sterowniki otwarte dedykowane Nvidii — nouveau — niestety mocno odbiegają możliwościami od wersji zamkniętej. Chcesz zainstalować zamknięte sterowniki? Dobrze, zapraszam w takim razie do zapoznania się z niniejszym tekstem. Nie chcesz instalować zamkniętych sterowników, odpowiadają Ci te których używasz aktualnie? Też dobrze, to Twój wybór.


Spis treści:


Debian 7 „Wheezy” — Sterowniki z repozytorium

Obecnie najszybszą i najłatwiejszą metodą instalacji sterowników jest użycie pakietów z repozytorium. Są to te same sterowniki, które można pobrać z oficjalnej strony Nvidii, inny jest tylko sposób instalacji. Pakiety nie są jednak dostępne w głównym repozytorium Debiana (sekcja main), a w sekcji zawierającej pakiety niewolne, czyli non-free. Dodatkowo pakiet nvidia-settings (panel konfiguracyjny ułatwiający życie ze sterownikami) oraz kilka potrzebnych pakietów znajduje się w sekcji contrib repozytorium. Zatem przykładowy wpis repozytorium umożliwiającego zainstalowanie pakietów ze sterownikami może wyglądać np. tak:

deb http://ftp.pl.debian.org/debian/ wheezy main contrib non-free

(więcej na temat repozytoriów przeczytać można w artykule im poświęconym [16] [9])

Najpierw trzeba dowiedzieć się jaka wersja sterowników obsługuje daną kartę. Większość kart graficznych (od serii 6xxx w górę) obsługiwana jest przez główny sterownik. W przypadku starszych kart na tej stronie [17] [13] [10] można sprawdzić która wersja będzie odpowiednia.

Instalacja sterowników

Do zbudowania modułu dla danego jądra niezbędne są narzędzia do tego celu służące oraz nagłówki jądra, w oparciu o które moduł ma zostać zbudowany. Należy zatem doinstalować najpierw potrzebne pakiety:

aptitude -R install build-essential linux-headers-`uname -r`

(aby zawsze mieć zainstalowane najnowsze dostępne w repozytorium jądro i nagłówki, można użyć metapakietów jądra i nagłówków [18] [14] [11])

Instalacja sterownika w głównej wersji:

aptitude -R install nvidia-kernel-dkms nvidia-glx nvidia-settings

Instalacja sterownika w wersji 173.14.xx:

aptitude -R install nvidia-kernel-legacy-173xx-dkms nvidia-glx-legacy-173xx nvidia-settings-legacy-173xx

Instalacja sterownika w wersji 96.43.xx:

aptitude -R install nvidia-kernel-legacy-96xx-dkms nvidia-glx-legacy-96xx nvidia-settings-legacy-173xx

Oczywiście trzeba zainstalować tylko wersję właściwą dla danej karty.

Niezależnie od wersji instalowanego sterownika konieczne jest jeszcze utworzenie pliku konfiguracyjnego Xorga [21] [19] [15] [12].

Po utworzeniu pliku konfiguracyjnego restart systemu.

System 64-bitowy (amd64)

W przypadku systemu 64-bitowego w wyniku powyższych poleceń zainstalowane zostaną wyłącznie sterowniki 64-bitowe. Systemowi to w zupełności wystarcza, istnieje jednak możliwość uruchamiania w systemie 64-bitowym aplikacji 32-bitowych. Aby takie aplikacje (chociażby gry uruchamiane przez 32-bitowe Wine) korzystały ze sterowników Nvidii, trzeba doinstalować jeszcze biblioteki 32-bitowe.

Dla głównej wersji sterownika:

dpkg --add-architecture i386
aptitude update
aptitude -R install libgl1-nvidia-glx:i386

Dla wersji 173.14.xx:

dpkg --add-architecture i386
aptitude update
aptitude -R install libgl1-nvidia-legacy-173xx-glx:i386

Dla wersji 96.43.xx:

dpkg --add-architecture i386
aptitude update
aptitude -R install libgl1-nvidia-legacy-96xx-glx:i386

Debian 7 „Wheezy” — Nowsze sterowniki z repozytorium

Jeżeli potrzebne są nowsze sterowniki, można użyć wersji z backportów dla wersji stabilnej. Tutaj również potrzeba sekcji contrib oraz non-free, przykładowy wpis repozytorium:

deb http://ftp.pl.debian.org/debian/ wheezy-backports main contrib non-free

Główny sterownik z backportów obsługuje karty od serii 8xxx w górę. W przypadku starszych kart na tej stronie [17] [13] [10] można sprawdzić która wersja będzie odpowiednia.

Instalacja sterowników

Do zbudowania modułu dla danego jądra niezbędne są narzędzia do tego celu służące oraz nagłówki jądra, w oparciu o które moduł ma zostać zbudowany. Należy zatem doinstalować najpierw potrzebne pakiety:

aptitude -R install build-essential linux-headers-`uname -r`

(aby zawsze mieć zainstalowane najnowsze dostępne w repozytorium jądro i nagłówki, można użyć metapakietów jądra i nagłówków [18] [14] [11])

Instalacja sterownika w głównej wersji:

aptitude -R -t wheezy-backports install nvidia-kernel-dkms nvidia-driver nvidia-settings

Instalacja sterownika w wersji 304.xx:

aptitude -R -t wheezy-backports install nvidia-legacy-304xx-kernel-dkms nvidia-legacy-304xx-driver nvidia-settings-legacy-304xx

Instalacja sterownika w wersji 173.14.xx (jeśli się pojawią, w momencie aktualizacji tego tekstu jeszcze nie było):

aptitude -R -t wheezy-backports install nvidia-legacy-173xx-kernel-dkms nvidia-legacy-173xx-driver nvidia-settings-legacy-173xx

Instalacja sterownika w wersji 96.43.xx:

aptitude -R -t wheezy-backports install nvidia-legacy-96xx-kernel-dkms nvidia-legacy-96xx-driver nvidia-settings-legacy-96xx

Oczywiście trzeba zainstalować tylko wersję właściwą dla danej karty.

Niezależnie od wersji instalowanego sterownika konieczne jest jeszcze utworzenie pliku konfiguracyjnego Xorga [21] [19] [15] [12].

Po utworzeniu pliku konfiguracyjnego restart systemu.

System 64-bitowy (amd64)

W przypadku systemu 64-bitowego w wyniku powyższych poleceń zainstalowane zostaną wyłącznie sterowniki 64-bitowe. Systemowi to w zupełności wystarcza, istnieje jednak możliwość uruchamiania w systemie 64-bitowym aplikacji 32-bitowych. Aby takie aplikacje (chociażby gry uruchamiane przez 32-bitowe Wine) korzystały ze sterowników Nvidii, trzeba doinstalować jeszcze biblioteki 32-bitowe.

Dla głównej wersji sterownika:

dpkg --add-architecture i386
aptitude update
aptitude -R -t wheezy-backports install libgl1-nvidia-glx:i386

Dla wersji 304.xx:

dpkg --add-architecture i386
aptitude update
aptitude -R -t wheezy-backports install libgl1-nvidia-legacy-304xx-glx:i386

Dla wersji 173.14.xx (jeśli się pojawią, w momencie aktualizacji tego tekstu jeszcze nie było):

dpkg --add-architecture i386
aptitude update
aptitude -R -t wheezy-backports install libgl1-nvidia-legacy-173xx-glx:i386

Dla wersji 96.43.xx:

dpkg --add-architecture i386
aptitude update
aptitude -R -t wheezy-backports install libgl1-nvidia-legacy-96xx-glx:i386

Debian 8 „Jessie” — Sterowniki z repozytorium

Obecnie najszybszą i najłatwiejszą metodą instalacji sterowników jest użycie pakietów z repozytorium. Są to te same sterowniki, które można pobrać z oficjalnej strony Nvidii, inny jest tylko sposób instalacji. Pakiety nie są jednak dostępne w głównym repozytorium Debiana (sekcja main), a w sekcji zawierającej pakiety niewolne, czyli non-free. Dodatkowo pakiet nvidia-settings (panel konfiguracyjny ułatwiający życie ze sterownikami) oraz kilka potrzebnych pakietów znajduje się w sekcji contrib repozytorium. Zatem przykładowy wpis repozytorium umożliwiającego zainstalowanie pakietów ze sterownikami może wyglądać np. tak:

deb http://ftp.pl.debian.org/debian/ jessie main contrib non-free

(więcej na temat repozytoriów przeczytać można w artykule im poświęconym [16] [9])

Najpierw trzeba dowiedzieć się jaka wersja sterowników obsługuje daną kartę. Większość kart graficznych (od serii 8xxx w górę) obsługiwana jest przez główny sterownik. W przypadku starszych kart na tej stronie [17] [13] [10] można sprawdzić która wersja będzie odpowiednia.

Instalacja sterowników

Do zbudowania modułu dla danego jądra niezbędne są narzędzia do tego celu służące oraz nagłówki jądra, w oparciu o które moduł ma zostać zbudowany. Należy zatem doinstalować najpierw potrzebne pakiety:

aptitude -R install build-essential linux-headers-`uname -r`

(aby zawsze mieć zainstalowane najnowsze dostępne w repozytorium jądro i nagłówki, można użyć metapakietów jądra i nagłówków [18] [14] [11])

Instalacja sterownika w głównej wersji:

aptitude -R install nvidia-kernel-dkms nvidia-driver nvidia-settings

Instalacja sterownika w wersji 304.xx:

aptitude -R install nvidia-legacy-304xx-kernel-dkms nvidia-legacy-304xx-driver nvidia-settings-legacy-304xx

Instalacja sterownika w wersji 173.14.xx:

aptitude -R install nvidia-legacy-173xx-kernel-dkms nvidia-legacy-173xx-driver nvidia-settings-legacy-173xx

Oczywiście trzeba zainstalować tylko wersję właściwą dla danej karty.

Niezależnie od wersji instalowanego sterownika konieczne jest jeszcze utworzenie pliku konfiguracyjnego Xorga [21] [19] [15] [12].

Po utworzeniu pliku konfiguracyjnego restart systemu.

System 64-bitowy (amd64)

W przypadku systemu 64-bitowego w wyniku powyższych poleceń zainstalowane zostaną wyłącznie sterowniki 64-bitowe. Systemowi to w zupełności wystarcza, istnieje jednak możliwość uruchamiania w systemie 64-bitowym aplikacji 32-bitowych. Aby takie aplikacje (chociażby gry uruchamiane przez 32-bitowe Wine) korzystały ze sterowników Nvidii, trzeba doinstalować jeszcze biblioteki 32-bitowe.

Dla głównej wersji sterownika:

dpkg --add-architecture i386
aptitude update
aptitude -R install libgl1-nvidia-glx:i386

Dla wersji 304.xx:

dpkg --add-architecture i386
aptitude update
aptitude -R install libgl1-nvidia-legacy-304xx-glx:i386

Dla wersji 173.14.xx:

dpkg --add-architecture i386
aptitude update
aptitude -R install libgl1-nvidia-legacy-173xx-glx:i386

Instalacja skryptem Nvidii

Po co instalować skryptem Nvidii, skoro można z repozytorium? Tak naprawdę to kwestia indywidualnych preferencji, przyzwyczajeń itp. Efekt końcowy w gruncie rzeczy jest taki sam. Sterowniki pobrać można korzystając z wyszukiwarki na stronie Nvidii [20].

Blokowanie nouveau

Najczęściej stosowany sposób blokowania nouveau polega na dodaniu go do „czarnej listy”. Służy do tego plik /etc/modprobe.d/blacklist.conf lub dowolny plik w katalogu /etc/modprobe.d, np. /etc/modprobe.d/nouveau.conf.

Wpis blokujący nouveau do umieszczenia w wybranej lokalizacji:

blacklist nouveau
options nouveau modeset=0

Czasem niezbędne jest jeszcze zaktualizowanie initrd, np. poleceniem:

update-initramfs -u -k `uname -r`

Po restarcie sterownik nouveau nie powinien być już w użyciu.

Instalacja sterowników

Do zbudowania modułu dla danego jądra niezbędne są narzędzia do tego celu służące oraz nagłówki jądra, w oparciu o które moduł ma zostać zbudowany. Należy zatem doinstalować najpierw potrzebne pakiety:

aptitude install build-essential linux-headers-`uname -r`

Instalację sterowników powinno się przeprowadzać w trybie tekstowym przy wyłączonym środowisku graficznym. W tym celu trzeba najpierw zmienić używaną konsolę przełączając się w tryb tekstowy — kombinacja klawiszy ctrl + alt + f1, a następnie wyłączyć środowisko graficzne. Polecenie będzie się różnić w zależności od używanego środowiska graficznego i menedżera logowania.

Domyślnie dla GNOME jest to gdm3, który wyłącza się poleceniem:

/etc/init.d/gdm3 stop

Dla KDE jest to kdm:

/etc/init.d/kdm stop

Inne popularne menedżery logowania:

/etc/init.d/lightdm stop
/etc/init.d/slim stop
/etc/init.d/wdm stop
/etc/init.d/xdm stop

Uruchomienie pobranego wcześniej instalatora, przykładowo:

sh /home/arnvaker/NVIDIA-Linux-x86_64-302.17-no-compat32.run

(należy podać ścieżkę do katalogu w którym znajduje się instalator oraz jego nazwę, dla ułatwienia można użyć klawisza tab służącego do autouzupełniania)

Instalator zada teraz kilka pytań, na które trzeba odpowiedzieć.

W tym celu można użyć polecenia:

export CC=/usr/bin/gcc-4.x

Za x należy wstawić drugą cyfrę wersji kompilatora, którą skompilowane zostało jądro. Jądro 3.2.0-4 skompilowane zostało wersją 4.6, zatem dla niego będzie to export CC=/usr/bin/gcc-4.6.

To już wszystko — po ponownym uruchomieniu system powinien korzystać ze sterowników Nvidii.

Aktualizacja jądra i serwera X

W przypadku instalacji sterowników tym sposobem aktualizacje jądra oraz serwera X sprawiają więcej problemów niż przy instalacji sterowników z repozytorium. Po instalacji nowego jądra trzeba skompilować dla niego nowy moduł Nvidii, można to zrobić w środowisku graficznym uruchomionym jeszcze na starym jądrze, przykładowe polecenie wygląda tak:

sh /home/arnvaker/NVIDIA-Linux-x86_64-302.17-no-compat32.run -K -k 3.4-trunk-amd64 -a

Oczywiście to tylko przykład, trzeba podać właściwą ścieżkę do instalatora sterowników Nvidii, jego wersję oraz dokładną wersję jądra dla którego moduł ma zostać zbudowany (wymagane są do tego jego nagłówki).

Jeżeli miała miejsce aktualizacja serwera X lub pakietów blisko z nim związanych i po tej aktualizacji środowisko graficzne nie uruchamia się, sterowniki trzeba przeinstalować. Obejście tej niedogodności jest możliwe, ale trochę bardziej skomplikowane, dla chętnych wskazówki w poście na forum [22].


Plik konfiguracyjny Xorga

Aby system po ponownym uruchomieniu korzystał ze sterowników Nvidii, konieczne jest utworzenie pliku konfiguracyjnego. Obecnie prawie wszystko jest automatycznie wykrywane, dlatego wystarczy prosty plik konfiguracyjny /etc/X11/xorg.conf.d/20-nvidia.conf o zawartości:

Section "Device"
    Identifier "My GPU"
    Driver "nvidia"
EndSection

Można go utworzyć za pomocą dwóch poleceń:

mkdir /etc/X11/xorg.conf.d
echo -e 'Section "Device"\n\tIdentifier "My GPU"\n\tDriver "nvidia"\nEndSection' > /etc/X11/xorg.conf.d/20-nvidia.conf

Czy plik został utworzony prawidłowo można sprawdzić poleceniem:

cat /etc/X11/xorg.conf.d/20-nvidia.conf

Sprawdzenie czy sterownik działa

Po ponownym uruchomieniu systemu warto sprawdzić czy instalacja sterowników zakończyła się sukcesem i rzeczywiście są one w użyciu. Łatwo można tego dokonać wykorzystując program glxinfo znajdujący się w pakiecie mesa-utils. Zatem najpierw instalacja pakietu, jeżeli nie został jeszcze zainstalowany:

aptitude install mesa-utils

A następnie sprawdzenie czy sterowniki działają:

glxinfo |grep -Ei '(direct rendering|opengl)'

Przykładowo u mnie, gdy sterowniki zainstalowane są prawidłowo, wynik wygląda tak:

direct rendering: Yes
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 440/PCIe/SSE2
OpenGL version string: 4.2.0 NVIDIA 302.17
OpenGL shading language version string: 4.20 NVIDIA via Cg compiler
OpenGL extensions:

Panel konfiguracyjny Nvidii

Program nvidia-settings jest graficznym panelem konfiguracyjnym dla kart Nvidii. Uruchomiony z poziomu użytkownika daje możliwość zmiany parametrów takich jak rozdzielczość, częstotliwość odświeżania czy konfiguracja wielu monitorów. Aby mieć możliwość zapisania tych ustawień na stałe do pliku xorg.conf (opcja „Save to X Configuration File”), program musi być uruchomiony z uprawnieniami użytkownika root.

Inaczej sprawa wygląda z parametrami takimi jak jasność, kontrast czy gamma. Te z kolei można zarówno ustawiać jak i zapisywać z poziomu zwykłego użytkownika. Żeby ustawienia zostały przywrócone przy starcie środowiska graficznego, należy zapisać konfigurację do pliku ~/.nvidia-settings-rc (opcja „Save Current Configuration”) oraz dodać do autostartu środowiska graficznego polecenie:

/usr/bin/nvidia-settings -l

Usuwanie sterowników

Sterowniki z repozytorium:

aptitude purge '?installed nvidia'
rm /etc/X11/xorg.conf /etc/X11/xorg.conf.d/20-nvidia.conf

Sterowniki instalowane skryptem:

/usr/bin/nvidia-uninstall
rm /etc/X11/xorg.conf /etc/X11/xorg.conf.d/20-nvidia.conf

Tekst powstał na podstawie wiki Debiana i doświadczeń własnych. W razie jakichkolwiek uwag proszę pisać na maila lub przez PW na forum, w razie problemów ze sterownikami założyć wątek na forum.


Przypisy:

  1. #stable
  2. #stable_backports
  3. #testing
  4. #skrypt
  5. #xorg
  6. #sprawdzenie
  7. #nvidia-settings
  8. #usuwanie
  9. http://dug.net.pl/tekst/136/lista_repozytoriow_(sources_list)_dla_debiana/
  10. http://www.nvidia.com/object/IO_32667.html
  11. http://dug.net.pl/tekst/231/metapakiety_jadra_i_naglowkow
  12. #xorg
  13. http://www.nvidia.com/object/IO_32667.html
  14. http://dug.net.pl/tekst/231/metapakiety_jadra_i_naglowkow
  15. #xorg
  16. http://dug.net.pl/tekst/136/lista_repozytoriow_(sources_list)_dla_debiana/
  17. http://www.nvidia.com/object/IO_32667.html
  18. http://dug.net.pl/tekst/231/metapakiety_jadra_i_naglowkow
  19. #xorg
  20. http://www.nvidia.pl/Download/index.aspx?lang=pl
  21. #xorg
  22. http://forum.dug.net.pl/viewtopic.php?pid=192566#p192566