Ich habe eine Lösung zur Frage, wie man auf einem Optimus-Notebook die Nvidia-Karte sinnvoll verwenden kann, und eine Frage dazu, namlich ob jemand mir erklären kann, was die Datei, die unten abgedruckt ist, überhaupt macht. Also:
Bei manchen Optimus-Notebooks ist der Display Port nur mit der Nvidia-GPU verbunden. Über die Intel-GPU auf dem Mainboard kann man nicht auf den Display Port zugreifen.
Dies schränkt den Nutzen von Optimus unter Linux deutlich ein. Bumblebee kann den Display Port nicht ansteuern. Der Display Port ist aber sehr nützlich, wenn man eine großen externen Schirm betreiben will, beispielsweise für eine Präsentation.
Im Normalbetrieb brauche ich weder die Nvidia-Karte noch den Display Port. Bei besonderen Gelegenheiten aber beide.
Das BIOS der Thinkpads (in meinem Fall ein T420s) bietet folgende Möglichkeiten:
Dazu kann man das BIOS vorher noch prüfen lassen, ob das OS überhaupt mit Optimus etwas anfangen kann.
Die Frage war, ob ich openSuse 12.3 (64-bit) so einrichten kann, dass je nach Einstellung im BIOS entweder nur die Intel-GPU läuft oder nur die Nvidia-Karte.
Es geht. Bei der Installation von openSuse 12.3 auf dem Rechner wird ja zunächst mal kein Nvidia-Treiber berücksichtigt. Wenn man also im BIOS auf die interne Graphik schaltet, sollte die Nvidia-Karte ganz abgeschaltet sein, was die Laufzeit des Akkus drastisch erhöht.
Um die Nvidia-Karte zu installieren, installiert man vom Nvidia-repo (nicht von Bumblebee, nicht von Overman79, in meinem Fall also http://download.nvidia.com/opensuse/12.3/) den zum Kernel passenden Treiber. Das Nvidia-repo bietet da nur eine beschränkte Auswahl, also muss man ggf. einen älteren Kernel auch noch installieren (Stichwort: "multiple kernels"). Ich habe drei Pakete installiert:
OK, ich habe wohl irgendwann mal den Nvidia-Treiber direkt installiert auf der Kommandozeile mit sh ./NVIDIA...run . Das hat den X-Server etwas beeinträchtigt, so dass ich Xorg-X11-server neu installiert habe und sicherheitshalber auch noch viele andere Pakete von X und Mesa.
Das Problem ist, dass sich Intel und Nvidia trotzdem in die Quere kommen und z.B. beim Betrieb auf der Intel-GPU keine 3D Beschleunigung funktioniert. Abhilfe brachte ein kleines Script, das jemand im openSuse-Forum kurz vor dessen Absturz veröffentlichte und dass ich in /etc/boot.local aufgenommen habe (Achtung: 64-bit Variante!):
Leider hat der Crash des Forums die Variante für 32-bit weggerissen, die ich nicht kopiert hatte.
Ich kann nun arbeiten mit der Intel-GPU, der Rechner ist leise und sparsam. Wenn ich unbedingt mal den Display-Port und die Nvidia-Karte brauche, stelle ich im BIOS um.
Kann mir jemand erklären, was der Code oben macht, und warum das notwendig ist?
Bei manchen Optimus-Notebooks ist der Display Port nur mit der Nvidia-GPU verbunden. Über die Intel-GPU auf dem Mainboard kann man nicht auf den Display Port zugreifen.
Dies schränkt den Nutzen von Optimus unter Linux deutlich ein. Bumblebee kann den Display Port nicht ansteuern. Der Display Port ist aber sehr nützlich, wenn man eine großen externen Schirm betreiben will, beispielsweise für eine Präsentation.
Im Normalbetrieb brauche ich weder die Nvidia-Karte noch den Display Port. Bei besonderen Gelegenheiten aber beide.
Das BIOS der Thinkpads (in meinem Fall ein T420s) bietet folgende Möglichkeiten:
- Interne Graphik = Intel GPU
- Externe Graphik = Nvidia GPU
- Optimus = Optimus entscheidet, welche GPU verwendet wird
Dazu kann man das BIOS vorher noch prüfen lassen, ob das OS überhaupt mit Optimus etwas anfangen kann.
Die Frage war, ob ich openSuse 12.3 (64-bit) so einrichten kann, dass je nach Einstellung im BIOS entweder nur die Intel-GPU läuft oder nur die Nvidia-Karte.
Es geht. Bei der Installation von openSuse 12.3 auf dem Rechner wird ja zunächst mal kein Nvidia-Treiber berücksichtigt. Wenn man also im BIOS auf die interne Graphik schaltet, sollte die Nvidia-Karte ganz abgeschaltet sein, was die Laufzeit des Akkus drastisch erhöht.
Um die Nvidia-Karte zu installieren, installiert man vom Nvidia-repo (nicht von Bumblebee, nicht von Overman79, in meinem Fall also http://download.nvidia.com/opensuse/12.3/) den zum Kernel passenden Treiber. Das Nvidia-repo bietet da nur eine beschränkte Auswahl, also muss man ggf. einen älteren Kernel auch noch installieren (Stichwort: "multiple kernels"). Ich habe drei Pakete installiert:
- nvidia-computeG03
- nvdia-gfxG03-kpm-desktop
- x11-video-nvidiaG03
OK, ich habe wohl irgendwann mal den Nvidia-Treiber direkt installiert auf der Kommandozeile mit sh ./NVIDIA...run . Das hat den X-Server etwas beeinträchtigt, so dass ich Xorg-X11-server neu installiert habe und sicherheitshalber auch noch viele andere Pakete von X und Mesa.
Das Problem ist, dass sich Intel und Nvidia trotzdem in die Quere kommen und z.B. beim Betrieb auf der Intel-GPU keine 3D Beschleunigung funktioniert. Abhilfe brachte ein kleines Script, das jemand im openSuse-Forum kurz vor dessen Absturz veröffentlichte und dass ich in /etc/boot.local aufgenommen habe (Achtung: 64-bit Variante!):
Code:
mode=$(/sbin/lspci | grep VGA);#Make shure we are in command of /usr/X11R6/lib
if [ -e /etc/ld.so.conf.d/nvidia-gfxGO3.conf ]; then
/bin/rm /etc/ld.so.conf.d/nvidia-gfxGO3.conf
fi
#Check graphics mode and take apropriate action
if [ `echo $mode | grep -c "Intel" ` -gt 0 ]; then
if [ -e /usr/lib64/xorg/modules/updates/extensions/libglx.so ]; then
/bin/rm /usr/lib64/xorg/modules/updates/extensions/libglx.so
fi
if [ -e /usr/X11R6/lib/libGL.so.1 ]; then
/bin/rm /usr/X11R6/lib/libGL.so.1
/bin/rm /usr/X11R6/lib64/libGL.so.1
fi
#Else we must be in Nvidia mode
else
/bin/ln -s /usr/lib64/xorg/modules/updates/extensions/libglx.so.* /usr/lib64/xorg/modules/updates/extensions/libglx.so
/sbin/ldconfig /usr/X11R6/lib
/sbin/ldconfig /usr/X11R6/lib64
fi
Leider hat der Crash des Forums die Variante für 32-bit weggerissen, die ich nicht kopiert hatte.
Ich kann nun arbeiten mit der Intel-GPU, der Rechner ist leise und sparsam. Wenn ich unbedingt mal den Display-Port und die Nvidia-Karte brauche, stelle ich im BIOS um.
Kann mir jemand erklären, was der Code oben macht, und warum das notwendig ist?