22.4Grafiktreiber (AMD, NVIDIA & Co.)
Dieser Abschnitt gibt Tipps zur Installation und Konfiguration der Grafiktreiber für AMD-, Intel- und NVIDIA-Grafikkarten bzw. Grafikchips. Er endet mit einer kurzen Beschreibung der VESA-, Framebuffer- und VGA-Treiber, die als Notlösung verwendet werden können, wenn es keinen besser geeigneten Treiber gibt (z.B. für manche VIA-Grafikchips).
Lesetipp
Wenn in diesem Kapitel von Grafiktreibern die Rede ist, dann ist das eigentlich eine grobe Vereinfachung. Egal, welches Grafiksystem im Spiel ist – jeder Treiber besteht in Wirklichkeit aus vielen Komponenten (Treibern), die Teilaufgaben übernehmen und miteinander und mit dem Kernel verzahnt sind. Thorsten Leemhuis hat für die Zeitschrift c't 23/2014 einen ausführlichen Artikel verfasst, der diese Komponenten vorstellt und deren Zusammenspiel in vielen technischen Details erläutert. Der achtseitige Artikel ist über die folgende Adresse zugänglich (kostenpflichtig):
AMD-Treiber
Für aktuelle AMD-Grafikkarten stehen zwei Treiber zur Wahl:
-
radeon ist der in X.org integrierte Open-Source-Treiber für aktuelle AMD-Grafikkarten mit einem Radeon-Grafikchip. Der Treiber ist grundsätzlich zu fast allen momentan verfügbaren Radeon-Chips kompatibel. Der Treiber bietet eine gute 3D-Unterstützung.
-
fglrx ist der Binärtreiber der Firma AMD für Radeon-Modelle ab R600. Der Treiber unterstützt bei neuen Grafikkarten mehr Funktionen als radeon, ist allerdings inkompatibel zu älteren Modellen.
AMD hat in den letzten Jahren einzelne Komponenten des proprietären fglrx-Treibers als Open-Source-Code freigegeben (Projekt amdgpu). Diese Komponenten dienen als gemeinsame Basis für neue Versionen von fglrx und radeon. In Zukunft sollen weitere Bausteine des Treibers unter einer Open-Source-Lizenz veröffentlicht werden, um so die beiden Treiber so weit wie möglich zusammenzuführen. Aktuelle Details zur Treiberentwicklung bei AMD können Sie hier nachlesen:
http://www.x.org/wiki/Events/XDC2015/Program/deucher_zhou_amdgpu.pdf
radeon-Treiber
Der radeon-Treiber ist Teil des X.org-Systems, eine separate Installation ist daher nicht notwendig. Die folgenden Zeilen zeigen eine minimale Konfiguration in xorg.conf:
Diverse Spezialfunktionen der Grafikkarte können durch unzählige Optionen gesteuert werden, die Sie mit man radeon nachlesen können. Im Regelfall sind diese Optionen aber nicht erforderlich.
fglrx-Treiber
fglrx ist der Binärtreiber der Firma AMD für Grafikkarten mit AMD-Chips (ehemals ATI). Da der Treiber nicht auf Open-Source-Code basiert, ist er bei den meisten Distributionen nicht enthalten und muss extra installiert werden. Je nach Distribution steht der Treiber entweder in den üblichen Paketquellen oder in einer nichtoffiziellen externen Paketquelle zur Verfügung. Details zur Treiberinstallation sind für einige Distributionen in Kapitel 3, »Installationsanleitungen«, zusammengefasst.
Normalerweise erkennt X den Treiber beim nächsten Neustart automatisch. Nur in Ausnahmefällen müssen Sie xorg.conf einrichten bzw. verändern. Dabei hilft das Kommando aticonfig --initial, das Sie mit root-Rechten ausführen müssen. Es verändert xorg.conf so, dass statt des bisher eingestellten Treibers der fglrx-Treiber zum Einsatz kommt. Im einfachsten Fall enthält der Device-Abschnitt nur zwei Zeilen:
aticonfig hilft auch beim Einrichten komplexerer Konfigurationen, beispielsweise für die gleichzeitige Nutzung mehrerer Monitore (aticonfig --initial=dual-head). Einen Syntaxüberblick sowie mehrere Beispiele liefert aticonfig, wenn Sie das Kommando ohne weitere Parameter aufrufen. Eine systematische Dokumentation der zahlreichen Optionen scheint es aber nicht zu geben. Die neue xorg.conf-Datei wird wie üblich erst nach einem X-Neustart wirksam.
Die 3D-Funktionen der Grafikkarte lassen sich nur nutzen, wenn das Kernelmodul fglrx geladen ist. Normalerweise kümmert sich der ATI-Treiber darum selbst. Ob das Kernelmodul tatsächlich aktiv ist, stellen Sie am einfachsten mit lsmod | grep fglrx fest. Wurde das Modul nicht geladen, ist es wahrscheinlich nicht installiert bzw. nicht kompatibel zur aktuellen Kernelversion. Abhilfe schafft ein Update des betreffenden Pakets bzw. das Neukompilieren des Moduls. Das Kernelmodul ist nur für die 3D-Funktionen erforderlich. Der fglrx-Treiber funktioniert auch ohne das Kernelmodul, allerdings müssen dann die 3D-Funktionen per Software emuliert werden, was sehr langsam ist.
Nachträgliche Änderungen an der Konfiguration nehmen Sie entweder mit aticonfig oder mit der grafischen Oberfläche amdcccle vor (siehe unten).
Wenn es für Ihre Distribution keine fertigen Treiberpakete gibt oder wenn diese nicht ausreichend aktuell sind, müssen Sie selbst Hand anlegen. Dazu installieren Sie zuerst alle Entwicklungswerkzeuge, die zum Kompilieren von Kernelmodulen erforderlich sind (siehe Abschnitt 26.3, »Kernelmodule selbst kompilieren«). Anschließend laden Sie von der folgenden Webseite das für Ihre Grafikkarte und Ihre Distribution passende Installationsprogramm herunter (ca. 180 MByte):
http://support.amd.com/en-us/download
Dann packen Sie die ZIP-Datei aus und führen mit sh das Installationsprogramm aus:
Nun klicken Sie sich durch die Dialoge des grafischen Installationsprogramms. Unter Umständen weist der Assistent darauf hin, dass zur Treiberinstallation einzelne Pakete fehlen. In diesem Fall beenden Sie den Installer, werfen einen Blick in die Protokolldatei /usr/share/ati/fglrx-install.log und installieren zuerst die dort aufgelisteten Pakete. Danach starten Sie den AMD-Installer neuerlich.
Bei vielen Distributionen haben Sie die Wahl, die Treiber direkt zu installieren oder zuerst ein Treiberpaket für Ihre Distribution zu erzeugen und dieses dann zu installieren. Diese Variante ist etwas umständlicher, erleichtert aber die Wartung und ermöglicht eine spätere Deinstallation mit jedem beliebigen Paketverwaltungswerkzeug.
Bei meinen Tests hat der Installationsprozess mehrere Minuten gedauert, wobei der Fortschrittsbalken aber die ganze Zeit bei 0 stehen blieb. Wenn Sie sich für die Paketvariante entschieden haben, werden Sie gefragt, ob Sie das resultierende Paket im aktuellen Verzeichnis anschließend gleich installieren möchten. Zuletzt müssen Sie noch aticonfig ausführen, um xorg.conf dahingehend zu ändern, dass der fglrx-Treiber in Zukunft verwendet wird:
Beachten Sie, dass Sie das Installationsprogramm nach jedem Kernel-Update neuerlich ausführen müssen. Dabei wird das Kernelmodul fglrx neu kompiliert, damit es zu Ihrer jetzigen Kernelversion kompatibel ist.
Um den Treiber zu deinstallieren, führen Sie das folgende Kommando aus:
Wenn Sie sich für die Paketvariante entschieden haben, entfernen Sie alle Pakete, deren Namen mit fglrx beginnen, z.B. mit apt-get remove fglrx*. Außerdem müssen Sie /etc/X11/xorg.conf löschen.
Als komfortable Alternative zum AMD-eigenen Installer hat Sebastian Siebert für openSUSE das Script makerpm-ati entwickelt, das den Treiber automatisch herunterlädt und in ein openSUSE-kompatibles Paket verpackt, das Sie anschließend nur noch installieren müssen. Sie finden dieses Script hier:
http://de.opensuse.org/SDB:AMD/ATI-Grafiktreiber
Zur weiteren Konfiguration des fglrx-Treibers verwenden Sie am besten das Catalyst Control Center (Kommando amdcccle, siehe Abbildung 22.1). Dieses Programm ist komfortabler zu nutzen als aticonfig. Die meisten Einstellungen können mit gewöhnlichen Benutzerrechten vorgenommen werden. Die Einstellungen werden in Dateien des Verzeichnisses /etc/ati gespeichert. Lediglich die Konfiguration des Anzeigen-Managers, der unter anderem für Dual-Screen-Setups verantwortlich ist, erfordert den Start des Programms mit root-Rechten.
Abbildung 22.1AMD-Treiberkonfiguration
Intel-Treiber
Der Open-Source-Treiber intel ist kompatibel zu allen gängigen Intel-Chipsätzen. Die einzige Ausnahme waren die Grafikkerne GMA 500, 600, 3600 und 3650 (»Poulsbo«), die vor etlichen Jahren in manchen Netbooks zum Einsatz kamen und in einigen Atom-CPUs integriert waren. Allgemeine Informationen zum Intel-Treiber geben man intel sowie die folgende Website:
Da der Treiber offizieller Bestandteil von X ist, entfällt die mühsame Installation von Zusatzpaketen. Der Treiber erkennt die Hardware selbstständig, die explizite Einstellung von Optionen ist im Regelfall nicht notwendig.
Den neuesten Intel-Treiber installieren
Nicht immer ist der von Ihrer Distribution mitgelieferte Intel-Treiber auf dem aktuellsten Stand. Solange das Grafiksystem problemlos funktioniert, spielt das keine Rolle. Sollten Sie aber aus irgendeinem Grund den allerneuesten Intel-Grafiktreiber ausprobieren wollen, finden Sie unter https://01.org/linuxgraphics/downloads ein spezielles Setup-Programm für aktuelle Fedora- und Ubuntu-Versionen.
NVIDIA-Treiber
Wenn Sie eine NVIDIA-Grafikkarte nutzen, haben Sie die Wahl zwischen zwei Treibern:
-
nouveau ist ein Open-Source-Treiber, der auf fast allen gängigen Distributionen standardmäßig zum Einsatz kommt. Der Treiber funktioniert überwiegend gut, die korrekte Steuerung der Energiesparfunktionen bereitet aber bei vielen Modellen Probleme. Eine Matrix mit Details, welche Funktionen bei welchen Grafikchips funktionieren, finden Sie hier:
-
nvidia ist der Binärtreiber der Firma NVIDIA. Er unterstützt nahezu alle Funktionen aller aktuellen Grafikkarten.
Der nouveau-Treiber
Normalerweise erkennt der X.org-Server Intel-Grafikchips und aktiviert den nouveau-Treiber selbstständig. Sollte das nicht klappen, helfen die folgenden Zeilen in xorg.conf:
Es gibt nur relativ wenige Optionen, die in man nouveau beschrieben sind. Weitere Informationen finden Sie hier:
http://nouveau.freedesktop.org/wiki
Der NVIDIA-Treiber
Den proprietären NVIDIA-Treiber gibt es in zwei Varianten: Die offizielle Version unterstützt nur aktuelle Modelle, die Legacy-Versionen auch ältere Modelle. Für welche Grafikkarte welcher Treiber verwendet werden muss, ist auf der folgenden Seite dokumentiert:
http://www.nvidia.com/object/IO_32667.html
Der NVIDIA-Treiber und das gleichnamige Kernelmodul können aus rechtlichen Gründen nicht mit einer Distribution mitgeliefert bzw. sofort installiert werden. Häufig existieren aber Paketquellen, die zum gerade aktuellen Kernel passende Treiberpakete enthalten. Damit ist die Installation ein Kinderspiel: Nach dem Einrichten der Paketquelle wird der Treiber mit den üblichen Paketverwaltungskommandos installiert. Details zu diesem Prozess sind für einige Distributionen in Kapitel 3, »Installationsanleitungen«, zusammengefasst (siehe auch den Eintrag »nvidia-Treiber« im Stichwortverzeichnis).
Besonders komfortabel gelingt die Treiberinstallation unter Ubuntu: Dort führen Sie im Startmenü das Programm Software & Aktualisierung aus. Die für Ihr System passenden Treiber werden im Dialogblatt Zusätzliche Treiber aufgelistet (siehe Abbildung 22.2). Zur Aktivierung müssen Sie den Rechner neu starten.
Abbildung 22.2Installation des NVIDIA-Treibers unter Ubuntu
Zur Aktivierung des Treibers führen Sie als root das Kommando nvidia-xconfig aus. Es verändert xorg.conf so, dass statt des bisher eingestellten Treibers der nvidia-Treiber zum Einsatz kommt. Wenn Sie spezielle Konfigurationswünsche haben, übergeben Sie an nvidia-xconfig weitere Parameter, die in der man-Seite beschrieben sind. Im einfachsten Fall enthält der Device-Abschnitt nur zwei Zeilen:
Abbildung 22.3NVIDIA-Treiberkonfiguration
Der NVIDIA-Treiber ist inkompatibel mit der DRI-Erweiterung von X.org und realisiert diese Funktionen stattdessen selbst. Aus diesem Grund darf xorg.conf die Zeile Load "dri" nicht enthalten.
Sobald der NVIDIA-Treiber grundsätzlich läuft, setzen Sie zur weiteren Konfiguration das Programm nvidia-settings ein (siehe Abbildung 22.3). Es ermöglicht die unmittelbare Veränderung zahlreicher Optionen, also ohne X-Neustart. Wenn das Ergebnis zufriedenstellend ist, können Sie die Änderungen in xorg.conf speichern. Dabei müssen Sie dann das root- oder Ihr eigenes Passwort für sudo angeben.
Anders als bei AMD setzt der NVIDIA-Treiber das nvidia-Kernelmodul unbedingt voraus. Wenn das Kernelmodul fehlt bzw. wenn es für die falsche Kernelversion kompiliert wurde, funktioniert der Treiber überhaupt nicht und X kann nicht gestartet werden!
Wenn es für Ihre Distribution keine fertigen Treiberpakete gibt oder wenn diese Pakete nicht aktuell sind, müssen Sie den Treiber selbst installieren und insbesondere das Kernelmodul nvidia selbst kompilieren. Dazu installieren Sie zuerst alles, was notwendig ist, um Kernelmodule zu kompilieren (C-Compiler, make, Kernel-Header-Dateien etc. – siehe auch Abschnitt 26.3, »Kernelmodule selbst kompilieren«). Darüber hinaus benötigen Sie die Pakete xorg-x11-server-sdk bzw. xorg-dev sowie pkgconfig bzw. pkg-config.
Von der folgenden Webseite laden Sie das für Ihre Grafikkarte und die Architektur Ihrer Distribution (32 oder 64 Bit) passende Installationsprogramm herunter:
http://www.nvidia.com/Download/index.aspx
Anschließend beenden Sie X und starten dann als root das Installationsprogramm:
Wenn sich das Installationsprogramm darüber beklagt, dass der nouveau-Treiber aktiv ist, fügen Sie in die Datei /etc/modprobe.d/blacklist.conf die folgenden Zeilen ein, starten den Rechner dann neu und versuchen es noch einmal:
Das Installationsprogramm läuft im Textmodus, ist aber dialoggesteuert und komfortabel zu bedienen. Es testet zuerst, ob es für Ihre Kernelversion bereits ein vorkompiliertes nvidia-Kernelmodul auf der Website von NVIDIA gibt. Ist das nicht der Fall, wird ein passendes Kernelmodul kompiliert. Bei einigen Distributionen fragt das Installationsprogramm, ob DKMS (Dynamic Kernel Module Support) verwendet werden soll. Das ist zu empfehlen – dann kümmert sich nämlich das System darum, das NVIDIA-Kernelmodul nach jedem Kernel-Update zu aktualisieren.
Sofern alle Voraussetzungen erfüllt sind, dauert das Kompilieren circa eine Minute. Das Installationsprogramm installiert anschließend die NVIDIA-spezifischen libGL-Bibliotheken und führt nach einer Rückfrage das oben schon erwähnte Kommando nvidia-xconfig aus.
Ein ausführliches Protokoll aller durchgeführten Aktionen finden Sie in /var/log/nvidia-installer.log. Sofern keine Fehler aufgetreten sind, steht einem X-Neustart mit dem NVIDIA-Treiber nichts mehr im Wege.
Sofern Sie sich nicht für die DKMS-Installationsvariante entschieden haben, muss das NVIDIA-Installationsprogramm nach jedem Kernel-Update neuerlich ausgeführt werden. Dabei wird das Kernelmodul nvidia neu kompiliert, damit es zu Ihrer jetzigen Kernelversion kompatibel ist.
Um den Treiber zu deinstallieren, führen Sie das folgende Kommando aus. Dadurch wird die bisherige xorg.conf-Datei wiederhergestellt und das nvidia-Kernelmodul gelöscht, und es werden Links auf die originalen libGL-Bibliotheken eingerichtet.
VESA-, Framebuffer- und VGA-Treiber
Wenn Sie eine Grafikkarte nutzen, zu der es keine Treiber gibt, stellen die drei in diesem Abschnitt vorgestellten Treiber eine Notlösung dar. Auch wenn der Bildaufbau vergleichsweise langsam ist und natürlich keinerlei 3D-Funktionen zur Verfügung stehen, ermöglichen die Treiber zumindest überhaupt eine Nutzung des Grafiksystems.
Mit dem VESA-Treiber können Sie alle VESA-Modi Ihrer Grafikkarte nutzen. Kurz einige Hintergrundinformationen: Die Video Electronics Standard Association (VESA) hat eine Reihe von Grafikmodi für Standardauflösungen normiert. Jeder Modus ist durch die folgenden Eckdaten bestimmt: Auflösung (z.B. 1280×1024 Pixel), Farbtiefe und Bildfrequenz. Fast alle Grafikkarten unterstützen neben eigenen Grafikmodi auch eine Menge VESA-Modi.
Wie die nächsten Zeilen zeigen, ist die Verwendung des VESA-Treibers denkbar einfach. Sofern die restliche Konfigurationsdatei korrekt ist, werden alle VESA-Modi berücksichtigt, die die Grafikkarte unterstützt und die der Monitor darstellen kann.
Der fbdev-Treiber greift direkt auf den Speicher (Framebuffer) der Grafikkarte zu. Der Treiber setzt damit noch eine Ebene tiefer an als der VESA-Treiber. Er sollte mit fast allen Grafikkarten funktionieren, sofern der Linux-Kernel mit Framebuffer-Unterstützung kompiliert wurde. Dass diese Unterstützung vorhanden ist, erkennen Sie daran, dass die Datei /proc/fb existiert.
Eine grundlegende Voraussetzung für die Nutzung des Treibers besteht allerdings darin, dass bereits beim Booten des Rechners der richtige VGA-Modus ausgewählt wird. Bis zum Neustart des Rechners kann X nur in dem so festgelegten Grafikmodus betrieben werden. Zur Auswahl des Modus fügen Sie in die GRUB-Konfigurationsdatei die Kerneloption vga=n ein. Die richtigen Werte (dezimal) für n finden Sie in der folgenden Tabelle. Unter SUSE können Sie außerdem mit hwinfo --framebuffer eine Liste der Framebuffer-Modi ermitteln, die Ihre Grafikkarte unterstützt.
In xorg.conf müssen Sie lediglich die richtige Driver-Zeichenkette angeben:
Der vga-Treiber unterstützt nur 640×480 oder 800×600 Pixel bei einer Farbtiefe von 4 Bit (also 16 Farben) und ist somit nur die letzte Notlösung. Weitere Details finden Sie mit man vga.