Proprietäre NVIDIA-Grafiktreiber

aus openSUSE, der freien Wissensdatenbank

(Weitergeleitet von NV-GLX)
NVIDIA bietet für seine Grafikchips proprietäre, also unfreie Treiber für x86- und x86-64-Linux an, die auf Grund ihrer Lizenz nicht mit openSUSE ausgeliefert werden können. Im Gegensatz zum freien Treiber nv unterstützen diese jedoch wesentlich mehr Funktionen der Chips. Darunter vor allem 3D-Hardwarebeschleunigung (OpenGL), Mehrschirmbetrieb, TV-Ausgänge und NVIDIA-Entwicklungen wie SLI.

NVIDIA stellt drei verschiedene Treiber zur Verfügung, die jeweils bestimmte GPUs unterstützen: Standardtreiber, Legacy-Treiber und ältere Legacy-Treiber.
Unter openSUSE haben Sie drei verschiedene Möglichkeiten, die Treiber zu installieren: 1-Klick-Installation, Installation mit YaST und die manuelle Installation.
Die NVIDIA-Treiber stellen eine eigene Beschleunigungsarchitektur namens NV-GLX für Compositing/3D-Effekte auf Arbeitsflächen zur Verfügung, welche bspw. mit Compiz genutzt werden kann.

Hilfe zur Lösung bestimmter Probleme bei der Verwendung der Treiber erhalten Sie hier.


Inhaltsverzeichnis


Bestandteile

  • Kernelmodul nvidia
    Dieses Modul ist der Hauptbestandteil des Treibers. Es bringt einen eigenen Zugriff auf die AGP-Schnittstelle mit, welcher zwar nicht verwendet werden muss, aber ein paar Vorteile bietet, wenn man den Rechner beispielsweise in einen Schlafmodus wie Suspend to RAM bringen will.
    Da dieses Modul keiner freien Lizenz unterliegt werden Sie keine Unterstützung von Kernelentwicklern erhalten, so lange das Modul geladen ist und Probleme auftreten.
  • Bibliotheken
    Der Treiber bringt eigene Bibliotheken mit und ersetzt einige der X.Org-Bibliotheken, darunter die libGL unter /usr/lib.
  • nvidia-xconfig
    Hierbei handelt es sich um ein Kommandozeilenwerkzeug zur Erzeugung einer passenden xorg.conf oder zur Anpassung einer vorhandenen xorg.conf. Unter SUSE Linux/openSUSE sollten Sie in der Regel SaX2 verwenden um eine xorg.conf zu erstellen.
  • nvidia-settings
    Diese Anwendung mit grafischer Oberfläche ermöglicht es, bestimmte Einstellungen des Treibers zu konfigurieren.

Unterstützte Grafikchips

Zur Zeit existieren drei Versionslinien des Treibers, welche jeweils bestimmte Generationen von NVIDIA-Chips unterstützen. Bei ganz neu auf dem Markt erschienenen Chips kann es leider vorkommen, dass noch nicht sofort ein passender Linux-Treiber von NVIDIA existiert. Die PCIdevID können Sie sich so anzeigen lassen, wobei es dann der Hexadezimalwert nach dem zweiten Doppelpunkt ist (hier 0171):

lspci -n | grep "Class 0300"
01:00.0 Class 0300: 10de:0171 (rev a3)

Eine Übersicht darüber, welcher Chip von welcher Treiberversion unterstützt wird, finden Sie in der README des NVIDIA-Treibers.

Standardtreiber

Dieser Treiber unterstützt alle NVIDIA-Grafikchips ab GeForce FX (GeForce 5) und die Chips der Quadro FX und Quadro NVS Serien. Der Treiber gehört der 1xx.xx-Reihe an (bspw. 169.09). Die passenden Pakete bei einer Installation über YaST heißen x11-video-nvidiaG01 und nvidia-gfxG01-kmp-"Kernel", wobei "Kernel" den von ihnen verwendeten Kerneltyp meint, default, smp oder bigsmp.

Legacy-Treiber

Von diesem Treiber werden die älteren Chips vom GeForce2 MX bis zum GeForce 4 und die Chips der Quadro 4 Serie unterstützt. Die GeForce 2 Chips ohne MX werden allerdings nur noch vom älteren Legacy-Treiber unterstützt. Dieser Treiber gehört der 96.43.xx-Reihe an, die passenden Pakete bei einer Installation über YaST heißen x11-video-nvidia und nvidia-gfx-kmp-"Kernel", wobei Kernel den von ihnen verwendeten Kerneltyp meint, default, smp oder bigsmp.

Ältere Legacy-Treiber

Die älteren Legacy-Treiber gehören der 71.86.xx-Reihe an und lassen sich nicht über die Paketverwaltung installieren, sondern müssen von Hand installiert werden. Sie unterstützen alle restlichen Chips, bis hinunter zum Riva TNT.


Allgemeine Hinweise

  • Durch den Einsatz des proprietären Treibers wird der Kernel modifiziert. Da dann ein Modul, welches unter keiner mit der GPL vereinbaren Lizenz steht, läuft, werden ihnen bei Problemen mit dem Kernel die Kernelentwickler nicht helfen, solange das Modul geladen ist und ein Problem auftritt. Auch werden Fehlerberichte im Bugzilla von Novell dann mit einer niedrigeren Priorität behandelt.
  • Nicht nur ein neuer Kernel kann eine Neuinstallation des Moduls erfordern. Sollten Sie ihren X-Server aktualisieren, besteht dabei ebenfalls die Möglichkeit, dass Teile des Treibers überschrieben werden und Sie diesen erneut installieren müssen.

Installation

1-Klick-Installation (openSUSE 10.3 oder neuer)

Die einfachste Installationsmethode ist die 1-Klick-Installation, welche ab openSUSE 10.3 unterstützt wird und der Installation mit YaST ähnlich ist.

  • Unterstützte Treiber:
  • Vorteile:
    • Die einfachste Installationsart.
    • Sie müssen das Kernelmodul nicht selber kompilieren und brauchen deshalb weder die Kernelquellen noch den GCC installiert zu haben.
    • Im Falle einer Aktualisierung des Kernels durch openSUSE werden auch neue Treiberpakete bereitgestellt und Sie müssen sich um nichts kümmern.
  • Nachteile:
    • Es funktioniert nur mit den Kerneln von openSUSE, jedoch nicht mit selber gebauten oder Kerneln aus anderen Quellen.
    • Unter Umständen kann etwas Zeit vergehen bis neue Treiberversionen verfügbar sind.

Auf Systemen, auf denen die 1-Klick-Installation funktioniert, können Sie auch je nach Belieben eine der anderen Installationsarten wählen.

Installationsablauf

Der allgemeine Ablauf einer 1-Klick-Installation wird hier beschrieben.

Version:
10.3 & 11.0

Installation mit YaST (SUSE LINUX 10.1 oder neuer)

Hier ist es die einfachste Methode, die Treiber mit Hilfe von YaST zu installieren, was viele Vorteile und ein paar Nachteile hat.

  • Unterstützte Treiber:
  • Vorteile:
    • Es is sehr einfach durchzuführen.
    • Sie müssen das Kernelmodul nicht selbst kompilieren und brauchen deshalb weder die Kernelquellen noch den GCC installiert zu haben.
    • Im Falle einer Aktualisierung des Kernels durch openSUSE werden auch neue Treiberpakete bereitgestellt und Sie müssen sich um nichts kümmern.
  • Nachteile:
    • Es funktioniert nur mit den Kerneln von openSUSE, jedoch nicht mit selber gebauten oder Kerneln aus anderen Quellen.
    • Unter Umständen kann etwas Zeit vergehen bis neue Treiberversionen verfügbar sind.

Die manuelle Installation des Treibers funktioniert natürlich auch mit neuen Distributionsversionen und wird im nächsten Abschnitt über die älteren SUSE Linux Versionen beschrieben.

Installationsablauf

Zuerst müssen Sie eine weitere Paketquelle einrichten, danach die Pakete installieren und zum Schluss die Konfiguration mit SaX2 durchführen.

  1. Starten Sie YaST und schauen Sie ob ein Online-Update für ihren Kernel erhältlich ist. Wählen Sie dann unter Software den Eintrag Installationsquelle wechseln.
  2. Wählen Sie dort Hinzufügen -> HTTP aus.
  3. Dann geben Sie folgende Daten ein:
    Protokoll: HTTP
    Servername: download.nvidia.com
    Verzeichnis auf dem Server (bei SUSE Linux 10.1): novell/sle10sp1
    Verzeichnis auf dem Server (bei openSUSE 10.2): opensuse/10.2
    Verzeichnis auf dem Server (bei openSUSE 10.3): opensuse/10.3
    Verzeichnis auf dem Server (bei openSUSE 11.0): opensuse/11.0
    "Anonym" ankreuzen
  4. Starten Sie dann Software installieren oder löschen.
  5. Installieren Sie nun die zu ihrem Grafikchip passenden Pakete, entweder x11-video-nvidiaG01 und nvidia-gfxG01-kmp-"Kerneltyp" für den aktuellen Standardtreiber, oder x11-video-nvidia und nvidia-gfx-kmp-"Kerneltyp" für die Legacy-Treiber. Der Kerneltyp hängt von ihrem installierten Kernel ab. Sie können ihn sich in der Konsole mit uname -r anzeigen lassen, er ist entweder default, smp oder bigsmp.
  6. Melden Sie sich ab und beenden Sie die aktuelle Sitzung.
  7. Wenn Sie nun schon vor dem Laden des Arbeitsflächenverwalters (kdm, gdm, usw.) ein NVIDIA-Logo sehen, ist die Installation abgeschlossen. Falls dem nicht so ist oder die Auflösung nicht passt, führen Sie bitte auch noch die folgenden Schritte aus.
  8. Im Anmeldebildschirm drücken Sie Strg-Alt-F1 um in die Konsole zu gelangen.
  9. Melden Sie sich dort als root an und wechseln Sie dann mit init 3 in Runlevel drei.
  10. Starten Sie SaX2 mit sax2 -r um X.Org zu konfigurieren.
  11. Nach der Konfiguration kehren Sie mit init 5 wieder in den grafischen Modus zurück.
  12. Falls Sie es nicht deaktiviert haben, sollte beim Starten ein NVIDIA-Logo angezeigt werden, was schon mal ein gutes Zeichen wäre.

Wie Sie die Installation überprüfen erfahren Sie weiter unten.


Manuelle Installation (SUSE Linux 10.0 oder älter)

Für ältere Versionen von SUSE Linux oder für Entwicklungsversionen stehen im Paketdepot von NVIDIA keine passenden Pakete bereit, weshalb Sie hier die manuelle Methode wählen müssen. Diese können Sie auch auf neuen Ausgaben von SUSE Linux durchführen, denn auch diese hat ein paar Vorteile.

  • Unterstützte Treiber:
  • Vorteile:
    • Es funktioniert auch mit Kerneln die sie aus anderen Quellen bezogen oder selber gebaut haben.
    • Eventuell sind neue Treiberversionen auf der NVIDIA-Seite wesentlich eher verfügbar als im Paketdepot.
  • Nachteile:
    • Nach einer Aktualisierung oder einem Wechsel des Kernels müssen Sie das Modul jedes mal wieder von Hand installieren.
    • Für diese Methoden müssen die GCC sowie make installiert und die Kernelquellen konfiguriert, also ebenfalls installiert, sein.

Installationsablauf

  1. Vergewissern Sie sich, dass die Pakete gcc, make und kernel-source installiert sind; bspw. mit rpm -q gcc kernel-source make. Falls dem nicht so ist, dann installieren Sie sie bitte nun.
  2. Laden Sie sich den für ihre Architektur und Grafikkarte passenden Treiber von der NVIDIA-Seite herunter.
  3. Melden Sie sich ab und beenden Sie die aktuelle Sitzung.
  4. Im Anmeldebildschirm drücken Sie Strg-Alt-F1 um in die Konsole zu gelangen.
  5. Melden Sie sich dort als root an und wechseln Sie dann mit init 3 in Runlevel drei.
  6. Starten Sie mit folgendem Befehl das Installationsprogramm:
    sh /Pfad/zum/Treiber/NVIDIA-Linux-x86-169.09-pkg1.run -q
    Passen Sie dabei den Dateinamen an Ihre Treiberversion an. Beachten Sie, dass es unterschiedliche Treiber für neuere und ältere Grafikchips und x86 und x86_64 gibt.
  7. Nachdem der Treiber erfolgreich installiert wurde, starten Sie SaX2 mit folgendem Befehl:
    sax2 -r -m 0=nvidia
  8. Nach der Konfiguration kehren Sie mit init 5 wieder in den grafischen Modus zurück.
  9. Falls Sie es nicht deaktiviert haben, sollte beim Starten ein NVIDIA-Logo angezeigt werden, was schon mal ein gutes Zeichen wäre.

Hinweis: Wenn der Kernel aktualisiert wurde, müssen Sie das Kernel-Modul des Treibers für den neuen Kernel selber erneut bauen lassen, da dies nicht automatisch geschieht. Mit dem Schalte -K können Sie den Treiber veranlassen, lediglich ein neues Modul für den aktuell verwendeten Kernel zu bauen. Die Befehlssyntax sieht dann etwa so aus, wobei sie den Treibernamen gegebenenfalls anpassen müssen; des weiteren benötigen Sie auch hierfür root-Rechte: sh /Pfad/zum/Treiber/NVIDIA-Linux-x86-169.09-pkg1.run -K


Installationserfolg prüfen

Wenn ihnen beim Start ein NVIDIA-Logo angezeigt wird ist das schon mal ein gutes Zeichen. Sie können auch einfach mal eine OpenGL-Anwendung starten. Äußerst interessant ist auch die Ausgabe des Befehls glxinfo; darin sollten die Namen NVIDIA sowie die Treiberversion vorkommen, sowie direct rendering: Yes. Sie können sich die wichtigsten Zeilen auch mit den folgenden Kommandos ausgeben lassen:
glxinfo | grep direct
glxinfo | grep vendor
glxinfo | grep version


NV-GLX aktivieren (Compositing/3D-Effekte mit nvidia)

Version:
11.0
Ab openSUSE 11.0 aktiviert SaX2 NV-GLX auf unterstützter Hardware automatisch, sie müssen also nichts manuell verändern, sondern können direkt die Compositing-Fähigkeiten von Fensterverwaltern wie KWin und Compiz nutzen. Sollte die Automatik fehl schlagen, und Sie sind sich sicher, dass der von ihnen eingesetzte Treiber NV-GLX unterstützt, können Sie es immer noch nach der folgenden Anleitung manuell aktivieren.

Neben den Beschleunigungsmechanismen auf Seiten des Xservers wie AIGLX und Xgl bietet der nvidia-Treiber seit Version 1.0-9625 auch eine eigene Schnittstelle zur 3D-Beschleunigung der Arbeitsflächen. Diese hört auf den Namen NV-GLX und lässt sich manuell in der /etc/X11/xorg.conf aktivieren. Dazu müssen die Composite-Erweiterung aktiviert und ein paar Treiberoptionen gesetzt werden. Sie können die notwendigen Optionen direkt in der Datei setzen, indem Sie diese als root mit ihrem bevorzugten Editor öffnen.

Section "Device"
  ...
  Option       "AddARGBGLXVisuals" "true"
  Option       "AllowGLXWithComposite" "true"
  ...
EndSection
Section "Extensions"
  Option       "Composite" "on"
EndSection

Alternativ können Sie das Kommandozeilenprogramm nvidia-xsettings verwenden, welches beim Treiber mitgeliefert wird. Rufen Sie dieses dazu in einer Konsole als root mit den folgenden Optionen auf:

Kommando als normaler Nutzer

erde@sonne:~> su - sonne:~ # nvidia-xconfig --composite sonne:~ # nvidia-xconfig --render-accel sonne:~ # nvidia-xconfig --add-argb-glx-visuals -d 24

Damit die Änderungen wirksam werden, müssen Sie den X-Server neu starten (Abmelden und im Anmeldebildschirm <Strg>+<Alt>+<Backspace> drücken). Danach sollte in der Protokolldatei /var/log/Xorg.0.log "Loading extension NV-GLX" auftauchen.

Neuere NVIDIA-Treiber setzen AddARGBGLXVisuals, RenderAccel und AllowGLXWithComposite automatisch auf true, wenn der zu Grunde liegende X-Server neu genug für diese Techniken ist. Allerdings schadet es auch nicht, die Optionen explizit zu setzen.


Suspend to RAM und Disk

Um bei aktiviertem NVIDIA-Treiber Suspend to RAM und Disk nutzen zu können, sind teilweise einige kleine Vorarbeiten nötig, welche hier beschrieben werden. Allgemeine Informationen zur Energieverwaltung und Suspendierung erhalten Sie in den Artikeln über die pm-utils und s2ram.

Problemlösungen

Falls beim Einsatz des proprietären NVIDIA-Treibers Probleme auftreten, dann finden sie auf der Unterseite Problemlösungen vielleicht eine Lösung. Haben Sie selber eine Lösung für ein Problem gefunden, dann fügen Sie diese doch bitte auf der Unterseite hinzu, so dass auch andere Nutzer davon profitieren können.


Siehe auch


WWW-Verweise