Povolení hibernace na Linuxu

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání

Ubuntu 24.04

Jako u #Ubuntu 22.04 a dále:

  • Pro zobrazení menu hibernace vložit text do souboru:
sudo mcedit /etc/polkit-1/rules.d/10-enable-hibernate.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.hibernate" ||
        action.id == "org.freedesktop.login1.hibernate-multiple-sessions" ||
        action.id == "org.freedesktop.upower.hibernate" ||
        action.id == "org.freedesktop.login1.handle-hibernate-key" ||
        action.id == "org.freedesktop.login1.hibernate-ignore-inhibit")
    {
        return polkit.Result.YES;
    }
});

Ubuntu 22.04

Povolení hibernace se swap souborem:

  • Make your /swapfile have at least the size of your RAM
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=$(cat /proc/meminfo | grep MemTotal | grep -oh '[0-9]*') count=1024 conv=notrunc
sudo mkswap /swapfile
sudo swapon /swapfile

Note the UUID of the partition containing your /swapfile:

sudo findmnt -no SOURCE,UUID -T /swapfile
/dev/nvme0n1p5 20562a02-cfa6-42e0-bb9f-5e936ea763d0
  • Get the resume offset of your /swapfile:
    • Run sudo filefrag -v /swapfile
    • In the "physical_offset" column, copy the first row number (without dots). Value example: 34816.
  • Configure Grub to resume from the swapfile by editing /etc/default/grub and modify the following line:
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34816 quiet splash"
  • Update Grub:
sudo update-grub
  • Create the following /etc/initramfs-tools/conf.d/resume:
RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816
# Resume from /swapfile
  • Update initramfs:
sudo update-initramfs -u -k all
  • K povolení volby hibernace v menu upravte soubor:
sudo mcedit /var/lib/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

Přidat následující obsah:

[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
ResultActive=yes

Now you can hibernate with:

  • From power off menu
  • From command line:
sudo systemctl hibernate
  • From command line:
sudo pm-hibernate

Troubleshooting

Check why systemctl hibernate doesn't work:

systemctl status systemd-hibernate.service

See also