• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Problem mit Intel GraKa und Nvidia Optimus

towo

Moderator
Teammitglied
Wenn Du mal ins X-Logfile guckst, wist Du sehen, daß da wieder Nvidia-GLX geladen wird. So kann auch kein 3D auf der Intel-GPU funktieren.
 
Okay, aber das ist ja immerhin ein ziemlich konkreter Punkt, den es zu beheben gilt.
Hier nochmal ein aktuelles X-Logfile:
http://pastebin.com/Vk25NkJs

Da ist zum einen
Code:
Failed to load /usr/lib64/xorg/modules/libglamoregl.so: /usr/lib64/xorg/modules/libglamoregl.so: undefined symbol: _glapi_tls_Context
Was mit einem update gefixt sein sollte, ist es aber nicht; bzw. das Seltsame ist, dass
Code:
readelf -s /usr/lib64/libglapi.so.0 | grep _glapi_tls_Context
26: 0000000000000008     8 TLS     GLOBAL DEFAULT   18 _glapi_tls_Context
mir bestätigt, dass jenes Symbol halt eigentlich vorhanden ist.

Außerdem kommt das nvidia glx wohl von
Code:
Loading /usr/lib64/xorg/modules/extensions/libglx.so

Damit hab ich mich jetzt etwas mehr befasst: Die Datei ist ein Link auf libglx.so.304.51 im gleichen Verzeichnis. Das kommt natürlich von der nvidia Installation.
Dabei wurde die ursprünglich schon vorhandene Datei libglx.so einfach überschrieben (kam davor aus dem xorg Paket). Also dacht ich mir, ich backupe die Datei mal und spiele die ursprüngliche wieder drauf. Dann wird nvidia glx vielleicht nicht geladen (was auch immer das später für Konsequenzen für die nvidia 3D Beschleunigung hätte) und stattdessen funktioniert der Intel Treiber richtig. Hat aber leider nicht das gewünschte Ergebnis gebracht. Ich teste das ganz gerne mit der glxgears Anwendung:

mit von nvidia treiber überschriebener libglx.so:
Code:
glxgears 
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual

Code:
optirun glxgears 
4361 frames in 5.0 seconds = 872.021 FPS

mit ursprünglicher libglx.so:
Code:
glxgears 
Xlib:  extension "NV-GLX" missing on display ":0".
X Error of failed request:  BadAlloc (insufficient resources for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Serial number of failed request:  23
  Current serial number in output stream:  24
Interessant, dass die Intel Karte hier NV-GLX vermisst.


Code:
optirun glxgears 
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  154 (NV-GLX)
  Minor opcode of failed request:  4 ()
  Resource id in failed request:  0x200002
  Serial number of failed request:  37
  Current serial number in output stream:  37
 
Sieh dir mal folgendes an:

http://de.opensuse.org/SDB:NVIDIA_Bumblebee
http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/469419-opensuse-12-1-optimus-laptop.html
 
Danke für die Links. Leider hat mir
im Endeffekt nicht viel Neues erbracht.
ist dagegen recht interessant aber leider auch sehr frustrierend, weil viele schreiben, wie toll es bei ihnen mit dem guide geklappt hat; nur ein paar Beschreiben genau dieselben Probleme wie ich und genau für die wird leider wieder keine Lösung gefunden :-(

Entscheidend scheint dieser Tipp zu sein:
mkdir -p /usr/lib64/nvidia/xorg/modules/updates/extensions
mv /usr/X11R6/lib64/libGL* /usr/lib64/nvidia/
mv /usr/lib64/xorg/modules/updates/extensions/libglx* /usr/lib64/nvidia/xorg/modules/updates/extensions/
mkdir -p /usr/lib/nvidia
mv /usr/X11R6/lib/libGL* /usr/lib/nvidia
Für alle drei mv Befehle bekomm ich aber die Meldung, "[...] nicht möglich: Datei oder Verzeichnis nicht gefunden"
Ich hab auch noch mal das probiert:
At this point we broken the Intel/Mesa driver and this is how I fixed it
Code:
zypper in --force Mesa xorg-x11 xorg-x11-driver-video xorg-x11-driver-video-intel-legacy xorg-x11-libX11 xorg-x11-server

reboot
Aber auch dadurch sind die Dateien/Verzeichnisse nicht erschienen.

Auf Seite 3/3 dann:
This worked for me! Thx a lot!
But I had to change somethings: instead of moved, i copied. And some folder were differents.

Check below.
Code:
mkdir -p /usr/lib64/nvidia/xorg/modules/updates/extensions
cp /usr/X11R6/lib64-nvidia/libGL* /usr/lib64/nvidia/
cp /usr/lib64/xorg-nvidia/modules/updates/extensions/libglx* /usr/lib64/nvidia/xorg/modules/updates/extensions/
mkdir -p /usr/lib/nvidia
cp /usr/X11R6/lib-nvidia/libGL* /usr/lib/nvidia
Auch das hat aber bei mir nicht funkioniert.

Code:
DRIVER=nvidia
in /etc/bumblebee/bumblebee.conf
hab ich natürlich übrigens schon lange eingestellt.
 
Welche Bumblebee Version hast du installiert? Füge mal das Repo http://download.opensuse.org/repositories/home:/Bumblebee-Project:/Bumblebee/openSUSE_12.2/ zu deiner Repo Liste hinzu und aktualisiere anschließend die Pakete. Du musst auf jeden Fall auch die Virtualgl Libs installieren.
 
Also vorher hatte ich die Version aus diesem Repo: http://download.opensuse.org/repositories/home:/Overman79/openSUSE_12.2/, nämlich bumblebee 3.0 im Vergleich zu Version 2.4 aus dem Repo, das ich jetzt auf deinen Vorschlage eingebunden hab. VirtualGL hatte ich installiert (wurde automatisch mitgezogen).

Ja jedenfalls funktioniert die Intel GPU immer noch nicht richtig.
Code:
glxgears 
Xlib:  extension "NV-GLX" missing on display ":0".
X Error of failed request:  BadAlloc (insufficient resources for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Serial number of failed request:  23
  Current serial number in output stream:  24

Aber auch die nvidia GPU will jetzt nicht mehr
Code:
optirun glxgears 
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  154 (NV-GLX)
  Minor opcode of failed request:  4 ()
  Resource id in failed request:  0x200002
  Serial number of failed request:  37
  Current serial number in output stream:  37
 
Poste mal die Ausgabe von
Code:
ps -eaf | grep bumblebeed
. Was sagt den das Logfile vom bumblebeed? Ist dein User auch Mitglied der Gruppe bumblebee?
 
Code:
nox@chrisbook:$ ps -eaf | grep bumblebeed
nox       2995  2982  0 19:51 pts/1    00:00:00 grep --color=auto bumblebeed
Ja ich bin Mitglied in der bumblebee Gruppe. Darauf wird man sogar beim Ausführen hingewiesen, falls das nicht der Fall sein sollte. Interessanterweise wurde nämlich beim Wechsel der bumblebee Version die Gruppe gelöscht und ich musste sie dann erst wieder neu anlegen.

/var/log/bumblebee.log (anscheinend kann er X nicht starten oder so?)
Code:
[    888.50] Bumblebee log started at Sun, 30 Sep 2012 15:16:18 +0200
[    888.51] Creating fifo /var/run/bumblebee.fifo for communication...
[    888.52] Making FIFO writable for members of group bumblebee
[    888.53] Power management is disabled, not disabling card on start.
[    888.53] Waiting for orders
[    898.29] Optirun start request received.
[    898.29] Checking for X server availability before starting X...
[    898.30] X server is not started
[    898.31] Power management is disabled, only loading driver
[    898.41] rmmod /lib/modules/3.5.4-1-desktop/kernel/drivers/video/nvidia.ko
[    898.41] Starting X using nouveau...
[    898.42] Waiting for X server to become available...
[    898.46] The Bumblebee X server failed to start. Please check /var/log/Xorg.8.log
[    898.46] Waiting for orders
[   1175.86] Checking for X server availability before stopping it...
[   1175.87] The X server has not started or the pidfile is invalid.
[   1175.87] X is stopped.
[   1175.87] Power management is disabled, not unloading driver
[   1175.88] Power management is disabled, card already enabled.
[   1175.89] Bumblebee log ended on Sun, 30 Sep 2012 15:21:05 +0200
[     41.97] Bumblebee log started at Sun, 30 Sep 2012 15:22:09 +0200
[     41.98] Creating fifo /var/run/bumblebee.fifo for communication...
[     41.98] Making FIFO writable for members of group bumblebee
[     41.99] Power management is disabled, not disabling card on start.
[     42.00] Waiting for orders
[     49.12] Optirun start request received.
[     49.12] Checking for X server availability before starting X...
[     49.13] X server is not started
[     49.13] Power management is disabled, only loading driver
[     49.20] 
[     49.20] Starting X using nvidia...
[     49.21] Waiting for X server to become available...
[     50.70] X needed 0 retries to become ready
[     50.70] X has started.
[     50.71] Waiting for orders
[     50.85] Waiting for orders
[    153.41] Checking for X server availability before stopping it...
[    153.46] X is stopped.
[    153.46] Power management is disabled, not unloading driver
[    153.47] Power management is disabled, card already enabled.
[    153.48] Bumblebee log ended on Sun, 30 Sep 2012 15:24:01 +0200
[   4950.17] Bumblebee log started at Sun, 30 Sep 2012 20:54:35 +0200
[   4950.18] Creating fifo /var/run/bumblebee.fifo for communication...
[   4950.19] Making FIFO writable for members of group bumblebee
[   4950.20] Power management is disabled, not disabling card on start.
[   4950.20] Waiting for orders
[   4984.52] Optirun start request received.
[   4984.53] Checking for X server availability before starting X...
[   4984.53] X server is not started
[   4984.54] Power management is disabled, only loading driver
[   4984.60] 
[   4984.61] Starting X using nvidia...
[   4984.61] Waiting for X server to become available...
[   4986.13] X needed 0 retries to become ready
[   4986.14] X has started.
[   4986.14] Waiting for orders
[   4986.27] Waiting for orders
[   5692.16] Checking for X server availability before stopping it...
[   5692.22] X is stopped.
[   5692.22] Power management is disabled, not unloading driver
[   5692.23] Power management is disabled, card already enabled.
[   5692.24] Bumblebee log ended on Sun, 30 Sep 2012 21:06:57 +0200
[     79.83] Bumblebee log started at Sun, 30 Sep 2012 21:08:40 +0200
[     79.84] Creating fifo /var/run/bumblebee.fifo for communication...
[     79.85] Making FIFO writable for members of group bumblebee
[     79.85] Power management is disabled, not disabling card on start.
[     79.86] Waiting for orders
[     84.99] Optirun start request received.
[     85.00] Checking for X server availability before starting X...
[     85.00] X server is not started
[     85.01] Power management is disabled, only loading driver
[     85.07] 
[     85.07] Starting X using nvidia...
[     85.08] Waiting for X server to become available...
[     85.09] The Bumblebee X server failed to start. Please check /var/log/Xorg.8.log
[     85.09] Waiting for orders
[   1573.48] Bumblebee log started at Mon, 01 Oct 2012 19:54:38 +0200
[   1573.49] Creating fifo /var/run/bumblebee.fifo for communication...
[   1573.50] Making FIFO writable for members of group bumblebee
[   1573.50] Power management is disabled, not disabling card on start.
[   1573.51] Waiting for orders
[   1578.54] Optirun start request received.
[   1578.54] Checking for X server availability before starting X...
[   1578.55] X server is not started
[   1578.56] Power management is disabled, only loading driver
[   1578.62] 
[   1578.62] Starting X using nvidia...
[   1578.63] Waiting for X server to become available...
[   1578.64] The Bumblebee X server failed to start. Please check /var/log/Xorg.8.log
[   1578.65] Waiting for orders
 
Code:
The Bumblebee X server failed to start. Please check /var/log/Xorg.8.log

Poste mal bitte die Ausgabe von
Code:
egrep "EE|WW" /var/log/Xorg.0.log

und anschließend die Ausgabe von
Code:
egrep "EE|WW" /var/log/Xorg.8.log
 
Sorry, ich habe irgendwie nicht mitbekommen, dass nochmal jemand geantwort hatte :eek:ps:
Hab das Thema dann einfach erstmal für mich ruhen lassen; es jetzt aber noch mal probiert.
Und ich muss sagen: Ich bin begeistert! Es funktioniert. :D
D.h. standardmäßig läuft die Intel Karte, die jetzt einwandrei inklusive 3D funktioniert. Bei größer Belastung schaltet sich die Nvidia Karte automatisch ein (funktioniert auch wunderbar mit 3D) und dann auch wieder ab.

Habe mich diesmal von Anfang an strikt an diese offizielle Anleitung für openSUSE gehalten:
http://de.opensuse.org/SDB:NVIDIA_Bumblebee

Dabei ist es besonders wichtig, dass man genau die folgenden Repositories benutzt (da sich vor allem die verschiedenen bumblebee Versionen doch stark unterscheiden - teilweise arbeiten sie mit bbswitch zusammen, teilweise nicht; teilweise existiert das Executable bumblebeed (man beachte das 'd') nicht):
Nvidia Treiber: http://download.opensuse.org/repositories/home:/Bumblebee-Project:/nVidia:/latest/ (nicht etwas aus dem offiziellen Nvidia Repository)
Bumblebee: http://download.opensuse.org/repositories/home:/tuoma:/Bumblebee/ (nicht etwa von home:/Bumblebee-Project: von wo man sich den nvidia Treiber holt)

Von den empfohlenen Änderungen in /etc/bumblebee/bumblebee.conf und /etc/bumblebee/xorg.conf.nvidia sind eigentlich keine mehr nötig, außer dass man in bumblebee.conf driver=nvidia schreibt, so man nicht den nouveau Treiber benutzen will.
 
Oben