So beheben Sie den NVIDIA Resume-Fehler auf dem elementaren Betriebssystem Loki

Elementary OS Loki erweist sich als eine bemerkenswert stabile Linux-Distribution. Allerdings kann es bei der Verwendung mit den proprietären Nvidia-Treibern zu einem störenden Fehler beim Aufwachen aus dem Suspend-Modus kommen. Dieses Problem existiert weiterhin, und die Community versucht, die Ursachen zu erforschen.

Die hier vorgeschlagene Lösung ist nicht völlig narrensicher. Es kann vorkommen, dass der Fehler trotz der Implementierung dieser Anpassung weiterhin auftritt. Die Methode basiert darauf, das systemd-Init-System von Elementary OS zu nutzen, um den Fenstermanager neu zu starten.

Es könnte sein, dass der Gala-Fenstermanager nicht wie erwartet neu startet. Sollte der Dienst nicht reagieren, ist es ratsam, die entsprechenden Dateien zu löschen und neu zu starten oder dies manuell über den Wingpanel-Anwendungsstarter mit folgendem Befehl zu tun:

gala --replace

Bitte beachte, dass die Anwendung dieser Methode auf eigene Gefahr erfolgt.

Erstellung des Skripts

Bevor ein sogenannter Sleep-Hook in systemd eingerichtet wird, ist ein separates Skript notwendig, da Befehle nicht direkt in die Servicedatei integriert werden können. Um dies zu bewerkstelligen, öffne ein Terminalfenster auf dem Elementary OS-Desktop und erlange Root-Zugriff mittels des Befehls sudo -s.

Nutze das Root-Terminal, um den Nano-Texteditor zu starten:

nano /usr/bin/pantheon-wm-refresh.sh

Dieser Befehl erzeugt eine neue SH-Datei, die im Verzeichnis /usr/bin/ abgelegt wird. In diese Datei fügst du folgenden Code am Anfang ein. Dieser Code ist essenziell, da er die Umgebung für die Skriptausführung definiert. Ohne diese Zeile kann es zu Fehlern kommen.

#!/bin/bash

Durch das Shebang am Anfang des Skripts enthält die SH-Datei alle notwendigen Informationen für den Interpreter. Als Nächstes fügen wir weitere Befehlsargumente hinzu, beginnend mit der Spezifizierung der Standardanzeige. Dies stellt sicher, dass der Fenstermanager auf dem korrekten Bildschirm aktualisiert wird.

export DISPLAY=:0

Unmittelbar nach export DISPLAY=:0 folgt der Befehl, der die Pantheon-Desktopumgebung dazu zwingt, den Fenstermanager beim Aufwachen aus dem Resume-Modus neu zu starten. Dieser Befehl bewirkt, dass der Elementary OS Fenstermanager (bekannt als Gala) sich selbst ersetzt.

gala --replace

Nachdem der letzte Befehl im Shell-Skript erfasst ist, speicherst du die Datei mit Strg + O. Anschließend aktualisierst du die Berechtigungen der Datei, damit sie als ausführbares Programm fungiert:

chmod +x /usr/bin/pantheon-wm-refresh.sh

Einrichten eines Systemd-Dienstes

Der nächste Schritt zur Behebung des Nvidia-Resume-Fehlers beinhaltet die Einrichtung eines „Sleep Hook“. Dieser Dienst wird in systemd ausgeführt, wenn der Benutzer aus dem Schlafmodus zurückkehrt. Hierzu benötigen wir erneut den Nano-Texteditor. Stelle sicher, dass dein Terminal noch Root-Zugriff hat. Wenn nicht, verwende sudo -s, um Root-Rechte zu erhalten, und öffne eine neue Datei mit:

nano /etc/systemd/system/pantheon-wm-refresh@.service

In die Datei pantheon-wm-refresh@.service fügst du folgenden Inhalt ein:

[Unit]
Description=Aktionen nach dem Aufwachen
After=suspend.target

[Service]
User=%I
Type=simple
ExecStart=/usr/bin/pantheon-wm-refresh.sh

[Install]
WantedBy=suspend.target

Speichere die neue Systemd-Datei mit Strg + O und verwende anschließend den Befehl systemctl, um den neuen Dienst zu aktivieren:

systemctl enable pantheon-wm-refresh@.service

und

systemctl start pantheon-wm-refresh@.service

Ab diesem Zeitpunkt wird der Pantheon-Fenstermanager bei jedem Aufwachen aus dem Suspend-Modus neu gestartet. Dadurch wird das Problem mit dem Bildschirm, das bei einigen proprietären Nvidia-GPU-Treibern unter Elementary OS auftritt, umgangen.

Alternative Lösungsansätze

Treiberaktualisierung

Sollte die oben genannte Lösung nicht erfolgreich sein, ziehe die folgenden Optionen in Betracht. Zunächst solltest du sicherstellen, dass die neueste Version der proprietären Nvidia-Treiber auf deinem Elementary OS-System installiert ist. Dies beginnt mit der Installation von Software, die die Nutzung von PPAs im Betriebssystem ermöglicht.

sudo apt install software-properties-common

Danach füge den regelmäßig aktualisierten Treiber-PPA hinzu mit:

sudo add-apt-repository ppa:graphics-drivers/ppa

Öffne nun das Elementary OS Software Center, suche nach „zusätzlichen Treibern“ und installiere/starte es. Deaktiviere die aktuelle Version des proprietären Nvidia-Treibers und installiere die neueste Version. Dadurch aktualisierst du dein System auf die aktuellste Treiberversion, was möglicherweise Fehler beheben kann.

Treiber-Rollback

Falls weder die vorgeschlagene Anpassung noch das Update der Nvidia-Treiber das Problem beheben, kannst du versuchen, die proprietären Nvidia-Treiber zu deinstallieren und stattdessen die Open-Source-Noveau-Treiber zu verwenden. Obwohl diese möglicherweise nicht die gleiche Leistung wie die Nvidia-Treiber bieten, haben sie nicht den Resume-Bug.

Alternative Fenstermanager

Wenn du unbedingt die Closed-Source-Treiber auf Elementary OS verwenden möchtest, kannst du den Elementary OS-Fenstermanager manuell durch eine Alternative wie Mutter ersetzen.

Mutter ist ein schlanker, ästhetischer Fenstermanager mit ähnlichen visuellen Effekten. Führe diesen Befehl im Terminal aus:

sudo apt install mutter

Gehe anschließend zu den Systemeinstellungen (oder suche nach Startup) und füge folgenden Befehl hinzu: mutter --replace. Beim Hochfahren deines PCs wird Gala automatisch durch Mutter ersetzt. Dies ist eine pragmatische, aber wirksame Methode zur Fehlerbehebung.