PM: Hibernation-Image nicht vorhanden oder konnte nicht geladen werden

PM: Hibernation-Image nicht vorhanden oder konnte nicht geladen werden

Nach dem Ruhezustand mit systemctl hibernatebootet das System normal, als ob es heruntergefahren worden wäre. Ich habe den Resume-Parameter in der Kernelzeile und den Resume-Hook in mkinitcpio.conf

Dies sind die relevanten Kernelmeldungen:

$ dmesg | grep -i swap
[    0.000000] Command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[    0.000000] Kernel command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[    0.350295] PM: Checking hibernation image partition /dev/sda4
[    8.776686] Adding 8191996k swap on /dev/sda4.  Priority:-1 extents:1 across:8191996k FS
$ dmesg | grep -i hibern
[    0.350295] PM: Checking hibernation image partition /dev/sda4
[    0.350301] PM: Hibernation image not present or could not be loaded.

Die einzige verbleibende Möglichkeit ist also, dasssystemctl hat nicht auf die Festplatte geschrieben. Tatsächlich wird beim Ausführen des Befehls der Bildschirm zunächst für einige Sekunden schwarz, dann kann ich mein Terminal wieder sehen und schließlich fährt es sich selbst herunter.

Ich habe gelesen, dass pm-utils nicht besonders gut mit systemd funktionieren, daher würde ich nicht darauf umsteigen wollen. Irgendwelche Vorschläge?

Danke!

Antwort1

Um den Kommentar von @AdrianRatnapala näher auszuführen, müssen Sie:

  1. Finden Sie die UUID Ihrer Swap-Partition. Angenommen, die Partition ist sdb3, dann

    $ ls -l /dev/disk/by-uuid/ | grep sdb3
    lrwxrwxrwx 1 root root 10 окт.   9 08:59 1dd7e123-1f82-45f0-a202-0ff3ea6f081a -> ../../sdb3
    
  2. Öffnen Sie /etc/default/grubund suchen Sie die Zeile, die mit beginnt GRUB_CMDLINE_LINUX_DEFAULT=". Fügen Sie dort zwischen den Anführungszeichen ein resume=/dev/disk/by-uuid/your-swap-uuid. Als Beispiel:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/disk/by-uuid/1dd7e123-1f82-45f0-a202-0ff3ea6f081a"
    
  3. Als Root ausführenupdate-grub
  4. Um die neue Kernel-Befehlszeile zu verwenden, ist ein Neustart erforderlich.

Antwort2

Ich möchte meinen Erfolg hier teilen, da er anderen bei diesem Problem helfen könnte. Fazit für diejenigen, die die Details überspringen möchten: Nachdem Sie die Zeile GRUB_CMDLINE_LINUX_DEFAULT in der Datei /etc/default/grub geändert und update-grub ausgeführt haben, fahren Sie den Computer vollständig herunter und starten Sie ihn neu, bevor Sie den Ruhezustand ausprobieren.

Die Einzelheiten: Ich habe gerade erfolgreich den Ruhezustand auf der Linux-Installation meines Lenovo ThinkPad T480 (Dual-Boot von Debian 9 und Windows) implementiert, indem ich den obigen Rat befolgt und den Parameter resume=UUID= zur Zeile GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub hinzugefügt habe. Aber beim ersten Mal hat es nicht funktioniert. Ich habe den Parameter hinzugefügt, update-grub ausgeführt und versucht, den Ruhezustand zu aktivieren (systemctl-hibernate). Das System schien in den Ruhezustand zu wechseln, aber beim Wiedereinschalten erschien das vorherige Bildschirmbild und blieb einige Sekunden bestehen, bevor die Maschine zum Anmeldebildschirm ging, der normalerweise beim ersten Start angezeigt wird; alle Arbeit, die vor dem Ruhezustand vorhanden war, war weg. Schließlich bemerkte ich (grep 'Befehlszeile'-Syslog), dass die geänderte Zeile GRUB_CMDLINE_LINUX_DEFAULT NICHT an den Kernel übergeben worden war. Nach weiterem Aufwand stellte ich fest, dass ein vollständiges Herunterfahren und Neustarten dazu führen WÜRDE, dass die geänderte Zeile übergeben würde (erneut grep 'Befehlszeile'-Syslog). Danach wurde wie zuvor durch systemctl hibernate der Ruhezustand herbeigeführt, beim Einschalten wurde der vorherige Zustand der Maschine jedoch korrekt wiederhergestellt.

verwandte Informationen