Gentoo Linux nVidia Guide
1.
Einführung
Die nVidia-Treiber im Portage-Baum werden von nVidia veröffentlicht und werden
gegen den Linux-Kernel gebaut. Sie beinhalten einen binären Klumpen, welcher
den schweren Teil der Arbeit verrichtet - die Karte ansprechen. Die Treiber
bestehen aus zwei Teilen: ein Kernelmodul und ein X11-Treiber. Beide Teile
befinden sich in ein und demselben Paket. Aufgrund der Weise, in der nVidia
die Pakete gepackt hat, müssen Sie erst einige Entscheidungen treffen, bevor Sie
den Treiber installieren.
Das Paket nvidia-drivers, enthält die neuesten Treiber von nVidia mit
Unterstützung für alle Karten und einigen verfügbaren Versionen, davon
abhängig, wie alt Ihre Karte ist. Es benutzt eine Eclass, um zu erkennen, welche
Art von Karte Sie benutzen, so dass es die richtige Version installiert.
2.
Treiber-Kompatibilität
Welche Version?
Das Paket nvidia-drivers unterstützt die volle Palette aller erhältlichen
nVidia-Karten. Es sind mehrere Versionen verfügbar, je nachdem, welche Karte(n)
Sie besitzen.
Neuere Karten wie die GeForce 8, 7, 6 und FX 5-Serien sollten die neueren
Treiber der 100.x-Serie verwenden.
Ältere Karten wie die GeForce 3 oder GeForce4-Serie erfordern die 96.x-Treiber.
Für diese Karten sollten Sie >=x11-drivers/nvidia-drivers-97.00 in
Ihrer Datei /etc/portage/package.mask maskieren. Dies verhindert,
dass neuere Versionen des Treibers, welche inkompatibel zu Ihrer Karte sind,
installiert werden.
Alte NV2x-basierte Karten (wie TNT, TNT2, GeForce und GeForce 2) benötigen die
alten 71.x-Treiber (z.B. nvidia-drivers-71.86.01). Für diese Karten
sollten Sie >=x11-drivers/nvidia-drivers-87.00 in der Datei
/etc/portage/package.mask maskieren.
Sie können die Treiberkompatibilität für Ihre Karte prüfen, um festzustellen,
welcher Treiber sie unterstützt, indem Sie die README auf der zugehörigen x86
oder x86-64 Release-Seite lesen.
3.
Konfigurieren Ihrer Karte
Kernelkonfiguration
Wie oben erwähnt, installiert und läuft der nVidia-Kerneltreiber anhängig von
Ihrem aktuellen Kernel. Er wird als Modul erstellt, also macht es Sinn, dass Ihr
Kernel das Laden von Kernelmodulen unterstützt. Wenn Sie genkernel all
verwendet haben, um Ihren Kernel zu konfigurieren, ist dies bereits geschehen.
Wenn nicht, überprüfen Sie die Konfiguration Ihres Kernels noch einmal genau um
sicherzustellen, dass die Unterstützung dafür aktiviert ist:
Befehlsauflistung 3.1: Laden von Kernelmodulen erlauben |
Loadable module support --->
[*] Enable loadable module support
|
Sie müssen außerdem Memory Type Range Register in Ihrem Kernel
aktivieren:
Befehlsauflistung 3.2: MTRR aktivieren |
Processor and Features --->
[*] MTRR (Memory Type Range Register) support
|
Wenn Sie eine AGP-Grafikkarte haben, können Sie außerdem noch optional
agpgart Unterstützung zu Ihrem Kernel hinzufügen, entweder einkompiliert
oder als Modul. Wenn Sie agpgart nicht im Kernel verwenden, dann werden die
Treiber ihre eigene agpgart Implementierung, genannt NvAGP
verwenden. Auf einigen Systemen ist die Leistung dieser besser als die des
agpgarts aus dem Kernel, und auf anderen ist die Leistung schlechter.
Sie werden dies selbst auf Ihrem eigenen System beurteilen müssen, um die beste
Leistung zu erzielen. Wenn Sie sich unsicher sind, was Sie tun sollen,
verwenden Sie das kernelinterne agpgart:
Befehlsauflistung 3.3: Aktivieren von agpgart |
Device Drivers --->
Graphics Support --->
-*- /dev/agpgart (AGP Support) --->
|
Notiz:
Auf amd64 kontrolliert IOMMU die agpgart-Einstellung.
|
Architektur-spezifische Bemerkungen
Wichtig:
Bei x86 und AMD64 Prozessoren erzeugt der kernelinterne Treiber einen Konflikt
mit dem Binärtreiber von nVidia. Wollen Sie Ihren Kernel für diese CPUs
kompilieren, müssen Sie die kernelinterne Treiberunterstützung wie hier gezeigt
komplett entfernen:
|
Befehlsauflistung 3.4: Den kernelinternen Treiber entfernen |
Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
< > nVidia Framebuffer Support
< > nVidia Riva support
|
Eine Framebufferalternative ist uvesafb, ein fortgeschrittener
Framebuffer. Beachten Sie, dass Sie diesen wahlweise fest in Ihren Kernel
oder als Modul kompilieren können. Das folgende Beispiel kompiliert uvesafb in
den Kernel hinein.
Befehlsauflistung 3.5: uvesafb Unterstützung aktivieren |
Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
<*> Userspace VESA VGA graphics support
|
Sie können auch VESA ausprobieren:
Befehlsauflistung 3.6: VESA-Unterstützung aktivieren |
Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
[*] VESA VGA graphics support
|
Weitere Informationen können Sie in der Dokumentation zu Ihrem gewählten
Framebuffer unter /usr/src/linux/Documentation/fb/ nachschlagen.
Weiter mit der Kernelkonfiguration
Das nvidia-drivers Ebuild erkennt automatisch Ihre Kernel-Version,
basierend auf dem /usr/src/linux-Symlink. Bitte stellen Sie sicher,
dass dieser Symlink auf die richtigen Quellen zeigt und dass Ihr Kernel richtig
konfiguriert ist. Bitte beziehen Sie sich auf den Abschnitt "Konfiguration des
Kernels" im Installations-Handbuch für
Details zur Kernelkonfiguration.
Zuerst sollten Sie eselect emergen (sofern Sie dies noch nicht getan
haben). Wenn Sie gentoo-sources-2.6.18-r4 benutzen, könnte die Auflistung Ihrer
Kernel in etwa so aussehen:
Befehlsauflistung 3.7: Überprüfen Sie Ihren /usr/src/linux Symlink |
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.18-gentoo-r4 *
[2] linux-2.6.20-gentoo-r7
[3] linux-2.6.20-gentoo-r8
|
In der Ausgabe oben sehen Sie, dass der linux-2.6.18-gentoo-r4 Kernel mit
einem Stern (*) versehen ist, um darzustellen, dass es der Kernel ist,
auf den der Symlink zeigt.
Wenn der Symlink nicht auf die richtigen Quellen verweist, müssen Sie den Link
aktualisieren, indem Sie die Nummer Ihrer gewünschten Kernelquellen wie im
Beispiel oben auswählen.
Befehlsauflistung 3.8: Erstellen/Aktualisieren des /usr/src/linux Symlink |
# eselect kernel set 1
|
Installation der richtigen Treiber
Jetzt ist es an der Zeit die Treiber zu installieren.
Befehlsauflistung 3.9: Installieren der nVidia-Treiber |
# emerge nvidia-drivers
|
Notiz:
Die Treiber können mit einem gesetzten gtk USE-Flag installiert werden.
Dadurch wird media-video/nvidia-settings installiert, ein handliches
grafisches Werkzeug um einige Aspekte Ihrer nVidia-Karte zu überwachen und zu
konfigurieren.
|
Wichtig:
Jedes mal wenn Sie einen neuen Kernel
kompilieren oder den aktuellen neu kompilieren, werden Sie
emerge nvidia-drivers ausführen müssen, um die nVidia-Module neu zu
installieren. Ein einfacherer Weg, um Module im Auge zu behalten, die von
Ebuilds installiert werden (so wie nvidia-drivers), ist es
sys-kernel/module-rebuild zu installieren. Sobald Sie es installiert
haben, führen Sie einfach module-rebuild populate aus, um seine Datenbank
mit einer Liste der Pakete, die erneut installiert werden müssen, zu bestücken.
Sobald Sie einen neuen Kernel fertig kompiliert haben, führen Sie einfach
module-rebuild rebuild aus, um die Treiber für Ihren Kernel neu zu bauen.
|
Wenn die Installion beendet ist, führen Sie modprobe nvidia aus, um das
Kernelmodul in den Speicher zu laden. Falls dies ein Update ist, sollten Sie
die vorherige Modul erst entfernen.
Befehlsauflistung 3.10: Laden des Kernelmoduls |
# lsmod | grep nvidia && rmmod nvidia
# modprobe nvidia
|
Um zu verhindern, dass Sie das Modul bei jedem Systemstart manuell laden müssen,
möchten Sie vielleicht, dass dies automatisch beim Booten Ihres Systems
geschieht. Editieren Sie dazu /etc/modules.autoload.d/kernel-2.6
und fügen Sie nvidia hinzu. Vergessen Sie nicht, danach
update-modules auszuführen.
Wichtig:
Wenn Sie agpgart als Modul kompiliert haben, werden Sie es zu
/etc/modules.autoload.d/kernel-2.6 hinzufügen müssen.
|
Befehlsauflistung 3.11: Ausführen von update-modules |
# update-modules
|
Den X-Server konfigurieren
Wenn die passenden Treiber einmal installiert sind, müssen Sie Ihren X-Server
konfigurieren, damit er den nvidia Treiber, anstatt des Standard
nv Treibers, verwendet.
Öffnen Sie /etc/X11/xorg.conf mit Ihrem Lieblingseditor
(wie nano oder vim) und gehen Sie zum Device Abschnitt.
In diesem Abschnitt ändern Sie die Driver Zeile:
Befehlsauflistung 3.12: Ändern von nv zu nvidia in der X-Server Konfiguration |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
VideoRam 65536
EndSection
|
Dann gehen Sie zum Module Abschnitt und stellen sicher, dass das
glx Modul geladen wird, während das dri Modul nicht geladen wird:
Befehlsauflistung 3.13: Aktualisieren des Modul Abschnitts |
Section "Module"
# Load "dri"
Load "glx"
EndSection
|
Stellen Sie danach sicher, dass im Abschnitt Screen die
DefaultDepth Einstellung auf 16 oder 24 gesetzt ist, oder dass Sie nur
Display Unterabschnitte haben, dessen Depth auf 16 oder 24
gesetzt ist. Ohne dies werden die nVidia GLX Erweiterungen nicht starten.
Befehlsauflistung 3.14: Aktualisieren des Screen Abschnitts |
Section "Screen"
DefaultDepth 16
Subsection "Display"
EndSection
|
Führen Sie eselect aus, damit der X-Server die GLX-Bibliotheken
von nVidia verwendet:
Befehlsauflistung 3.15: Ausführen von eselect |
# eselect opengl set nvidia
|
Hinzufügen von Benutzern zur Gruppe video
Sie müssen Ihren Benutzer zur Gruppe video hinzufügen, damit er Zugriff
auf die nVidia-Gerätedateien hat:
Befehlsauflistung 3.16: Hinzufügen Ihres Benutzers zur Gruppe video |
# gpasswd -a Ihr_User video
|
Es mag nicht absolut notwendig sein, wenn Sie kein udev verwenden aber
es kann auch nicht schaden und macht Ihr System zukunftssicher.
Testen Ihrer Karte
Um Ihre nvidia Karte zu testen, starten Sie X und führen glxinfo, welches
Teil des mesa-progs Pakets ist, aus. Es sollte ausgeben, dass
Direct Rendering aktiviert ist:
Befehlsauflistung 3.17: Testen des Status von direct rendering |
$ glxinfo | grep direct
direct rendering: Yes
|
Um Ihre FPS anzuzeigen, führen Sie glxgears aus.
NVidia-Unterstützung aktivieren
Einige Tools, wie mplayer und xine-lib, verwenden ein lokales
USE-Flag, das "xvmc" heißt. Es aktiviert die Unterstützung für XvMCNVIDIA,
hilfreich beim Abspielen von hochaufgelösten Videos. Fügen Sie "xvmc" zu
Ihrer USE-Variable in /etc/make.conf hinzu oder als USE-Flag zu
media-video/mplayer und/oder media-libs/xine-lib in
/etc/portage/package.use hinzu.
Es gibt auch einige Anwendungen, die das USE-Flag nvidia benutzen. Aus
diesem Grund möchten Sie dieses vielleicht auch zu Ihrer
/etc/make.conf hinzufügen.
Dann führen Sie emerge -uD --newuse world aus, um die Anwendungen neu zu
bauen, die von der Änderung des USE-Flags profitieren würden.
Das NVidia Settings Tool verwenden
nVidia stellt auch ein Tool für Einstellungen bereit. Dieses Tool erlaubt es
Ihnen, Grafikeinstellungen zu ändern ohne den X Server neu zu starten und ist
durch media-video/nvidia-settings in Portage verfügbar. Wie bereits
erwähnt, wird dieses automatisch einbezogen, wenn Sie die Treiber mit gesetztem
gtk USE-Flag in /etc/make.conf oder in
/etc/portage/package.use installieren.
4.
Fehlerbehebung
2D auf Maschinen mit 4GB Speicher oder mehr zum Laufen bekommen
Wenn Sie Probleme mit der nVidia Beschleunigung von 2D-Anwendungen haben, ist es
wahrscheinlich, dass Sie nicht in der Lage sind, einen Bereich für
write-combining mittels MTRR einzurichten. Um das zu überprüfen, sehen Sie
sich den Inhalt von /proc/mtrr an:
Befehlsauflistung 4.1: Überprüfen, ob write-combining aktiviert ist |
# cat /proc/mtrr
|
Jede Zeile sollte "write-back" oder "write-combining" enthalten. Wenn Sie eine
Zeile mit "unreachable" darin sehen, müssen Sie eine Einstellung im BIOS
ändern, um das zu beheben.
Booten Sie neu und gehen Sie ins BIOS. Suchen Sie dann die MTRR-Einstellungen
(evtl. unter "CPU Settings"). Ändern Sie diese Einstellung von "continuous" zu
"discrete" und booten Sie wieder Linux. Sie werden nun keine "uncachable"
Einträge mehr finden und die 2D Beschleunigung sollte ohne Probleme
funktionieren.
Wenn ich versuche das Kernelmodul zu laden, erhalte ich ein "no such device"
Dies tritt normalerweise auf, wenn Sie keine passende Grafikkarte haben.
Stellen Sie sicher, dass Sie eine nVidia-basierte Grafikkarte haben. Sie können
dies mit lspci überprüfen.
Wenn Sie sicher sind, dass Sie eine nVidia-Karte besitzen, sollten Sie Ihr
BIOS überprüfen und schauen ob die Anweisung Assign IRQ to VGA gesetzt
ist.
5.
Expertenkonfiguration
Dokumentation
Das nVidia Treiberpaket kommt auch mit einer umfassenden Dokumentation. Diese
ist unter /usr/share/doc installiert und kann mit folgendem Befehl
betrachtet werden:
Befehlsauflistung 5.1: Betrachten der NVIDIA-Dokumentation |
$ less /usr/share/doc/nvidia-drivers-*/REAMDE.gz
|
Kernelmodul Parameter
Das nvidia Kernelmodul akzeptiert eine Reihe von Parametern (Optionen)
die Sie nutzen können um das Verhalten des Treibers zu optimieren. Die meisten
sind in der Dokumentation aufgeführt. Um die Werte dieser Parameter hinzuzufügen
oder zu verändern bearbeiten Sie die Datei /etc/modules.d/nvidia.
Vergessen Sie nicht update-modules nach Veränderungen an dieser Datei
auszuführen und bedenken Sie, dass Sie das nvidia Modul neu laden müssen
bevor die neuen Einstellungen Wirkung zeigen.
Befehlsauflistung 5.2: Einstellen der nVidia Optionen |
# nano -w /etc/modules.d/nvidia
# update-modules
# modprobe -r nvidia
# modprobe nvidia
|
Erweiterte X-Konfiguration
Der GLX-Layer hat eine Fülle von Optionen, die konfiguriert werden können. Diese
kontrollieren die Einstellungen des TVAusgangs, Dual Display, Monitor Frequenz
Erkennung, usw. Wie erwähnt, alle verfügbaren Optionen sind detailliert in der
Dokumentation.
Wenn Sie wünschen eine dieser Optionen zu nutzen, müssen Sie sie in dem
entsprechenden Device Abschnitt Ihrer X Konfigurationsdatei eintragen
(normalerweise /etc/X11/xorg.conf). Zum Beispiel, angenommen man möchte
das Splash Logo deaktivieren:
Befehlsauflistung 5.3: Erweiterte nVidia-Konfiguration in der X-Konfiguration |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
Option "NoLogo" "true"
VideoRam 65536
EndSection
|
Die Inhalte dieses Dokuments sind unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert.
|