Wie kann man Suspend debuggen?

29

Ich benutze Ubuntu seit ungefähr fünf Jahren und kann es immer noch nicht aussetzen, wenn ich möchte. Es ist ziemlich ärgerlich, dass ich einen Sturm programmieren, die Maschine auf zahlreiche andere Arten hacken und dennoch, wenn ich versuche, sie zum Suspendieren oder Debuggen zu bringen, scheitere ich kläglich.

Ich brauche Hilfe.

Wo fange ich an, das Problem zu finden? Was mache ich, um das Problem zu beheben? Ich zahle dafür ein Kopfgeld, weil ich buchstäblich Stunden meines Lebens durch dieses Problem verloren habe und es schrecklich ist, meinen Computer die ganze Zeit eingeschaltet zu lassen.

Die Symptome:

  • Durch Drücken der Suspend-Taste wird mein Computer in einen Zustand versetzt, in dem der Cursor blinkt, die Lüfter laufen und die Festplatte anscheinend ausgeschaltet ist (glaube ich) einen harten Neustart).
  • Möglicherweise hängt das damit zusammen: Meine Fans bleiben auch nach dem Herunterfahren eingeschaltet, und selbst dann muss ich den Netzschalter fünf Sekunden lang drücken, bevor ich ihn wieder einschalten kann.
  • Ich weiß nicht, auf welche Protokolle ich schauen soll, um das Problem zu beheben, und ich stelle mir vor, dass sie beim Neustart sowieso kaputt gehen würden.

Bitte, bitte helfen Sie. Das macht mich total verrückt und ich lebe seit über einem Jahr damit.

mlissner
quelle
Hattest du Glück damit? Ich stecke persönlich beim Initialisieren der Grafikhardware fest. Ich könnte wahrscheinlich meinen Ausweg programmieren, wenn ich genügend Zeit hätte ... aber es wäre viel reibungsloser, eine Methode zu haben, um direkt zum Problem zu gelangen.
Henrik
Ja, kein Glück. Anscheinend gibt es keine Methode zum Debuggen von Suspend, was ein bisschen schockierend ist.
mlissner
1
Wie suspendierst du? Laufen Sie von der Kommandozeile aus pm-suspend? Verwenden Sie eine Suspend-Taste auf Ihrer Tastatur? Rufen Sie acpi an (z. B. /etc/acpi/sleep.sh oder /etc/acpi/sleepbtn.sh)?
M. Tibbits
1
Für Kopfgeldjäger: Ich suche hauptsächlich nach allgemeinen Debugging-Rezepten, dh nach Informationen für neuere Ubuntu-Installationen mit systemd. Ich hoffe, dass wir diese Frage als kanonisches Duplikat für allgemeine Suspend-Problemfragen von unerfahrenen Benutzern verwenden können.
David Foerster
2
@pbhj: So oder so braucht man eine richtige Problemdiagnose als ersten Schritt auf dem Weg zu einer Lösung.
David Foerster

Antworten:

22

Von https://wiki.ubuntu.com/UnderstandingSuspend

  • Das größte Problem ist die Grafikhardware
  • versuche es ohne eingeschränkte geräte auszusetzen (nvidia, fglrx)
  • Der Kernel weiß nicht, wie er mit Grafikgeräten umgeht
  • Das BIOS kann den Grafikstatus wiederherstellen
    • C000: xxxx enthält über den segmentierten 16-Bit-Modus das sichtbare 64-KB-Video-ROM.
    • Beim Starten der Ausführung bei C000: 0003 wird das Video-BIOS normalerweise neu gepostet (/ usr / sbin / vbetool post).
      • schwieriger im 64bit-Modus, da 16bit-Aufrufe emuliert werden müssen.
      • Ein Teil des Arbeitsspeichers liegt im Bereich von 3-4G, weshalb beim Emulieren eine Neuzuordnung erforderlich ist, um zu vermeiden, dass der im selben Bereich zugeordnete Kernel getroffen wird. o Möglicherweise hat das Video-BIOS den POST-Code aus dem C000-Fenster ausgelagert. o Das NVIDIA-BIOS schreibt das ROM neu, um das erneute POST zu beenden.
    • Stellen Sie sicher, dass Sie von Xorg abgemeldet sind (oder führen Sie sleep.sh mit dem Argument "force" aus).
    • Wenn sich das Video-BIOS nicht in einem vernünftigen Zustand befindet, kann die Hardware hängen bleiben, wenn Sie zu Xorg zurückkehren
    • testet Capslock auf Resume (wenn kein Capslock, Kernel hängt)
    • Wenn die Hintergrundbeleuchtung nicht wieder eingeschaltet wird, wurde das Video-BIOS wahrscheinlich nicht neu initialisiert
    • Wenn der Bildschirm leer ist, aber eine Hintergrundbeleuchtung hat, drücken Sie die Eingabetaste oder wechseln Sie zwischen virtuellen Terminals
    • versuche es im Einzelbenutzermodus (indem du "single" an die grub kernel boot options anhängst)
    • Einzelheiten zu Aktionen finden Sie unter bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • Schauen Sie sich die Dmidecode-Informationen an, die den Einstellungen in /usr/share/acpi-support/*.config entsprechen
    • Wenn das Anhalten oder Fortsetzen der Konsole im Einzelbenutzermodus fehlschlägt
    • PM-Trace (Echo "1"> / sys / power / pm_trace), der Geräte-Hashes in den System-Timer schreibt
    • Versuch auszusetzen
    • Untersuchen Sie nach dem Fehler beim Neustart die dmesg-Ausgabe auf "Geräte-Hash" -Einträge, um das Gerät zu ermitteln, das das System während des Wiederaufnahmevorgangs blockiert hat.
    • Beachten Sie, dass hierdurch die Systemuhr zurückgesetzt wird und fsck ausfällt ("seit 31337 Tagen ohne fsck"). Betrachten Sie tune2fs -c 0 / dev / your / filesystems.
Henrik
quelle
2
Wie schalte ich eingeschränkte Geräte aus?
Owen
1
Sind Links zu Arbeitsskripten vorhanden, um das Kontrollkästchen zu aktivieren, wenn das Anhalten fehlschlägt? ... diese Art von Problem ist der Fluch von Linux und blockiert die Massennutzung ...
Scott Stensland
4

Hier und hier finden Sie viele Richtlinien / Hinweise .

Laut Ihrer Beschreibung scheint es, als ob Ihr ACPI nicht richtig funktioniert oder die Kerneltreiber eine vollständige Unterbrechung verhindern. Der zweite Link zeigt, wie man mit solchen Problemen umgeht.

evgeny
quelle
2
Ich habe sie durchgelesen, aber sie enthalten keine wirklich nützlichen Informationen für mein Problem. Benötigen Sie mehr Hilfe und bessere Angaben. Ich habe ein Kopfgeld für diese Frage erstellt.
mlissner
4
Schlechte Antwort - nur Links. Der Zweck der Stack * -Sites ist es, eine Anlaufstelle für alle Fragen zu bieten, und nicht, Benutzer auf eine endlose Gänsehaut zu schicken oder "nur f * google it" zu sagen. Bitte geben Sie Ihre Antwort in die Frage ein und aktualisieren Sie diese entsprechend dem Kommentar von mlissner.
Henrik
Danke: Manchmal ist es nützlich, die Original-Homepage zu lesen!
abu_bua
4

Die Symptome:

  • Durch Drücken der Suspend-Taste wird mein Computer in einen Zustand versetzt, in dem der Cursor blinkt, die Lüfter laufen und die Festplatte anscheinend ausgeschaltet ist (glaube ich) einen harten Neustart).
  • Möglicherweise hängt das damit zusammen: Meine Fans bleiben auch nach dem Herunterfahren eingeschaltet, und selbst dann muss ich den Netzschalter fünf Sekunden lang drücken, bevor ich ihn wieder einschalten kann.
  • Ich weiß nicht, auf welche Protokolle ich schauen soll, um das Problem zu beheben, und ich stelle mir vor, dass sie beim Neustart sowieso kaputt gehen würden.

Meine Website für viele Linux-Probleme ist Arch Linux. Im Folgenden finden Sie Informationen zu Problemen mit dem Anhalten / Fortsetzen , die Ihren ähnlich sind:

Sofortiges Aufwachen aus dem Suspend

Bei einigen Intel Haswell-Systemen mit dem LynxPoint- und LynxPoint-LP-Chipsatz wird ein sofortiges Aufwecken nach dem Anhalten gemeldet. Sie sind mit fehlerhaften BIOS-ACPI-Implementierungen verbunden und damit, wie das xhci_hcdModul sie während des Startvorgangs interpretiert. Als Workaround werden gemeldete betroffene Systeme XHCI_SPURIOUS_WAKEUPvom Kernel von Fall zu Fall zu einer (benannten ) Blacklist hinzugefügt . [ 2 ]

Eine sofortige Wiederaufnahme kann beispielsweise auftreten, wenn ein USB-Gerät während der Unterbrechung angeschlossen und ACPI-Aktivierungsauslöser aktiviert sind. Eine praktikable Abhilfe für ein solches System ist das Deaktivieren der Weckauslöser, wenn es noch nicht auf der schwarzen Liste steht. Ein Beispiel zum Deaktivieren des Aufwachens über USB ist wie folgt beschrieben. [ 3 ]

So zeigen Sie die aktuelle Konfiguration an:

$ cat /proc/acpi/wakeup

Device  S-state   Status   Sysfs node
...
EHC1      S3    *enabled  pci:0000:00:1d.0
EHC2      S3    *enabled  pci:0000:00:1a.0
XHC       S3    *enabled  pci:0000:00:14.0

...

Die entsprechenden Geräte sind EHC1, EHC2und XHC(für USB 3.0). Um den Status zu ändern, müssen Sie den Gerätenamen als root in die Datei eintragen.

# echo EHC1 > /proc/acpi/wakeup
# echo EHC2 > /proc/acpi/wakeup
# echo XHC > /proc/acpi/wakeup

Dies sollte dazu führen, dass die Federung wieder funktioniert. Diese Einstellungen sind jedoch nur temporär und müssten bei jedem Neustart vorgenommen werden. Um dies zu automatisieren, werfen Sie einen Blick auf systemd # Writing unit files . Eine mögliche Lösung und weitere Informationen finden Sie im BBS-Thread .


Der gesamte Artikel über Arch Linux über Suspend / Resume ist eine hervorragende Referenz für viele Bereiche:

1 Low level interfaces
    1.1 kernel (swsusp)
    1.2 uswsusp
2 High level interfaces
    2.1 systemd
3 Hibernation
    3.1 About swap partition/file size
    3.2 Required kernel parameters
        3.2.1 Hibernation into swap file
    3.3 Configure the initramfs
4 Troubleshooting
    4.1 ACPI_OS_NAME
    4.2 VAIO Users
    4.3 Suspend/hibernate doesn't work, or not consistently
    4.4 Wake-on-LAN
    4.5 Instantaneous wakeups from suspend
WinEunuuchs2Unix
quelle
Sieht gut aus! Ich warte noch ein oder zwei Tage, damit andere antworten können. Vielleicht fühlt sich jemand von Ihnen inspiriert. :-)
David Foerster
@ DavidFoerster Danke. Es ist eine Herausforderung, eine 8-jährige Frage zu beantworten. Es gibt auch ein Suspend / Resume-Problem mit NVMe M.2 PCIe-SSDs, die ich heute Abend hinzufügen werde. Diese Arten von SSDs gab es 2010 nicht und erfordern ein spezielles Grub-Kernel-Argument.
WinEunuuchs2Unix
Ich suchte weniger nach Lösungen für bestimmte Suspend-Probleme als vielmehr nach allgemeinen Debugging-Rezepten für neuere Ubuntu-Installationen mit systemd.
David Foerster
@ DavidFoerster In diesem Fall lasse ich die Antwort stehen wie sie ist :)
WinEunuuchs2Unix