Hibernate your laptop (Fedora 25)

You can hibernate your laptop for faster boot next time. Hibernate is suspending to disk , so you'll need swap partition. I dont use suspend to RAM because it sucks battery. Follow these steps to make hibernate work using Fedora 25/24:

Create swap partition or logical volume (LV)

Common size for hibernating:
RAM 8 GB  create 12 GB swap
RAM 4 GB  create 8 GB swap
RAM 2 GB  create 4 GB swap

Format swap partition

Check new created swap using lsblk -p

For example:
mkswap /dev/mapper/VG-Swap

Add swap to fstab

/dev/mapper/VG-Swap            swap            swap    defaults  0  0

Activate and check

swapon -a

swapon --show     #or swapon -s

Recreate initramfs

dracut --force

Edit grub cmdline

dracut --print-cmdline

will print recommended GRUB_CMDLINE_LINUX

Add resume= and rd.lvm.lv= lines to /etc/default/grub (GRUB_CMDLINE_LINUX=)

For example:

GRUB_CMDLINE_LINUX="rd.lvm.lv=VG/Swap rd.lvm.lv=VG/Fedora24-root resume=/dev/mapper/VG-Swap root=/dev/mapper/VG-Fedora24--root rootfstype=ext4 rootflags=rw,noatime,nodiratime,lazytime,seclabel,data=ordered"

Regenerate grub.cfg

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

Install gnome extension and change gnome Power Settings

Install Hibernate Status Button by p91paul

Open Settings - Power, When Power button is pressed: Hibernate

Edit logind

vim /etc/systemd/logind.conf

HandlePowerKey=hibernate

HandleLidSwitch=hibernate (I use HandleLidSwitch=poweroff to avoid rapid suspend resume when battery low)

Edit image_size to hibernate faster:

vim /etc/rc.d/rc.local
#!/bin/bash
# in bytes, my RAM is 8GB
echo 8000000000 > /sys/power/image_size

chmod +x /etc/rc.d/rc.local


Reboot once, check if resume= is correct and swap is enabled

cat /proc/cmdline

swapon --show         #or swapon -s

Try to hibernate and resume

When hibernating wait until led is not flashing (on my Thinkpad)
When resuming, your previous running application will be restored

UPDATE:
To run command before hibernate:

touch /usr/lib/systemd/system-sleep/sleep.sh
chmod +x /usr/lib/systemd/system-sleep/sleep.sh
vim /usr/lib/systemd/system-sleep/sleep.sh

#!/bin/bash
if [ "$1X" = "preX" ];  then
    if [ "$2X" = "hibernateX" ];  then
        systemctl stop httpd postgresql mariadb
        killall -r wineserver
        killall -r .exe
        killall firefox
        killall chrome
        killall steam
        #killall soffice.bin
        killall java
        #killall dropbox
        killall evolution
        sleep 2
        killall -HUP steam
        sleep 1   
    fi
fi


Comments

Popular posts from this blog

Optimize SSD on Linux

Manually clean up zimbra zmcat/zmcpustat exploit

Ports to allow for whatsapp call