ich habe so ein blödes T420s Notebook mit zwei GraKas: externe Nvidia, interne Intel. Ich habe aus dem Nvidia-repo den aktuellen Nvidia Treiber installiert. Der läuft auch, dann habe ich im BIOS wieder auf die Intel-GraKa umgestellt und gebootet.
Damit die richtigen Treiber verwendet werden, enthält meine boot.local folgende Zeilen:
mode=$(/sbin/lspci | egrep 'VGA|3D');
#Make shure we are in command of /usr/X11R6/lib
if -e /etc/ld.so.conf.d/nvidia-gfxGO*.conf ]; then
/bin/rm /etc/ld.so.conf.d/nvidia-gfxGO*.conf
fi
#Check graphics mode and take apropriate action
if `echo $mode | grep -c "Intel" ` -gt 0 ]; then
/usr/sbin/update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/xorg/xorg-libglx.so
fi
if -e /usr/X11R6/lib64/libGL.so.1 ]; then
/bin/rm /usr/X11R6/lib64/libGL.so.1
fi
if -e /usr/X11R6/lib/libGL.so.1 ]; then
/bin/rm /usr/X11R6/lib/libGL.so.1
fi
if `echo $mode | grep -c "NVIDIA" ` -gt 0 ]; then
/usr/sbin/update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/nvidia/nvidia-libglx.so
/sbin/ldconfig /usr/X11R6/lib64
/sbin/ldconfig /usr/X11R6/lib
fi
???
Wenn bei Intel die 3D Unterstützung fehlt, warum soll dann die Installation des Nvidia-Treibers zerschossen sein?
Funktionierts wenn du wieder nvidia aktivierst?
Poste mal die Ausgabe von “/sbin/lspci | egrep ‘VGA|3D’” um zu sehen ob die Grafikkarte überhaupt vom Skript richtig erkannt wird.
Und das Skript das du gepostet hast, ist unvollständig/fehlerhaft:
Es löscht einfach bedingungslos nvidia’s libGL. Damit wird auch bei nvidia kein 3D funktionieren.
Und das ist ebenfalls falsch:
#Make shure we are in command of /usr/X11R6/lib
if -e /etc/ld.so.conf.d/nvidia-gfxGO*.conf ]; then
/bin/rm /etc/ld.so.conf.d/nvidia-gfxGO*.conf
fi
Das hat keine Wirkung, es sollte 0 (die Ziffer) statt O (der Großbuchstabe) sein.
Dann sollten die "rm"s auch nicht notwendig sein. Aber ein Wechsel der libGLs fehlt immer noch.
Ich würde dir empfehlen, lieber mein Skript zu nehmen (das sollte alle Fehler/Unzulänglichkeiten dieses unvollständigen Skripts beheben), und halt den Teil der 20-nouveau.conf anlegt zu entfernen…
#Make sure we are in command of /usr/X11R6/lib
if -e /etc/ld.so.conf.d/nvidia-gfxGO*.conf ]; then
/bin/rm /etc/ld.so.conf.d/nvidia-gfxGO*.conf
fi
#Check graphics mode fix symlinks
if `grep -c "nouveau" /proc/cmdline` -gt 0 ]; then
update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/xorg/xorg-libglx.so
# use Mesa's libGL
ln -sf /usr/lib64/libGL.so.1.2.0 /usr/lib64/libGL.so.1
fi
if `grep -c "nouveau" /proc/cmdline` -eq 0 ]; then
update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/nvidia/nvidia-libglx.so
/sbin/ldconfig /usr/X11R6/lib64
# use nvidia's libGL
ln -sf /usr/X11R6/lib64/libGL.so.1 /usr/lib64/libGL.so.1
fi
Das sollte eigentlich funktionieren, aber ich habs nicht getestet. Du kannst den nvidia Treiber durch Hinzufügen von “nouveau” zur Kernel-Befehlszeile “deaktivieren”.
Automatich wie im alten Skript sollte auch möglich sein, die Änderung bekommst du aber vielleicht eh selber hin…
Ansonsten kann ich ja später noch was posten.
Du solltest aber den nvidia Treiber neu installieren (nvidia-glG0X zumindest), da das gepostete Skript deine Installation ja zerschossen hat.
Und eine Neuinstallation von Mesa-LibGL1 wäre zur Sicherheit auch empfehlenswert.
ich wäre Dir sehr dankbar, wenn Du das Script für boot.local lauffähig überarbeiten könntest, ich verstehe schlichtweg nichts von diesen Dingen.
Was aber nicht passieren sollte, ist, dass ich missverständlich schreibe. Meine Frage, was die Installation des Nvidia-Treibers zerschossen haben könnte, war so gemeint: Kann es sein, dass ich mit der Installation des Nvidia-Treibers die Funktionsfähigkeit des Intel-Treibers beeinträchtigt habe? Denn das Notebook läuft nun wieder mit der Intel-Graka und da habe ich eben nun meine Schwierigkeiten.
Du hast völlig recht: auch unter der Nvidia-GraKa lief kein 3D.
Also, die ganze Sache ist offenbar wackelig und vielleicht könntest Du mir ja weiterhelfen mit einer neuen Version von boot.local.
mode=$(/sbin/lspci | egrep 'VGA|3D');
#Make sure we are in command of /usr/X11R6/lib
if -e /etc/ld.so.conf.d/nvidia-gfxG0*.conf ]; then
/bin/rm /etc/ld.so.conf.d/nvidia-gfxG0*.conf
fi
#Check graphics mode fix symlinks
if `echo $mode | grep -c "Intel" ` -gt 0 ]; then
update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/xorg/xorg-libglx.so
# use Mesa's libGL
ln -sf /usr/lib64/libGL.so.1.2.0 /usr/lib64/libGL.so.1
fi
if `echo $mode | grep -c "NVIDIA" ` -gt 0 ]; then
update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/nvidia/nvidia-libglx.so
/sbin/ldconfig /usr/X11R6/lib64
# use nvidia's libGL
ln -sf /usr/X11R6/lib64/libGL.so.1 /usr/lib64/libGL.so.1
fi
Aber wie gesagt, nicht getestet.
Und momentan kümmert sich das nicht um die 32bit Bibliotheken, hat also für 32bit Software keine Wirkung. Das sollte aber problemlos hinzugefügt werden können falls notwendig…
Was aber nicht passieren sollte, ist, das ich missverständlich schreibe. Meine Frage, was die Installation des Nvidia-Treibers zerschossen haben könnte, war so gemeint: Kann es sein, dass ich mit der Installation des Nvidia-Treibers die Funktionsfähigkeit des Intel-Treibers beeinträchtigt habe? Denn das Notebook läuft nun wieder mit der Intel-Graka und da habe ich eben nun meine Schwierigkeiten.
Wenn du den Nvidia-Treiber installierst (das Paket nvidia-glG0X im speziellen), “zerstört” das die OpenGL-Unterstützung des Intel-Treibers, weil nvidia Systembibliotheken durch eigene Versionen ersetzt.
Das Skript sollte das “reparieren”.
Du hast völlig recht: auch unter der Nvidia-GraKa lief kein 3D.
Wie gesagt, das Skript hat dir nvidia’s libGL gelöscht.
Also nochmal, installiere nvidia-glG0X neu (ich gehe jetzt mal davon aus dass du den G03 Treiber benutzt, für G04 bitte selber entsprechend anpassen…)
sudo zypper in -f nvidia-glG03
Dann sollte Nvidia’s 3D eigentlich wieder funktionieren.
Und mit dem Skript sollte es dann auch mit Intel klappen.
Mit Deinem Script fällt Linux unter der Nvidia-Graka zurück auf eine riesige Auflösung, das wird vesa oder sowas gewesen sein. Mit dem alten Script und den richtigen Nullen statt Os läuft Nvidia sehr gut (mit einem Schönheitsfehler: bei der Anmeldung glaubt KDM, es gäbe zwei Bildschirme).
Mit dem alten Script läuft jetzt unter Intel leider glxgears nicht mehr, mit der gleichen Fehlermeldung wie vorhin.
Uff. Also, ich schätze, ich habe einen funktionierenden DP mit Nvidia.
Wenn Du noch Geduld und Lust hast, mir zu helfen, würde mich das sehr freuen. Könntest Du Dein Script nochmal prüfen, oder soll ich damit nochmal booten und dann irgendeine Ausgabe hier hochladen?
Und hättest Du vielleicht noch eine Idee, warum bei Intel nun glxgears nicht mehr läuft?
Wie auch immer: schönes Wochenende, falls Du keine Lust mehr hast, und vielen Dank nochmal.
Nein, ich kann das nicht prüfen, weil ich keine nvidia Karte habe und schon gar kein Hybrid-System.
So wie das Skript jetzt ist, sollte es aber nicht möglich sein dass der nvidia Treiber nicht funktioniert… Es ändert ja nur die 3D Bibliotheken (libglx, libGL).
Kannst du mal die /var/log/Xorg.0.log posten, wenn das Problem auftritt?
Und hättest Du vielleicht noch eine Idee, warum bei Intel nun glxgears nicht mehr läuft?
Wie gesagt, wenn der nvidia Treiber installiert ist, funktioniert Intel’s 3D-Unterstützung nicht.
Du musst dazu nvidia-glG03 deinstallieren, dann geht aber logischerweise kein 3D auf der nvidia-Karte mehr.
PS: mir ist grade aufgefallen, dass da vielleicht im Intel-Bereich einfach nur das ldconfig fehlt und deshalb weiterhin nvidia’s libGL verwendet wird (weil die noch im Linker-Cache ist)…
Also probier vielleicht das mal:
if `echo $mode | grep -c "Intel" ` -gt 0 ]; then
/usr/sbin/update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/xorg/xorg-libglx.so
/sbin/ldconfig
fi
Nein, das war schon immer so (seit Jahren zumindest).
Sonst hättest du ja gar nicht erst so ein Skript gebraucht.
Der nvidia Treiber ersetzt die systemweiten libglx.so und libGL.so mit seinen eigenen Versionen. Deshalb funktioniert Mesa nicht mehr, wenn der nvidia Treiber installiert ist. Das heißt, dass sämtliche Mesa 3D-Treiber auch nicht funktionieren, also im speziellen nouveau, radeon, intel, und swrast (Mesa’s Software Renderer). Letzteres bedeutet, dass man z.B. GNOME im Recovery Mode nicht starten kann, wenn der nvidia Treiber installiert ist.
Das Skript setzt die Bibliotheken auf die Systemversionen zurück, wenn du den Intel-Treiber benutzen willst.
Du sollst einfach nur das “/sbin/ldconfig” in den vorhandenen Abschnitt einfügen, sodass er dann genauso aussieht wie ich gepostet habe.
Das ist jetzt aber für das alte Skript, also das ganze sollte dann so ausschauen:
mode=$(/sbin/lspci | egrep 'VGA|3D');
#Make sure we are in command of /usr/X11R6/lib
if -e /etc/ld.so.conf.d/nvidia-gfxG0*.conf ]; then
/bin/rm /etc/ld.so.conf.d/nvidia-gfxG0*.conf
fi
#Check graphics mode and take apropriate action
if `echo $mode | grep -c "Intel" ` -gt 0 ]; then
/usr/sbin/update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/xorg/xorg-libglx.so
/sbin/ldconfig
fi
if -e /usr/X11R6/lib64/libGL.so.1 ]; then
/bin/rm /usr/X11R6/lib64/libGL.so.1
fi
if -e /usr/X11R6/lib/libGL.so.1 ]; then
/bin/rm /usr/X11R6/lib/libGL.so.1
fi
if `echo $mode | grep -c "NVIDIA" ` -gt 0 ]; then
/usr/sbin/update-alternatives --set libglx.so /usr/lib64/xorg/modules/extensions/nvidia/nvidia-libglx.so
/sbin/ldconfig /usr/X11R6/lib64
/sbin/ldconfig /usr/X11R6/lib
fi
So, ich habe das jetzt mal unter beiden GraKas ausprobiert, es läuft. Bei Nvidia ist das Bild von glxgears halt komisch, weil die Karte Frameraten von ca. 75 fps ausspuckt, aber was soll’s!