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.
- Wszystkie polecenia należy wykonywać z uprawnieniami użytkownika root (po bezpośrednim zalogowaniu się na konto root lub poprzez
sudo
, jeżeli zostało ono skonfigurowane w systemie), chyba że napisano inaczej. - W całym tekście do instalacji pakietów używany jest aptitude. Wynika to z tego, że sam używam aptitude, a pisanie przy każdym poleceniu dwóch wersji tylko niepotrzebnie rozciągnęłoby tekst. Równie dobrze można użyć apt-get.
- Sterowniki zainstalować można różnymi sposobami. Nigdy nie używaj tych sposobów jednocześnie. Jeżeli chcesz skorzystać z innego sposobu, odinstaluj najpierw sterowniki instalowane sposobem dotychczasowym.
Spis treści:
- Debian 7 „Wheezy” — Sterowniki z repozytorium [1]
- Debian 7 „Wheezy” — Nowsze sterowniki z repozytorium [2]
- Debian 8 „Jessie” — Sterowniki z repozytorium [3]
- Instalacja skryptem Nvidii [4]
- Plik konfiguracyjny Xorga [5]
- Sprawdzenie czy sterownik działa [6]
- Panel konfiguracyjny Nvidii [7]
- Usuwanie sterowników [8]
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ć.
- Na pytanie czy akceptujesz licencję — twierdząco.
- Jeżeli pojawi się pytanie czy przerwać instalację z powodu niezgodności wersji kompilatora (gcc), można odpowiedzieć przecząco i kontynuować instalację. Nigdy nie spotkałem się z problem tym spowodowanym, jednak dla pewności można przerwać instalację i przed ponownych uruchomieniem instalatora zmienić wersję kompilatora, którym moduł ma zostać skompilowany.
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
.
- Kolejne pytanie instalatora — czy dodatkowo instalować biblioteki 32-bitowe (oczywiście pojawia się tylko na systemie 64-bitowym), odpowiedź wedle uznania, jeżeli są potrzebne naturalnie twierdząco.
- Czy utworzyć plik xorg.conf — wedle uznania, utworzenie pliku konfiguracyjnego Xorga [21] [19] [15] [12] ręcznie to żaden problem.
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.