wiki-system/add-right-fit-swap-for-laptop-hibernation-during-ubuntu-20.04-full-ZFS-install.md
2020-06-22 10:02:40 +02:00

3.7 KiB

add right fit swap for laptop hibernation during ubuntu 20.04 full ZFS install

create swap partition to permit Hibernate

create a swap partition right sized for hibernation.

add theses 2 lines in : /usr/share/ubiquity/zsys-setup

MEMSIZE=$(cat /proc/meminfo | grep MemTotal | awk -F' ' '{print $2}')
SWAPVOLSIZE=$(( MEMSIZE / 1024 ))

like bellow :

	# Convert to MiB to align the size on the size of a block
	SWAPVOLSIZE=$(( SWAPSIZE / 1024 / 1024 ))
    
MEMSIZE=$(cat /proc/meminfo | grep MemTotal | awk -F' ' '{print $2}')
SWAPVOLSIZE=$(( MEMSIZE / 1024 ))

	prepare_target "${TARGET}"
	format_disk "${DISK}" "${PARTBASE}" "${PARTESP}" "${PARTBPOOL}" "${PARTRPOOL}" "${SWAPVOLSIZE}"
	init_zfs "${TARGET}" "${DISK}${PARTBASE}${PARTBPOOL}" "${DISK}${PARTBASE}${PARTRPOOL}"
	init_system_partitions "${TARGET}" "${DISK}${PARTBASE}1" "${DISK}${PARTBASE}${PARTESP}"

Run ubiquity to start the installer and install as normal, selecting “Use entire disk” and the option to use ZFS.

source : Linsomniac's Articles - Encrypting ZFS on Ubuntu 20.04

activate hibernation in system

Disable secure boot in bios to permit Hibernate.

souce :

apt install pm-utils
update-initramfs -u -k $(uname -r)
pm-hibernate
printf "RESUME=UUID=$(blkid | awk -F\" '/swap/ {print $2}')\n" | head -n 1| sudo tee /etc/initramfs-tools/conf.d/resume

you can check with : blkid

update-initramfs -u -k all

change /etc/default/grub : add your resume UUID into GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=75034ff5-...-9e4564e16d34"

enable hibernate in system

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

[Réactive hiberner par défaut dans upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Réactive hiberner par défaut dans 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

configure hibernate to auto switch from sleep to hibernate

edit : /etc/systemd/sleep.conf

And add this value to it (The number represents seconds you want to pass in sleep, after which the computer will switch to hibernation, so you can put it in 60 seconds or something short just to check it's working and after that you can put whatever ammount of time you want):

[Sleep]

HibernateDelaySec=7200

kernel lockdown prevent hibernation :

Hiberner au bout de x secondes après une mise en veille

encrypt swap partition

apt-get install ecryptfs-utils
apt install cryptsetup-bin
swapoff -a
cryptsetup luksFormat --cipher aes-xts-plain64 --verify-passphrase --key-size 256 /dev/nvme0n1p2

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mapper/cryptswap1"