# FAQ Tips > Hier Suchen und Finden, Links, Tutorials >  Nvidia Grafikkarten

## stefan.becker

Inhalt:

1) Einleitung

2) Treiberdownload

3) Vorbereitungen

4) Installation des Treibers

5) Änderungen in der X-Konfiguration

6) erster Start, grafische Konfiguration/Feintuning

7) Tuning

8) Probleme&Lösungen

9) Links / Literatur


*Änderungen:*

24.06.03: Erstellung
25.06.03: Anmerkungen von zander aus anderem Thread eingearbeitet
26.06.03: wichtige Installeroptionen aufgelistet
08.07.03: Neues Kapitel "Links zu aktuellen Threads"
30.08.03: Kapitel 4 / manuelle Installation ergänzt
17.10.03: Neues Kapitel "Tips zu Debian" von Susu
23.02.04: Links kontrolliert und aktualisiert
31.10.03: Inhaltsverzeichnis mit Links
07.08.05: Links aktualisiert
17.12.05: Aktualisierungen für Treiber Version 8174, nvidia-xconfig, nvidia-settings
31.12.05: Logfile, Kernelversion bestimmen, Kernel konfigurieren
30.04.06: Aktualisiert
12.11.06: Legacy Treiber, Links kontrolliert
12.06.07: Treiberauswahl, Installation und Konfiguration aktualisiert
22.02.08: Links kontrolliert / 10) Xen Kernel Howto
04.04.09: Links&Inhalt aktualisiert

----------


## stefan.becker

*Warum der Nvidia Treiber?*

Moderne Distributionen unterstützen bereits serienmäßig Grafikkarten mit Nvidia-Chipsatz. Diese Treiber sind jedoch nur für 2D tauglich. Wer auf OpenGL und 3D-Beschleunigung angewiesen ist, kommt nicht um die Installation des Nvidia Treibers herum.

Aber keine Angst, das ganze ist einfacher als viele denken.


*Closed vs. Open Source*

Der Nvidia Treiber ist kostenlos, aber nicht frei (Closed Source). Aber bei aller Meckerei sollte man nicht vergessen, das das Linux Engagement von Nvidia vorbildlich ist. Der Treiber wird regelmäßig aktualisiert, so dass auch neuere Karten innerhalb kurzer Zeit nach dem Erscheinen unterstützt werden.


*Architektur des Linux Treibers* (Beschreibung von zander, aktualisiert)

Der NVIDIA Treiber setzt sich zusammen aus einem XFree86 Treibermodul (nvidia_drv.o), einem Xorg-Erweiterungsmodul (libglx.so.*), einer OpenGL Implementation (libGL.*, libGLcore.*) und einem Kernelmodul (nvidia.o). Das Kernelmodul erfüllt notwendige Aufgaben im Bereich des Resourcenmanagement (und ist eingeschränkt mit der DRM Funktionalität der DRI Architektur vergleichbar).

Beim Kernelmodul sind zwar Quellen dabei, sie dienen jedoch nur zur Einbettung in den installierten Kernel. Die eigentliche Funktionalität ist in vorkompilierten Modulen enthalten.


*Wird meine Karte unterstützt?*

Bevor man die Installation versucht, sollte man sich vergewissern, dass der ausgesuchte Treiber den Chipsatz der eigenen Karte unterstützt. Für ältere Chipsätze gibt es die so genannten "Legacy"-Treiber.

Unter der jeweiligen Treiber-Downloadseite findet sich immer ein Link zu einem PDF-Handbuch. Alternativ wird ein HTML Readme angeboten. Im Anhang ist dort eine Tabelle mit den unterstützten Chipsätzen enthalten. Siehe hierzu auch nächstes Kapitel mit Download der aktuellen Version.

*Fertige Pakete oder selbst installieren?*

Am einfachsten ist sicherlich die Installation fertiger Pakete. Sollte beim Systemupdate der Kernel aktualisiert werden, wird auch der passende Nvidia Treiber aktualisiert. Bei Selbstinstallation muss man hingegen nach jedem Kernelupdate den Treiber neu installieren. Eine Installation über den Paketmanager der Distribution hat auch den Vorteil, dass zusätzlich vom Nvidia Treiber benötigte Software automatisch mit installiert werden.


*Mischinstallation Pakete/Treiber manuell*

Das geht überhaupt nicht! 

Bevor man den Treiber manuell installiert, müssen per Paketmanager alle Nvidia Pakete gelöscht werden. 

Bei Installation von Paketen vorher unbedingt den Treiber über den Installer (siehe Kapitel 4, Optionen des Installers) deinstallieren.


*Hinweise zur Installation von Paketen*

Im Normalfall wird durch die Installation alles notwendige veranlasst:
- Paketabhängigkeiten installieren
- Treiberpaket installieren
- Kernelmodul installieren
- Konfiguration des X-Servers

Kapitel 2-4 kann man auf jeden Fall überspringen. Kapitel 5 ist nur wichtig, wenn der X-Server nicht eingerichtet wurde, also der Nvidia Treiber nach einem Neustart nicht aktiviert ist.

Wie bereits erwähnt, gibt es immer einen aktuellen und mehrere Legacy Treiber für ältere Modelle. Daher zunächst nachsehen, welche Pakete installiert werden müssen:

http://www.nvidia.com/object/IO_18897.html


*Pakete für:*

*OpenSuse*
http://www.suse.de/~sndirsch/nvidia-...ler-HOWTO.html
http://de.opensuse.org/Propriet%C3%A...-Grafiktreiber

*Fedora*
http://rpmfusion.org/Package/xorg-x11-drv-nvidia
http://rpmfusion.org/

*Ubuntu*
http://wiki.ubuntu-forum.de/index.ph...a_installieren

*Debian*
http://wiki.debian.org/NvidiaGraphicsDrivers

----------


## stefan.becker

Bevor man die Karte einbaut (falls noch nicht geschehen), sollte man sich zuerst die passende Version des Treibers ziehen.

Der Download erfolgt über:

http://www.nvidia.com/object/unix.html

Hier werden Treiber verschiedene Architekturen für Linux angeboten. Die Auswahl ist abhängig vom Prozessor und der Distribution des eigenen PCs:

- Linux *IA32*: Intel Pentium und Celeron, AMD Athlon/Sempron/ und Duron (32 Bit Architektur)
- Linux *AMD64/EMT64*: AMD Athlon/Sempron 64, Intel Core Duo 64 Bit (64 Bit Architektur)
- Linux *IA64*: Intel Itanium (64 Bit Architektur)

Bei einem 64 Bit AMD mit 32 Bit Distribution muss der "IA32" Treiber gewählt werden, bei einer 64 Bit Distribution der "AMD64".

Weiterhin gibt es eine Unterscheidung abhängig vom Chipsatz (Generation) der Grafikkarte:

*Latest Version*: Treiberfamilie für neuere Nvidia Chipsätze

*Latest Legacy GPU Version*: Treiberfamilie für ältere Nvidia Chipsätze

Innerhalb der Legacy-Reihe gibt es auch wieder mehrere Reihen. Hier ist also auf jeden Fall ein Blick in die GPU-Liste zu werfen.

Irgendwann fliegt die Unterstützung für einen bestimmten Chipsatz aus dem jeweils aktuellen Treiber heraus, man muss ab diesem Zeitpunkt auf den Legacytreiber umschwenken. Der Legacytreiber wird funktional nicht mehr weiterentwickelt. Neuere Versionen gibt es z. B. bei Inkompatibilitäten mit neueren Kernel Versionen oder anderen Systemkomponenten.

Tabelle Treiber/Chipsätze: http://www.nvidia.com/object/IO_18897.html

----------


## stefan.becker

*BIOS Einstellungen*

Falls das Bios eine Option wie *Assign IRQ to VGA* anbietet, sollte man diese auf jeden Fall aktivieren.


*Software Voraussetzungen*

Damit der Treiber installiert werden kann, müssen mindestens die folgenden Pakete installiert sein:

- Kernelsource (Name abhängig von Distribution, z. B. "kernel-source", "kernel-devel", kernel-headers")
- Compiler "gcc"
- binutils
- make
- module-init-tools

----------


## stefan.becker

*Installation im Textmodus*

Die Installation muss auf jeden Fall im Textmodus erfolgen.

Ist man in der grafischen Oberfläche, kann man per [Strg]-[Alt]-[F1] in den Textmodus wechseln. Dort als root anmelden und per "init 3" den noch laufenden X-Server beenden.

Will man Suse im Textmodus neu starten, kann man beim Bootprompt auch einfach "3" eingeben.


*Installation starten*

In der Kommandozeile als root wird der Installer mit


```
sh NVIDIA*run
```

gestartet. Der restliche Ablauf ist dialoggesteuert.

Werden fehlende Rechte gemeldet, fehlt u. U. das Ausführungsattribut des Installers:


```
chmod +x NVIDIA*run
```


*Standardvorgehensweise: Fragen des Installers und Antworten*

Anzeige der Lizenzbedingungen: Lesen, *Accept*

Vorheriger Treiber wird festgestellt, der Installer bietet die Deinstallation an: *Yes*

Kernelmodul von Nvidia laden: Kann man versuchen, *Yes*

Klappt der Download nicht, übersetzt der Installer selbst ein passendes Modul: *OK*

Nur bei 64 Bit Installer: Installation von 32 Bit Open GL Libs: Sollten installiert werden, wichtig für WINE/Cedega/Google Earth: *YES*

Anpassen der X-Konfiguration: 
Falls zum 1. Mal ein Nvidia Treiber installiert wird: *YES*
Falls Treiber aktualisiert wurde: *NO*
Suse-Linux: *NO*

Wenn dieser Ablauf fehlerfrei durchlief, kann man den Rest dieses Kapitels überspringen.


*Eigener Kernel oder keine Standarddistribution, Kernelquellen installieren*

Hier sollte man die Frage nach dem Download eines zum Kernel passenden Moduls verneinen und dann das erforderliche Modul selbst übersetzen.

In diesem Fall übersetzt der Installer automatisch das Kernelmodul gegen die Quellen des aktuell laufenden Kernels. Bei RedHat/Fedora ist z. B ein Paket "kernel-source" installiert. Außerdem muss natürlich ein C Compiler wie "gcc" installiert sein.

Folgende Schritte sind nur notwendig, wenn der Installer *nicht* läuft:

Falls die Quellen installiert sind, aber noch nie konfiguriert wurden muss man eventuell im Kernel-Hauptverzeichnis (Z. B. /usr/src/linux-2.6.12) zuvor folgendes eingeben:

*Suse Linux, Kernel 2.6*



```
make cloneconfig
make modules_prepare
```

*Kernel 2.6, andere Distributionen*

Viele Distributionen haben eine Konfigurationsdatei zum laufenden Kernel im "/boot"-Verzeichnis abgelegt.

- Eine Konfigurationsdatei ins Kernel-Source-Verzeichnis kopieren, z. B.:



```
cp /boot/config-2.6.12 /usr/src/linux-2.6.12/.config
cd /usr/src/linux-2.6.12
make menuconfig
```

- Bei "make menuconfig" direkt "Exit" wählen, Konfiguration speichern.

- Zuletzt die Module konfigurieren:



```
make modules_prepare
```

Einige Distributionen hinterlegen die Kernelkonfiguration im /proc-Verzeichnis:



```
zcat /proc/config.gz /usr/src/linux-2.6.12/.config
```

*Kernel 2.4.x*

Hier wird ein Paket "kernel-headers" benötigt. Der Name ist abhängig von der Distribution. Die Version des Paktes muss zur Version des laufenden Kernels passen.

Zitat von Zander aus einem anderen Thread:

http://www.linuxforen.de/forums/show...0&postcount=36


*GCC-Version*

Eventuell kommt eine Fehlermeldung, dass der Kernel mit einer anderen gcc-Version übersetzt wurde als die installierte gcc-Version. In diesem Fall zuvor folgendes in der Konsole eingeben, anschließend den Installer neu starten:



```
export IGNORE_CC_MISMATCH=yes
```


*Kernelversion bestimmen*

Wie bereits gesagt, müssen Version des laufenden Kernels sowie die Kernelsourcen zueinander passen.

Der folgende Befehl bestimmt die Version des laufenden Kernels:



```
uname -r
```

Bsp: Der Befehl gibt aus: 




> 2.6.14.3


Daher muss also das passende Verzeichnis vorhanden sein:




> /usr/src/linux*2.6.14.3*


Im Beispiel müsste dann z. B. ein Paket "kernel-source-2.6.14.3" installiert werden.

Die Bezeichnungen sind distributionsabhängig, das Schema sollte aber grundsätzlich passen.


*Wechsel des Kernels*

Das Kernelmodul für AGP basiert immer auf dem aktuell laufenden Kernel. Daraus folgt natürlich, das bei Wechsel des Kernels auch der Treiber neu installiert werden muss.

Hierzu gibt es zwei Möglichkeiten:

1) Vor Neustart mit neuem Kernel den Treiber neu installieren (Text von zander)

Es ist empfehlenswert, das NVIDIA Kernelmodul vor dem Wechsel zu einem neuen Kernel für den neuen Kernel zu übersetzen und zu installieren (z.B. sh NVIDIA-Linux-x86-1.0-4xxxx.run -f -k x.y.z (siehe sh NVIDIA-Linux-x86-1.0-4xxxx.run -A, alternativ über --kernel-include-path, --kernel-install-path oder manuell).

2) Erst mit neuem Kernel neustarten

In diesem Fall sollte zuvor das grafische Login abgeschaltet werden (init Modus 3), sonst gibt es Probleme beim Hochfahren. Dann kann der Neustart erfolgen, nach Hochfahren der Treiber neu installiert werden und zuletzt der Initmodus wieder auf 5 zurückgeschaltet werden. Zuvor kann man über "startx" mal versuchen, ob alles funktioniert.


*Optionen des Installers*

Der Installer hat einige Optionen, hier eine kleine Auswahl. Einige sind ja bereits beim Compilieren passend zum Kernel angegeben. Eine volle Übersicht der Optionen erhält man durch 



```
sh NVIDIA-Linux*.run -A --help
```

(Vor Installation über den Installer abfragen)

bzw.



```
man nvidia-installer
```

(Treiber bereits installiert)


"-A": zeigt alle Optionen an mit ausführlicher Beschreibung

"-a": Anzeige der Lizenz wird unterbinden (Bestimmungen sind damit automatisch anerkannt)

"--update": Installer verbindet sich mit FTP-Server und sucht nach neuer Version (inkl. Download, falls vorhanden)

"-i": Zeigt Version des aktuell installierten Treibers an

"--uninstall": deinstalliert den aktuell installierten Nvidia Treiber

"--x-prefix=[X-PREFIX]": Angabe eines Pfades, wo Xorg liegt (nur bei Abweichungen vom Standard anzugeben, normalerweise nie nötig)

"--ui=none": Im Normalfall arbeitet der Installer mit einer ncurses-Oberfläche. Falls die Anzeige nicht funktioniert, kann man es mal so ausprobieren. Ausgabe und Eingabe erfolgen dann immer Zeile für Zeile.

"--kernel-module-only": Installiert nur das Kernelmodul

"--kernel-include-path=...", "--kernel-source-path=": Angaben zum Pfad der Kernelsourcen.


*Manuelle Installation*

Sollte die Installation per Installer, warum auch immer, nicht funktionieren, kann man das ganze auch manuell durchführen:

- X beenden
- Login als Root
- Entpacken mit "sh ./NVIDIA*run --extract-only"
- Verzeichnis wechseln ("cd NVIDIA*/usr/src/nv")
- "make install" übersetzt und installiert das Kernelmodul
- Zurück ins NVIDIA Basisverzeichnis
- "make install" installiert den NVidia Treiber


*Fehlersuche / Logdatei*

Falls der Treiber nicht korrekt installiert werden kann, ist die während der Installation angelegte Logdatei die erste Suchquelle:




> /var/log/nvidia-installer.log

----------


## stefan.becker

Nach Installation des Treibers müssen in der X-Konfiguration noch einige Änderungen vorgenommen werden.

Am Ende der Installation fragt der Installer, ob er das automatisch ausführen soll. Wer das wählt, kann dieses Kapitel überspringen.


*Suse-Linux*

Durch Aufruf von sax2 per 


```
sax2 -r -m 0=nvidia
```

werden alle notwendigen Änderungen in der X-Konfiguration vorgenommen und der Treiber aktiviert.
Der Rest des Kapitels kann übersprungen werden.


*Andere Distributionen*

Die X-Konfiguration befindet sich in der Datei "/etc/X11/xorg.conf".

Bei älteren Distributionen ist es u. U. die Datei "/etc/X11/XF86Config-4". Der Pfad kann abweichen, bei anderen Distributionen ist es z. B. "/etc/XF86Config".

Einige Änderungen müssen vorgenommen werden. Die hier angegebenen Zeilen sind beispielhaft. Sie stammen aus meiner Konfiguration und können bei anderen Installationen in Details abweichen.


*nvidia-xconfig*

Ab Treiberversion 1.0-8174 gibt es das Tool "nvidia-xconfig", das die Änderungen automatisch vornimmt. Das Tool muss als root gestartet werden:



```
# nvidia-xconfig
```

Im Normalfall reicht es, das Programm ohne Parameter "-c" und "-o" zu starten. Es sucht sich dann automatisch die passende Datei aus und führt die notwendigen Änderungen durch.

Der Parameter "-c" gibt die Eingabedatei an, "-o" die Ausgabedatei. Wird nur "-c" angegeben, wird auch diese Datei als Ausgabedatei verwendet.

Alle Optionen des Tools werden erklärt durch 



```
man nvidia-xconfig
```

Das ist auch das Tool, das der Installer am Ende der Installation auf Wunsch startet.


*Änderungen manuell vornehmen*

*xorg Module*



```
Section "Module"
#        Load  "GLcore"
        Load  "dbe"
        Load  "extmod"
        Load "fbdevhw"
#       Load "dri"
        Load  "glx"
        Load  "record"
        Load  "freetype"
        Load  "type1"
EndSection
```

- Die Module *"GLcore"* und *"dri"* dürfen nicht geladen werden => Kommentarzeichen "#" vorsetzen oder Zeilen löschen.
- Das Modul *"glx"* muss geladen werden => Zeile "Load "glx"" hinzufügen.
- Die Liste der Module ist abhängig von der Distribution. Es brauchen außer oben genannten Modulen keine weiteren hier gelisteten hinzugefügt werden.

*xorg-Treiber*



```
Section "Device"
        # no known options
        Identifier   "Gforce4MX"
        Driver       "nvidia"
        VendorName   "Gforce4MX"
        BoardName     "Gforce4MX"

EndSection
```

Ursprünglich stand hier *"nv"* für den Standardtreiber von XFree/Xorg. Einfach durch *"nvidia"* ersetzen.

----------


## stefan.becker

*Erster Start*

Nach der Treiberinstallation (4) und Anpassung der Konfiguration (5) sollte ein Neustart erfolgen.

Der Treiber sollte jetzt funktionieren.

Mit Hilfe des Befehls 



```
glxinfo | grep NVIDIA
```

lässt sich überprüfen, ob wirklich der Nvidia Treiber verwendet wird.

Mit Hilfe des Befehls 



```
glxgears
```

lässt sich die Performance messen (Frames pro Sekunde).

Bei Suse gehört das Programm z. B. zum Paket "freeglut".


*grafische Konfiguration/Feintuning*

Durch Eingabe von 



```
nvidia-settings
```

lässt sich ein Tools für das Feintuning starten. 

Hier kann man keine allgemeinen Tipps geben, einfach mal mit den Einstellungen spielen.

Alle Optionen des Tools werden erklärt durch



```
man nvidia-settings
```

----------


## stefan.becker

*Logo ausblenden*

Beim Start ohne Logo fährt der Treiber etwas schneller hoch. Hierzu die Option einschalten:

-------------------------- 
Option "NoLogo" "on"
-------------------------- 

(Driver Optionen bei Section "Devices" ). 

Bei dieser Option scheiden sich die Geister. In einigen Threads wurde vom schnelleren Start berichtet, nach Anmerkung von zander bringt es nichts. Auf die Performance zur Laufzeit hat es keinen Einfluss. 

Im PDF Handbuch finden sich noch viele weitere Einstellungen zum Experimentieren.

----------


## stefan.becker

*Nach Systemupdate stürzen OpenGL Anwendungen ab*
*Nvidia Treiber geht nicht nach Systemupdate*

Ursachen hierfür sind:
- Kernel wurde aktualisiert => Kernelmodul muss neu übersetzt werden
- "Mesa-3d" (Softwareemulation OpenGL) wurde aktualisiert => libglx wurde überschrieben.

In beiden Fällen hilft es, den Treiber neu zu installieren, danach sollte alles wie gewohnt gehen.

Bei Installation über das Paketmanagement gibt es solche Probleme meistens nicht.


*Nvidia + Compiz*

Der Nvidia-Treiber bietet eigene Composite-Erweiterungen, so dass Compiz ohne AIGLX und Xgl genutzt werden kann. Nach Installation von Compiz reicht es in der Regel, folgende Befehle als root einzugeben, um die notwendigen Einstellungen des X-Servers durchzuführen: 


```
nvidia-xconfig --composite
nvidia-xconfig --allow-glx-with-composite
nvidia-xconfig --render-accel
nvidia-xconfig --add-argb-glx-visuals -d 24
nvidia-xconfig --damage-events
```

Siehe auch: http://www.linuxforen.de/forums/show...3&postcount=18


*Nvidia Treiber & Xen Kernel*

http://www.linuxforen.de/forums/show...52&postcount=4
http://en.opensuse.org/Use_Nvidia_driver_with_Xen

Xen+Nvidia+Compiz funktioniert aktuell nicht.


*Aktuelle Patches*

Im Userforum (http://www.nvnews.net/vbulletin/foru...?s=&forumid=14) ist jeweils zur neuesten Treiber Version ein Thread, in dem Patches veröffentlicht werden, wenn kurzfristig Fehler bekannt sind/werden.


*XServer braucht einige Minuten zum Hochfahren*

Probeweise mal in der Datei /etc/X11/xorg.conf folgendes einfügen:



```
Section "Monitor"
.........
Option "IgnoreDisplayDevices" "DFP, TV"
.........
EndSection
```

Bei den Optionen werden die Devices angegeben, die man nicht!! hat. Der Nvidia Treiber sucht dann nicht nach entsprechenden Bildschirmen, was den Start beschleunigt. "CRT" ist für den normalen Monitor, "DFP" steht für Flachbildschirm, "TV" für Fernseher am TV-Out.


*Infos zu Treiber&Hardware*

Treiber Version: cat /proc/driver/nvidia/version

Karten Daten: cat /proc/driver/nvidia/cards/0

Status: cat /proc/driver/nvidia/nvidia/registry

----------


## stefan.becker

*Hilfeforum*
Auf der Nvidia Homepage gibt es ein Anwenderforum zum Linuxtreiber:

http://www.nvnews.net/vbulletin/foru...?s=&forumid=14


*Online Handbuch*

SuSE: http://www.suse.de/~sndirsch/nvidia-...ler-HOWTO.html

Allgemein: 
- http://www.nvidia.com/object/unix.html
- Neueste Treiber Version wählen, dort Text Readme


*TVOUT aktivieren*

http://sourceforge.net/projects/nv-tv-out/
http://www.linuxforen.de/forums/show...threadid=41568

----------

