Soll-Verhalten Deckel zu → Standby ( s2idle/deep) → nach 30 min Hibernate

System


PunktWert
GerätFramework 13
BIOS03.24
OSKubuntu, Kernel 7.0.0-34-generic
RAM / Swap31 GiB / /swapfile 32 GiB
Secure Bootaus (Lockdown none)
mem_sleeps2idle [deep]

KDE-Energieverwaltung


Überall: Power-Button → Logout-Screen, Ruhezustand-Modus → Standby, then hibernate

ProfilInaktivDeckel zuExt. MonitorDisplay ausPower-Profil
ACSleep nach 30 minSleepnein30 minunverändert
AkkuSleep nach 10 minSleepja30 minBalanced
Akku leerSleep nach 5 minSleepja2 min, 30 % HelligkeitPower Save

Einrichtung seit Clean Install


Swapfile (≥ RAM)

swapon --show   # /swapfile 32G
sudo filefrag -v /swapfile | awk 'NR==4{print $4}'   # resume_offset

Resume

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=e2177607-ada7-44da-a3c2-d8f50987a6f7 resume_offset=27326464 mem_sleep_default=deep"

/etc/initramfs-tools/conf.d/resume

RESUME=UUID=e2177607-ada7-44da-a3c2-d8f50987a6f7 resume_offset=27326464
sudo update-grub
sudo update-initramfs -u

systemd

/etc/systemd/logind.conf

[Login]
SleepOperation=suspend-then-hibernate
HandleLidSwitch=suspend-then-hibernate
HandleLidSwitchExternalPower=suspend-then-hibernate

/etc/systemd/sleep.conf

[Sleep]
SuspendState=mem
HibernateDelaySec=1800

Keine Inline-Kommentare Wert #kommentar → Parse-Fehler, Zeile wird ignoriert. Kommentare nur in eigener Zeile.

Status


  • Swapfile 32 GiB
  • resume / resume_offset in GRUB + initramfs
  • mem_sleep_default=deep
  • logind.conf + sleep.conf auf suspend-then-hibernate, 30 min
  • Inline-Kommentare #suspend aus logind.conf / sleep.conf entfernen
  • secretmem.enable=0 in GRUB setzen
  • Hibernate-Test + Zuklapptest

Wichtige Dateien


DateiZweckDanach
/etc/default/grubKernel-Parametersudo update-grub
/etc/initramfs-tools/conf.d/resumeResume-Zielsudo update-initramfs -u
/etc/systemd/logind.confDeckel-VerhaltenNeustart
/etc/systemd/sleep.confDelay bis HibernateNeustart
/swapfileHibernate-Image
/sys/power/diskHibernate-Status ([disabled] = gesperrt)
/sys/power/mem_sleepStandby-Modus
/sys/power/suspend_stats/Suspend-Erfolge/-Fehler

Logs lesen


Sleep / Hibernate

journalctl -b -t systemd-sleep -t systemd-logind -g "suspend|hibernat|sleep|Lid" --no-pager   # aktueller Boot
journalctl -b -1 -t systemd-sleep -t systemd-logind --no-pager   # vorheriger Boot
journalctl --list-boots
journalctl -k -g "PM:|wakeup|s2idle" --no-pager | tail -n 50   # Kernel
grep . /sys/power/suspend_stats/*   # Erfolge/Fehler
cat /sys/power/pm_wakeup_irq; grep enabled /proc/acpi/wakeup   # Aufwachgründe

Akku

upower -i $(upower -e | grep BAT) | grep -E "state|percentage|energy-rate"
ls /sys/class/power_supply/   # BAT0 oder BAT1

Verlauf per Cronjob (crontab -e)

* * * * * echo "$(date '+\%F \%T') $(cat /sys/class/power_supply/BAT1/capacity)%" >> ~/akku.log

KDE: Energieverwaltung → Energy Information

Diagnose Hibernate


cat /sys/power/disk   # [disabled] = gesperrt
busctl call org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager CanHibernate   # s "yes" erwartet
for p in $(sudo grep -l secretmem /proc/*/maps 2>/dev/null | cut -d/ -f3 | sort -u); do echo "PID $p: $(ps -o comm= -p $p)"; done   # Blocker finden

systemctl can-hibernate gibt es nicht Stattdessen busctl ... CanHibernate

Probleme & Lösungen


Akku leer nach Zuklappen Hibernate nach 30 min scheiterte, Laptop blieb im Standby bis der Akku leer war.

ProblemUrsacheLösung
disk = [disabled], CanHibernate = nabitwarden-app hält secretmem → Kernel sperrt Hibernatesecretmem.enable=0 in GRUB, oder Bitwarden vor Zuklappen beenden / nur Browser-Erweiterung
HandleLidSwitch wirkungslos#suspend-Inline-Kommentare → Parse-Fehler im LogKommentare löschen
Akku leer trotz Standbys2idle/AufwachgrundLog + Wakeup-Quellen prüfen, powertop

Fix

sudo nano /etc/default/grub   # secretmem.enable=0 an GRUB_CMDLINE_LINUX_DEFAULT anhängen
sudo update-grub
sudo reboot

Fallback Startet Bitwarden nicht → Parameter entfernen, App vor Zuklappen beenden.

Test

cat /sys/power/disk   # nicht mehr [disabled]
sudo systemctl hibernate   # Sitzung muss zurückkommen

Danach Zuklapptest: >30 min zu, dann

journalctl -b -t systemd-sleep --no-pager | tail -n 30