it-swarm.com.de

NVIDIA-PRIME: Cant Switch auf Intel

Immer wenn ich von meiner GPU (GTX 1060) auf meine IGPU (Intel 530) umsteige, kann ich nicht booten. Der Ladebildschirm bleibt mit der folgenden Meldung hängen:

[Fehlgeschlagen] NVIDIA Persistence Daemon konnte nicht gestartet werden. Weitere Informationen finden Sie unter "systemctl status nvidia-persistenced.service".

Ich kann jedoch booten, wenn ich wieder auf die Nvidia-GPU umschalte und auf meine IgPU umschalte, ohne dass ein Neustart vorübergehend funktioniert. Ich benutze Kubuntu 16.10 und nur mein internes Laptop-Display. Das ist die Ausgabe, wenn ich zu meinem igpu wechsle:

Sudo prime-select intel
Info: the current GL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: the current EGL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: selecting nvidia-378-prime for the intel profile
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

Sudo prime-select nvidia
Info: the current GL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: the current EGL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: selecting nvidia-378 for the nvidia profile
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

Ergebnis von lspci -k | grep -EA2 'VGA | 3D'

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: CLEVO/KAPOK Computer HD Graphics 530
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060] (rev a1)
        Subsystem: CLEVO/KAPOK Computer Device 6a03
        Kernel driver in use: nvidia

Ich habe über eine Woche lang versucht, dieses Problem selbst zu lösen, und habe keine Ahnung, was ich tun soll. Alles, was ich versuchte, schlug fehl.

Kannst du mir bitte Helfen?

PDATE 5.2.2017:

Ich habe es heute noch einmal getestet und festgestellt, dass das Umschalten auf die Intel GPU mit 375 und 378 überhaupt nicht funktioniert. Das Abmelden friert den Bildschirm ein. Warum hat es dann einmal funktioniert? Wenn ich alle Treiber erneut installiere, nachdem ich die alten gelöscht und anschließend prime-select intel (ohne Neustart!) Verwendet habe, aktualisiert prime-select die primären Profile nicht -> Es wird eines der alten Nicht-NVIDIA-Profile (MESA-Profile) ausgewählt statt nvidia) und es funktioniert. Sobald ich jedoch zu einem NVIDIA-Profil wechsle oder neu starte, werden die Prime-Profile aktualisiert und es funktioniert nicht mehr. Also, ich denke, es stimmt etwas nicht mit den EGl-Alternativen für die Intel-GPU? Entschuldigung für jegliche Unannehmlichkeiten.

PDATE 12.2.2017:

Gestern habe ich die nvidia-prime-Software modifiziert und den Fehler behoben. Ich werde bald (wahrscheinlich nächste Woche) meine geänderte Version veröffentlichen und einen Link hier einfügen, aber ich stoße immer noch auf ein Problem: Wenn ich meinen PC herunterfahre, nachdem ich Sudo prime-select intel ausgeführt habe:

ksmserver stürzt ab (ich benutze Kubuntu, wahrscheinlich kein Problem mit Ubuntu)

-> Der PC kann nicht vollständig heruntergefahren werden und die alten (falschen) Update-Alternativen für die Intel GPU werden wiederhergestellt

-> Ich kann nicht booten.

Wenn ich jedoch nach dem Herunterfahren im Wiederherstellungsmodus Sudo prime-select intel starte, funktioniert alles in Ordnung und ich kann die Intel-GPU verwenden.

PDATE 17.2.2017:

Ich habe meine Problemumgehung gepostet und versuche immer noch, den Fehler in den offiziellen Repositories zu beheben. Dies ist jedoch wahrscheinlich ein Bug in Update-Alternativen, so dass ich als nächstes einen Bug-Report dort posten muss.

In der Zwischenzeit viel Spaß beim Umgehen! Ich hoffe es funktioniert auch bei dir. Bei Fragen hinterlassen Sie bitte einen Kommentar.

PDATE 26.2.2017

Wie @whizzzkid betonte, bleibt die nvidia-Grafikkarte nach dem Anwenden meines Patches weiterhin aktiv. Heute konnte ich dieses Problem jedoch beheben. Ich werde meine Antwort wahrscheinlich nächste Woche auf den 2. Patch aktualisieren. Hier sind einige Tests, die ich durchgeführt habe:

NVIDIA: 43-45W

Intel (nvidia ein): 29-31W

Intel (nvidia aus): 15-17W

10
C11235

Hier ist mein Fix/Workaround für den Bug:

Wenn Sie Hummel anstelle von nvidia-prime verwenden möchten, lesen Sie die Antwort von @ whizzzkid unten.

Getestet mit Kubuntu 16.10 64-Bit unter Verwendung von KDE Plasma Version 7.5 und KDE Frameworks Version 5.26.0. Die folgenden Schritte funktionieren für mich. Ich hoffe, dass sie auch für Sie arbeiten, aber ich kann das nicht garantieren und übernehme keine Verantwortung, wenn sie es nicht tun. Aber ich helfe dir gerne, wenn du einen Kommentar hinterlässt.

In meinem Fall war das Problem, dass die Update-Alternative/usr/lib/nvidia-XYZ-prime/überhaupt nicht funktionierte. Es soll Anrufe an den Intel-Mesa-Treiber umleiten, hat dies aber aus irgendeinem Grund nicht getan. Also ist es wohl doch ein Bug bei Update-Alternativen? Ich habe immer noch keinen Ort gefunden, an dem ich einen Fehler für Update-Alternativen melden kann. Bitte kommentieren Sie, wenn Sie mir helfen können.

Grundsätzlich habe ich nvidia-prime ein wenig modifiziert, um die Update-Alternativen direkt auf den Intel-Mesa-Treiber zu ändern, anstatt auf/usr/lib/nvidia-XYZ-prime /.

Wichtig:

Bevor Sie einen dieser Schritte ausführen, müssen Sie wissen, wie Sie auf Ihrem PC auf den Wiederherstellungsmodus zugreifen können. Wenn Sie aufgrund dieser Anleitung nicht mehr booten können, können Sie die Änderungen im Wiederherstellungsmodus mit den Befehlen im letzten Abschnitt dieser Anleitung rückgängig machen. Weitere Informationen finden Sie auf dieser Website zum Zugriff auf den Wiederherstellungsmodus .

Wenn Sie ein 32-Bit-Betriebssystem verwenden, müssen Sie alle Befehle auslassen, die x86_64 in enthalten Schritt 4 und im Abschnitt So machen Sie alle diese Änderungen rückgängig .


Schritt 1:

Installiere meinen Patch mit einer einfachen Methode, die @whizzzkid in seiner Antwort unten angegeben hat:

cd /usr/bin
Sudo mv prime-select prime-select.bkup
Sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
Sudo chmod 755 prime-select

Schritt 2:

Wende meinen zweiten Patch an, um den Stromverbrauch im Intel-Modus zu senken:

Überprüfen Sie, welche NVIDIA-Treiberversion Sie haben. Zum Beispiel mit dem folgenden Befehl:

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

In diesem Fall ist nvidia-XYZ nvidia-378. Siehe hierzu Stackoverflow-Thread .

Erstellen Sie eine Bash-Datei mit dem folgenden Inhalt, beispielsweise poweroff.sh

#!/bin/bash
line=$(</etc/prime-discrete)
if [ "$line" == "off" ] 
   then
   rmmod nvidia-drm
   rmmod nvidia-modeset
   rmmod nvidia
   bash -c 'echo OFF > /proc/acpi/bbswitch'
fi 

Erstellen Sie eine zweite Bash-Datei mit dem folgenden Inhalt, beispielsweise poweron.sh, und ersetzen Sie XYZ durch die Versionsnummer Ihres nvidia-Treibers.

#!/bin/bash
modprobe nvidia-XYZ
modprobe nvidia-XYZ-modeset
modprobe nvidia-XYZ-drm
modprobe nvidia-XYZ-uvm
echo ON > /proc/acpi/bbswitch

Im Intel-Modus müssen Sie das erste Skript nach dem Anmelden mit Sudo und das zweite Skript ausführen, bevor Sie sich mit Sudo abmelden . Andernfalls stürzt Ihr Laptop wahrscheinlich ab in meinem Fall). Ich führe sie einfach mit Sudo bash FILENAME aus.

Bisher konnte ich diese Skripte beim Anmelden und vor dem Abmelden nicht automatisch als root starten. Es könnte jedoch möglich sein, mit Emporkömmling, wie @ Fiximan wies darauf hin. Ich werde diese Antwort möglicherweise irgendwann in Zukunft erneut aktualisieren, wenn ich das schaffe.


(wahrscheinlich) KDE Plasma spezifische Fehler:

Es gibt immer noch einen Fehler, den ich in KDE Plasma nicht beheben konnte: Immer wenn ich von Nvidia zu Intel wechselte, nachdem ich den PC im NVIDIA-Modus gestartet hatte, ksmserver stürzt ab und der PC wird unbrauchbar, ich muss ihn ausschalten, indem ich den Netzschalter für ca. 5-10 Sekunden drücke. Dies führt manchmal dazu, dass die Update-Alternativen auf nvidia-prime anstatt auf intel-mesa geändert werden, was beim Start zu einem schwarzen Bildschirm führt .

Wenn Sie vom ksmserver-Fehler betroffen sind, tragen Sie bitte zum offiziellen Fehlerbericht auf bugs.kde.org bei.

Das Problem, dass der PC nicht herunterfährt , kann jedoch vermieden werden, indem vor dem Herunterfahren immer der Intel-Modus ausgewählt wird , auch wenn Sie den NVIDIA-Modus verwenden. Wenn Sie dies tun, funktioniert in erster Linie alles so, wie es sollte, und Sie müssen Ihren PC nur durch langes Drücken des Netzschalters ausschalten, nachdem Sie diese Anleitung im NVIDIA-Modus angewendet haben.

Eine einfache Problemumgehung für den schwarzen Bildschirm beim Start besteht darin, die nicht funktionierenden Update-Alternativen vollständig zu entfernen:

Schritt 1:

Sie können nach dem Aufrufen des Wiederherstellungsmodus wieder auf Ihren PC zugreifen, den Root-Befehl Shell auswählen und die folgenden 2 Befehle ausführen:

mount -o remount,rw /
prime-select nvidia

Schritt 2:

Führen Sie die folgenden Befehle aus:

Sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
Sudo update-alternatives --remove i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
Sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf
Sudo update-alternatives --remove x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf

So machen Sie all diese Änderungen rückgängig

Führen Sie einfach die folgenden Befehle aus:

Sudo rm /usr/bin/prime-select
Sudo mv /home/YOUR-USERNAME/prime-select.backup /usr/bin/prime-select
Sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
Sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
Sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
Sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
3
C11235

Lösung, um nach dem Wechsel zur Intel-Videokarte nicht zu booten:
Hinzufügen von Kernel-Boot-Parametern:

acpi_osi=! acpi_osi="Windows 2009"

Der Grund für dieses Problem: Fehler # 156341 im Kernel
Lösungsquelle: Link

2

der Patch von @ C11235 funktioniert, jetzt kann ich zwischen NVIDIA und Intel wechseln, aber dies reduziert nicht den Stromverbrauch. : -/was bedeutet, dass beide noch laufen.

Übrigens ist dies eine einfachere Möglichkeit.

cd /usr/bin
Sudo mv prime-select prime-select.bkup
Sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
Sudo chmod 755 prime-select
2
whizzzkid

Mögliches Problem mit dem 2. Fix: Letzter Befehl der "Poweroff" -Skript-Eingabeaufforderungen

    bash: /proc/acpi/bbswitch: No such file or directory

Anscheinend wird das bbswitch-Modul nicht geladen, wenn ich im Intel-Modus neu starte (das Ändern des Modus wird erst wirksam, wenn ich einen Neustart durchführe und nicht weiß, ob dies normal ist). Es gibt also keine BBSwitch-Datei und keine Möglichkeit, die NVIDIA-GPU auszuschalten.

Ich benutze:

  • MSI-Laptop (GL72 7RDX)
  • Integrierte GPU: Intel® HD Graphics 630 (Kaby Lake GT2)
  • separate GPU: Geforce GTX 1050
  • Betriebssystem: Ubuntu 16.04 lts

Lösung für dieses Problem:

Bearbeiten Sie die Datei/etc/modules (mit Root-Rechten) und fügen Sie die Zeile hinzu

    bbswitch

Jetzt ist bbswitch betriebsbereit, auch wenn ich im Intel-Modus starte, und der zweite Fix für C11235 funktioniert einwandfrei.

1
Hugo