
Ich kann die „Suspend“-Funktion unter Ubuntu 18.04 nicht richtig zum Laufen bringen. Die Hibernate-Funktion funktioniert jedoch wie erwartet.
Problembeschreibung: Wenn ich den Suspend-Modus über das Power-Menü oder „sudo systemctl suspend“ verwende, tritt folgendes Verhalten auf:
- Das Gerät wechselt in den Ruhemodus und die LED der Einschalttaste blinkt (atmet) langsam.
- Beim Neustart des Laptops wird das Betriebssystem gestartet und ich sehe den üblichen Anmeldebildschirm, aber keine der ausgeführten Anwendungen wird wiederhergestellt.
Was ich bisher getan habe:
$ sudo apt-get install uswsusp
$ sudo update-initramfs -u
$ sudo systemctl edit systemd-suspend.service
Ich habe die folgenden Zeilen in systemd-suspend.service eingefügt:
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /usr/lib/systemd/system-sleep
ExecStart=/usr/sbin/s2ram
ExecStartPost=-/bin/run-parts -v --reverse -a post /usr/lib/systemd/system-sleep
- die Datei gespeichert. Sie wird in /etc/systemd/system/ gespeichert.
laufen:
$ sudo systemctl daemon-reload
Probier es aus:
$ sudo systemctl suspend
Die Ergebnisse sind wie oben beschrieben, der Laptop schläft, die gespeicherte Sitzung wird jedoch beim Neustart nicht wiederhergestellt.
Ich weiß, dass das Skript systemd-suspend.service aufgerufen wird. Wenn ich die Zeile ExecStart=/usr/sbin/s2ram in ExecStart=/usr/sbin/s2disk ändere, wechselt der Laptop in den Ruhezustand und stellt die Sitzung wieder her.
Zusätzliche Information:
Um Hibernate zum Laufen zu bringen, habe ich Grub geändert:
sudoedit /etc/default/grub
diese Zeile geändert:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
to:
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=UUID=<string of hex> resume_offset=34816"
dann lief:
$ sudo update-grub
Kernel-Informationen:
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
uname -a
Linux <machinename> 4.18.0-21-generic #22~18.04.1-Ubuntu SMP Thu May 16 15:07:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
sudo s2ram -K
This kernel has KMS support.
Gibt es einen Schritt oder ein Konfigurationselement, das ich übersehe?
Antwort1
Nachdem ich lange nach einer Antwort gesucht und mir den Kopf zerbrochen hatte, kam ich selbst zu einer Lösung, indem ich Informationen aus verschiedenen Quellen zusammenschusterte. Diese Lösung funktioniert auf meinem Sony Vaio Modell VPCEB15FM mit Ubuntu 18.04, bei Ihnen kann es anders sein.
Ein Teil des Problems beim korrekten Funktionieren von Ruhezustand/Suspend war die Art und Weise, wie Ubuntu /dev/sda2, /dev/sdb2 usw. lädt und zuweist, da sich die Reihenfolge der Laufwerkszuweisung manchmal von Start zu Start ändert. Der erste Schritt besteht also darin, die UUID der Swap-Partition zu identifizieren. Da die UUID konstant ist, stellt sie einen viel zuverlässigeren Einhängepunkt dar.
Die UUID kann hier abgerufen werden:
sudo blkid
Suchen Sie nach dem Eintrag "Swap"
/dev/sda2: UUID="5c555600-2e37-477d-62df-6013d61dc36" TYPE="swap" PARTUUID="2f501554-02"
Ihre UUID unterscheidet sich von meiner. Verwenden Sie nicht meine, sondern Ihre.
Wenn Sie eine Auslagerungsdatei statt einer Auslagerungspartition verwenden, verwenden Sie die UUID der Haupt-Linux-Partition. Außerdem müssen Sie den Offset zur Auslagerungsdatei kennen.
So erhalten Sie den Offset zur Auslagerungsdatei:
sudo filefrag -v /swapfile
Die Ausgabe sieht ungefähr so aus:
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
Der gesuchte Offset ist der erste „physical_offset“, in diesem Fall wäre es 34816.
Jetzt haben Sie die Informationen, die Sie für den Einstieg benötigen.
Ändern Sie /etc/default/grub
sudoedit /etc/default/grub
Ändern Sie die Zeile:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
bei Verwendung einer Swap-Partition für Folgendes:
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=UUID=5c555600-2e37-477d-62df-6013d61dc36"
wenn Sie eine Auslagerungsdatei für Folgendes verwenden:
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=UUID=5c555600-2e37-477d-62df-6013d61dc36 resume_offset=34816"
Installieren Sie uswsusp.
Dadurch werden die Methoden s2disk, s2ram und s2both installiert.
sudo apt-get install uswsusp
Richten Sie systemd-hibernate.service und systemd-suspend.service ein.
Diese Dateien befinden sich in /etc/systemd/system/ oder werden dort erstellt, falls sie noch nicht vorhanden sind.
sudo systemctl edit systemd-hibernate.service
Fügen Sie diese Zeilen ein:
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep
Hinweis: Mein System hat einen Pfad zu /lib/systemd/system-sleep, andere haben möglicherweise einen anderen Speicherort wie /usr/lib/systemd/system-sleep.
sudo systemctl edit systemd-suspend.service
Fügen Sie diese Zeilen ein:
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2both
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep
Hinweis: Verwenden Sie in der „Suspend“-Konfiguration s2both statt s2ram. s2ram hat auf meinem System nicht funktioniert, s2both jedoch immer.
Ubuntu 18.04 und 20.04:
Bearbeiten Sie /etc/uswsusp.conf.
Verwenden Sie die UUID und, falls Sie eine Auslagerungsdatei verwenden, den Offset:
sudo nano /etc/uswsusp.conf
Ändern Sie es, um Ihre UUID usw. zu verwenden.
# /etc/uswsusp.conf(5) -- Configuration file for s2disk/s2both
resume device = UUID=5c555600-2e37-477d-62df-6013d61dc36
compress = y
# early writeout = y
# image size = 1741570539
# RSA key file = /etc/uswsusp.key
shutdown method = platform
# only needed if using a swapfile
# resume offset = 34816
Hinweis: Es gibt eine Manpage für uswsusp.conf, die alle Parameter vollständig beschreibt. Es gibt eine Reihe weiterer Einstellungen, dies ist das erforderliche Minimum. Die kommentierten Zeilen wurden belassen, damit Sie einige der anderen Optionen sehen können.
Ubuntu 22.04:
Bearbeiten Sie /etc/suspend.conf.
16.09.2022 Die Datei /etc/uswsusp.conf wurde durch /etc/suspend.conf ersetzt
Sehen:https://wiki.archlinux.org/title/Uswsusp
sudo nano /etc/suspend.conf
Nur der "Gerät fortsetzen" hat sich gegenüber der Anleitung oben geändert, alles andere kann gleich bleiben.
Verwenden Sie stattdessen diese Zeile:
resume device = /dev/disk/by-label/swap
Bearbeiten Sie /etc/initramfs-tools/conf.d/resume
sudo nano /etc/initramfs-tools/conf.d/resume
fügen Sie diese Zeile hinzu: RESUME=UUID=5c555600-2e37-477d-62df-6013d61dc3
Hinweis: Wenn Sie eine Auslagerungsdatei verwenden, muss der Offset hinzugefügt werden. Fügen Sie nach der UUID Folgendes hinzu: resume offset = 34816
Okay, damit sollten die verschiedenen Konfigurationselemente erledigt sein.
Grub und Initramfs aktualisieren:
sudo update-grub
sudo update-initramfs -u or update-initramfs -u -k all to do all kernels
Starten Sie Ubuntu neu.
Testen Sie nach dem Neustart die Ruhezustands- und Suspendierungsfunktionen. Der Ruhezustand kann mehrere Minuten benötigen, um die Fortsetzungsdatei in den Swap-Speicher zu schreiben und den Computer herunterzufahren. Keine Panik. Suspend ist etwas schneller.
Testen Sie alles!
sudo systemctl hibernate
sudo systemctl suspend
Was Sie sehen sollten:
- Ruhezustand - fährt das System vollständig herunter. Dauert einige Minuten. Nach dem Neustart des Computers und der erneuten Anmeldung sollten Ihre Anwendungen fortgesetzt werden. Hinweis: Der Wiederaufnahmevorgang kann einige Minuten dauern und während der Wiederaufnahme kann es vorkommen, dass der Computer hängen bleibt. Seien Sie geduldig.
- Suspend - das System wechselt in den Ruhemodus und die Betriebsanzeige blinkt langsam (atmet). Durch Drücken des Hauptschalters wird das Gerät geweckt. Sie sollten den Anmeldebildschirm sehen und Ihre Anwendungen sollten fortgesetzt werden.
Weitere Schritte:
Sie sollten den Ruhe-/Suspend-Modus über das Dropdown-Menü „Energie“ aufrufen können. Wenn Sie das Dropdown-Menü öffnen, drücken Sie die Alt-Taste. Das Energiesymbol sollte sich in das Ruhezustandssymbol ändern.
Eine Hibernate-Menüoption kann ebenfalls hinzugefügt werden. Es gibt bereits einige gute Tutorials dazu, die Sie finden können, wenn Sie nach „ubuntu add hibernate power menu“ suchen.