it-swarm.com.de

Wie kann ich unter Ubuntu 16.04 in den Ruhezustand wechseln?

Wie soll ich Ubuntu 16.04 erfolgreich in den Ruhezustand versetzen?

Ich habe fast jede Lösung im Web ausprobiert, aber keine davon war tatsächlich hilfreich. Ich fand mein Problem fast völlig ähnlich wie dieses

85
Mahyar

Sie können verwenden

Sudo pm-hibernate 

um zu überprüfen, ob der Ruhezustand auf Ihrem System funktioniert (, wird Ihr Computer in den Ruhezustand versetzt ).

Wenn dies nicht funktioniert, prüfen Sie, ob Ihre Auslagerungsgröße mindestens so groß ist wie Ihr RAM.

Um die Option zum Einstellungsmenü hinzuzufügen, können Sie eine Konfigurationsdatei erstellen. Öffnen Sie ein Terminalfenster und führen Sie den folgenden Befehl aus:

Sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

Es öffnet sich Nano mit einer leeren Datei. Kopieren Sie die Zeilen darunter und fügen Sie sie in das Nano-Fenster ein.

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

Speichern Sie dann die Änderungen, schließen Sie nano und starten Sie das System neu, damit der Ruhezustand unter "Energieoptionen" angezeigt wird.

Hinweis: Wie kann ich meinen Computer in den Ruhezustand versetzen? in der offiziellen Dokumentation zu Ubuntu 16.04.

Hoffe, es funktioniert. Dies funktionierte für mich, nachdem ich alle anderen Optionen ausprobiert hatte.

61
NirajW

Ruhezustand mit systemctl und Funktionieren in schwierigen Fällen

Für mich scheitert pm-hibernate immer. Nach einigen Optimierungen konnte ich über die Schnittstelle von systemd (Init-System in 16.04 und höher) in den Ruhezustand wechseln. Ich habe es auch geschafft, es am 17.04 mit einer Auslagerungsdatei zum Laufen zu bringen. Diese Fallstudie kann für andere mit Problemen nützlich sein.

Erster Versuch:

Sudo systemctl hibernate

Wenn dies fehlschlägt, beginnen Sie mit der Fehlerbehebung: Im Ruhezustand (HTD oder ACPI S4) wird der Rechnerstatus auf die Festplatte geschrieben, sodass kein Strom erforderlich ist, um ihn zu erhalten. Der Status wird entweder in eine Auslagerungspartition oder in eine Auslagerungsdatei geschrieben. Hinweis: Wenn Sie BTRFS verwenden, versuchen Sie NICHT, eine Auslagerungsdatei zu verwenden, da dies zu einer Beschädigung des Dateisystems führen kann.

Ihre Auslagerungspartition oder Auslagerungsdatei muss möglicherweise dieselbe Größe haben wie RAM, um den Ruhezustand zu ermöglichen. Es besteht jedoch eine gute Chance, dass Sie in den Ruhezustand wechseln können, wenn sie mindestens 2/5 der Größe des Arbeitsspeichers entspricht. Versuchen Sie es gemäß der Arch-Wiki-Seite zuerst mit anderen Schritten, bevor Sie die Swap-Größe erhöhen.

Wenn Ihr Problem darin besteht, dass Sie einen sauberen Neustart anstelle der erwarteten Wiederaufnahme erhalten, müssen Sie höchstwahrscheinlich mindestens einen Startparameter festlegen, um das Festplatten-Image zu finden

Finden Sie Ihre Swap-Partition:

grep swap /etc/fstab

für mich kehrt dies zurück (Teilausgabe)

# swap was on /dev/mmcblk0p3 during installation

dabei ist /dev/mmcblk0p3 die Partition, die angegeben werden soll

Fügen Sie einen Boot-Parameter hinzu:

sudoedit /etc/default/grub

Fügen Sie zu der Zeile, die mit GRUB_CMDLINE_LINUX_DEFAULT beginnt, resume=/dev/YourSwapPartition zu dem Abschnitt in Anführungszeichen hinzu (ersetzen Sie ihn durch die zuvor angegebene Partition). Mit meinem Beispiel:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mmcblk0p3" 

Jedes Mal, wenn Sie diese Datei ändern, müssen Sie Sudo update-grub ausführen, da die Änderungen sonst keine Auswirkungen haben.

Jetzt müssen Sie neu starten. Anschließend können Sie versuchen, den Ruhezustand zu beenden, indem Sie den folgenden Befehl eingeben:

Sudo systemctl hibernate

Drücken Sie den Netzschalter, um fortzufahren, und das System wird gestartet.

Wenn Sie immer noch Probleme haben, starten Sie das Debuggen.

Ich führe meinen Fall als Beispiel an, aber detaillierte Informationen zum Debuggen von S-Zuständen finden Sie in in diesem Blog und auch in diesem Blog .

Legen Sie weitere Startparameter fest, um weitere Informationen zu erfassen. Entfernen Sie quiet und splash und fügen Sie initcall_debug und no_console_suspend hinzu, wodurch Init-Systemaufrufe an die Konsole gesendet werden, damit Sie sehen können, was falsch läuft. Ich habe folgendes eingestellt:

GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/mmcblk0p3 no_console_suspend initcall_debug"

Das hat mir geholfen zu sehen, was im Ruhezustand schief gelaufen ist.

In meinem Fall habe ich nach dem Fortsetzen das WLAN verloren und der Kernel war offensichtlich verärgert, da die meisten Befehle (z. B. das Lesen von Daten aus /sys, das Neuladen von Modulen oder ein beliebiger systemctl -Befehl) nicht funktionierten - der Prozess wurde angezeigt zu starten und einfach zu hängen (all dies würde natürlich nach dem Neustart wieder normal sein). Als ich sah, wie das System sehr langsam heruntergefahren und alle Debug-Meldungen gelesen wurden, bemerkte ich, dass es viele Probleme mit "brcm" gab, weshalb ich vermutete, dass mein drahtloses Broadcom-Treibermodul daran schuld war. Sicher genug, dass ich meinen Ruhezustand angepasst habe, um das Modul zuerst zu entladen:

Sudo modprobe -r brcmfmac
Sudo systemctl hibernate

beim Lebenslauf stecke ich das Modul wieder ein

Sudo modprobe brcmfmac

Und alles hat perfekt funktioniert. Ich muss auch das btsdio -Modul auf die schwarze Liste setzen, das mit brcmfmac nicht kompatibel zu sein scheint.


Update: Ruhezustand mit einer Auslagerungsdatei am 17.04.

Noch einmal mit Hilfe der Arch-Wiki-Seite und einigen zusätzlichen Bastelarbeiten gelang es mir, den Ruhezustand auf 17.04 mit einer Auslagerungsdatei arbeiten zu lassen. Dies erforderte einen zusätzlichen Boot-Parameter, resume_offset=n, wobei n die erste Zahl unter physical_offset in der Ausgabe von Sudo filefrag -v /swapfile ist:

$ Sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..   32767:      34816..     67583:  32768:            
   1:    32768..   63487:      67584..     98303:  30720:            
   .... 

Daher ist der zusätzliche Boot-Parameter in meinem Fall resume_offset=34816. Sie müssen noch einen Boot-Parameter festlegen, von dem aus die Partition fortgesetzt werden soll. Dies ist die Root-Partition (oder die Partition, auf der sich Ihre Auslagerungsdatei befindet). Meine Parameter sind jetzt:

GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=/dev/mmcblk1p2 resume_offset=34816"

Wobei /dev/mmcblk1p2 meine Root-Partition ist (es ist wahrscheinlicher, dass Ihre so etwas wie /dev/sda2 ist).

Während des Lebenslaufs konnte ich sehen, dass das Bild erfolgreich geladen wurde. In meinem Fall (nur ein Beispiel - YMMVAPD) haben dann einige weitere Treiber (i2c_designware) einige Fehler ausgegeben und ich habe ein vollständiges Einfrieren des Systems beim Lebenslauf erhalten. Der Ruhezustand funktioniert, wenn ich diese Module zusätzlich zu brcmfmac entlade, das System jedoch ohne diese Module schnell unbrauchbar wird. Ich habe daher eine Art Skript erstellt, um die fehlerhaften Module zu entladen und sie sofort wieder in den Lebenslauf einzufügen:

# remove buggy modules
modprobe -r brcmfmac i2c_designware_platform i2c_designware_core &&
# hibernate
echo disk > /sys/power/state
# reinsert
modprobe i2c_designware_core i2c_designware_platform brcmfmac

Wenn ich in den Ruhezustand wechseln möchte, führe ich Sudo bash script aus. Das funktioniert super.


TL; DR

Verwenden Sie systemd, legen Sie einen Boot-Parameter für die Wiederaufnahme des Auslagerungsvorgangs fest, identifizieren Sie fehlerhafte Treiber und entladen Sie sie, bevor Sie den Ruhezustand einleiten. Wenn das System ohne diese Module nicht lange funktioniert oder Sie mehrere Module entladen müssen, ist es möglicherweise einfacher, ein einfaches Skript zum Einleiten des Ruhezustands zu verwenden.

59
Zanna

Ich denke, wie man den Ruhezustand für 16.04 aktiviert, ist allen bekannt, wie im buntu Wiki (siehe unten, wenn Sie die Schritte benötigen) beschrieben. Aber die Dinge, die überprüft werden müssen, sind meiner Meinung nach nicht gründlich. Zumindest habe ich das gefunden.

Dinge zu überprüfen

Bei meinen eigenen Tests habe ich mindestens eine zusätzliche Überprüfung gefunden, die Sie durchführen sollten. Ich habe darüber nirgendwo im Internet etwas gefunden.

Hier sind einige Überprüfungen -

  1. Stellen Sie sicher, dass Sie keine btrfs Partitionen verwenden. Ja . Bei meinem Test habe ich festgestellt, dass der Ruhezustand nicht funktioniert, wenn Sie btrfs -Partitionen haben. Das Entfernen oder Ändern des Partitionstyps in ext4 hat mir nicht geholfen. Ich musste das Paket btrfs-tools entfernen.

    Sudo apt-get purge btrfs-tools
    

    Möglicherweise möchten Sie andere neue Partitionstypen überprüfen, die nicht gut getestet wurden. Ohne das Entfernen des Pakets könnte es auch funktionieren, den Treiber auf die schwarze Liste zu setzen, aber das habe ich nicht getestet.

  2. Außerdem müssen Sie sicherstellen, dass Sie eine Swap-Partition haben, die groß genug ist, um den Inhalt des Arbeitsspeichers aufzunehmen. Wenn Ihr RAM 4 GB hat, sollte der Swap mindestens 4 GB groß sein (Sie sollten aus Sicherheitsgründen einige MB mehr zuweisen).

Schritte zum Aktivieren des Ruhezustands

Es beinhaltet diese Schritte

  1. Erstelle eine Datei als root in /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla

    Sudo -i nano /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
    
  2. Fügen Sie diesen Inhalt in diese Datei ein

    [Re-enable hibernate by default in upower]
    Identity=unix-user:*
    Action=org.freedesktop.upower.hibernate
    ResultActive=yes
    
    [Re-enable hibernate by default in logind]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
    ResultActive=yes
    
  3. Speichern Sie die Datei mit Ctrl-O. Beenden Sie mit Ctrl-X

  4. Starten Sie den Dämon polkitd neu

    Sudo systemctl restart polkitd.service
    

Es sollte den Ruhezustand aktivieren.

19
Anwar

Sicherer Startvorgang

(Ich habe eine ähnliche Frage gefragt, ob ich mich auf systembasierte Antworten konzentrieren möchte, und meine Lösung hier für Leute, die dieser Frage folgen, geteilt.)

Diese Lösung kommt von Fedora Themen (sie haben vor einiger Zeit zu systemd gewechselt, damit es mehr Material gibt).

In meinem Fall (frische 16.04.1-Installation auf einem Computer, der immer den Ruhezustand unterstützte) schien das Aufrufen des veralteten Sudo pm-hibernate nichts zu bewirken, und der aktuelle systemd-Ansatz systemctl hibernate würde Folgendes zurückgeben:

Failed to hibernate system via logind: Sleep verb not supported

Es stellt sich heraus, dass sicheres Booten der Schuldige war: Bei der Installation von 16.04 werden Sie gefragt, was Sie damit machen möchten (was, soweit ich mich erinnern kann, neu ist), und ich habe es eingeschaltet gelassen, ohne viel darüber nachzudenken.

Auf meinem Computer mit eingeschaltetem Secure Boot antwortete cat /sys/power/disk:

 [disabled]

Nach dem Neustart und dem Deaktivieren von Secure Boot in den BIOS-Einstellungen (diese sind maschinenspezifisch, aber normalerweise ziemlich einfach) habe ich einen cat /sys/power/disk versucht und Folgendes erhalten:

 [platform] shutdown reboot suspend 

was besser aussieht. Und tatsächlich führt das Aufrufen von systemctl hibernate zu einer erfolgreichen Ruhe-/Auftausequenz.

Danach konnte ich den Ruhezustand an verschiedenen Stellen der grafischen Benutzeroberfläche als Option anzeigen, ohne dass ein polkit -Hack erforderlich war. Es scheint also, dass systemd tatsächlich von /sys/power/disk vermutet hat, dass das System nicht in der Lage war, in den Ruhezustand zu wechseln.

7
Marc

Diese Anweisung funktionierte für meine Ubuntu 18.04-Installation.

  1. Sudo apt install hibernate Installiert den Ruhezustand und andere Abhängigkeiten, die für den Ruhezustand erforderlich sind
  2. grep swap /etc/fstab (fing UUID)
  3. sudoedit /etc/default/grub In der Zeile GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash" füge die UUID des Swaps hinzu. Die Zeile sieht folgendermaßen aus: GRUB_CMDLINE_LINUX_DEFAULT = "Silent Splash Resume = UUID des Swap"
  4. Sudo update-grub
  5. Neustart und nach dem Neustart Sudo systemctl hibernate. Wenn alles in Ordnung ist, fügen Sie Menüeinträge hinzu.
  6. Sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla jetzt einfügen:
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

kopiert von https://askubuntu.com/a/819891/7122

  1. Starte den Computer neu
  2. Installieren Sie https://extensions.gnome.org/extension/755/hibernate-status-button/
5

Bei mir funktioniert es, das Paket hibernate zu installieren, neu zu starten und dann Sudo hibernate-disk auszuführen. Ich bin sicher, dass es möglich ist, es zum Menü hinzuzufügen, aber es lohnt sich nicht für mich.

4
Aiphee

Als ich meinen eigenen Kommentar zu Kelvineloves Antwort erweitere, existierte die von ihm vorgeschlagene Datei nicht auf meinem System (frisches Ubuntu 16.04). Stattdessen habe ich Folgendes getan:

  1. Sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

  2. Suchen Sie nach diesen Abschnitten (sie stimmen überein):

    [Ruhezustand in Upower standardmäßig deaktivieren] Identität = Unix-Benutzer: * Aktion = org.freedesktop.upower.hibernate ResultActive = no

    [Ruhezustand in logind standardmäßig deaktivieren] Identität = Unix-Benutzer: * Aktion = org.freedesktop.login1.hibernate; org.freedesktop.login1.handle-hibernate-key; ResultActive = no

  3. Ändern Sie ResultActive = no in ResultActive = yes für beide.

  4. Drücken Sie Strg + O, um die Datei zu speichern.
  5. Starte deinen Computer neu
  6. Die Option Ruhezustand ist jetzt in Ihren Hauptmenüs verfügbar.

BEARBEITEN: Gunnar wies darauf hin, dass diese Datei überschrieben wird, wenn ein bestimmtes Paket aktualisiert wird. Abhängig von Ihren Absichten ist dies höchstwahrscheinlich nicht die beste Lösung.

Quelle: http://www.zedt.eu/tech/linux/enable-hibernation-xubuntu-16-04/

4
fgblomqvist

Hier finden Sie einige sehr gute Ressourcen, mit denen Sie einige der häufigsten Probleme mit dem Ruhezustand unter Ubuntu beheben können.

In meinem Fall musste ich, um Ubuntu 16.10 auf einem Lenovo u300s auszuführen, die folgenden Schritte ausführen, damit der Ruhezustand ordnungsgemäß funktioniert:

  • Erstellen Sie eine Auslagerungsdatei mit entsprechender Größe (ich habe in der Regel eine Größe von ~ 1x festgelegt, aber ich habe bis zu 1,6x und 2x gehört).
  • Bearbeiten Sie /etc/default/grub, um die folgende Zeile einzuschließen:

    GRUB_CMDLINE_LINUX_DEFAULT="splash quiet pci=nomsi RESUME=UUID=92781adb-f2a6-4f15-88fc-e1ce801291dd"
    

Der RESUME bezieht sich auf Ihre spezifische Auslagerungsdatei-UUID. Insbesondere bei meiner Maschineneinstellung war pci=nomsi der Schlüssel.

Viel Glück!

3
richbl

Zunächst empfehle ich, dass Sie testen, ob Ihr Computer den Ruhezustand unterstützt, da der Grund, warum der Ruhezustand standardmäßig deaktiviert ist, darin besteht, dass er auf einigen Computern manchmal unangenehme Ergebnisse liefert. Testen Sie Ihr Gerät, indem Sie das Terminal öffnen (Ctrl+Alt+T) und dann Sudo pm-hibernate

Ihr Computer sollte sich im Ruhezustand befinden. Schalten Sie Ihr Gerät nach dem Ruhezustand wieder ein und beobachten Sie, ob es sich nicht richtig verhält oder ob es normal funktioniert. Wenn Sie nach dem Winterschlaf eine Abnormalität feststellen, raten wir Ihnen, das folgende Verfahren nicht fortzusetzen. Wenn dies jedoch einwandfrei funktioniert, aktivieren Sie den Ruhezustand folgendermaßen weiter:

Sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

Bearbeiten Sie die geöffnete Datei und fügen Sie diese Zeilen hinzu:

[Re-enable hibernation]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Starten Sie danach den Computer neu. Nach der Anmeldung sollte oben rechts im Energie-Menü eine Option für den Ruhezustand angezeigt werden.

3
kelvinelove

Sie müssen es mit ein wenig Aufwand manuell aktivieren. Es ist standardmäßig deaktiviert.

http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/

Wenn dies nicht funktioniert, liegt möglicherweise ein 4.4.0-Kernelproblem vor, und Sie müssen möglicherweise den Kernel aktualisieren.

1
Mookey