125 lines
4.1 KiB
Markdown
125 lines
4.1 KiB
Markdown
# right fit swap for laptop hibernation Ubuntu 20.04 full ZFS install
|
|
## sources
|
|
|
|
* [rephlex.de - How to hibernate and resume from swap file in Ubuntu 20.04 using full disk encryption](https://rephlex.de/blog/2019/12/27/how-to-hibernate-and-resume-from-swap-file-in-ubuntu-20-04-using-full-disk-encryption/)
|
|
* [doc.ubuntu-fr.org - Comment activer l'hibernation](https://doc.ubuntu-fr.org/tutoriel/activer_hibernation)
|
|
|
|
|
|
## bios setup
|
|
|
|
You have to disable secure boot in bios to permit Hibernate because of *kernel lockdown prevent hibernation* see links bellow :
|
|
|
|
* [stackexchange - Why does the kernel lockdown prevent hibernation?](https://unix.stackexchange.com/questions/591488/why-does-the-kernel-lockdown-prevent-hibernation)
|
|
|
|
## create swap partition to permit Hibernate
|
|
|
|
create a swap partition right sized for hibernation.
|
|
|
|
add theses 2 lines in : */usr/share/ubiquity/zsys-setup*
|
|
|
|
~~~{.shell}
|
|
MEMSIZE=$(cat /proc/meminfo | grep MemTotal | awk -F' ' '{print $2}')
|
|
SWAPVOLSIZE=$(( MEMSIZE / 1024 ))
|
|
~~~
|
|
|
|
like bellow :
|
|
|
|
~~~{.shell}
|
|
# 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.
|
|
|
|
## activate hibernation in system
|
|
Disable secure boot in bios to permit Hibernate.
|
|
|
|
~~~
|
|
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
|
|
|
|
source : [Linux Mint Forums : Enable Hibernation with LUKS on LVM and extras](https://forums.linuxmint.com/viewtopic.php?t=287015)
|
|
|
|
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
|
|
~~~
|
|
|
|
Modify this two lines in /etc/systemd/logind.conf for sleep key and closing the lid actions if that's how you want it:
|
|
|
|
~~~
|
|
HandleSuspendKey=suspend-then-hibernate
|
|
HandleLidSwitch=suspend-then-hibernate
|
|
~~~
|
|
|
|
Hiberner au bout de x secondes après une mise en veille
|
|
[](https://doc.ubuntu-fr.org/veille_et_hibernation)
|
|
|
|
## 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
|
|
~~~
|
|
|
|
[](https://help.ubuntu.com/community/EnableHibernateWithEncryptedSwap#Preparation)
|
|
[](http://tlbdk.github.io/ubuntu/2018/10/22/encrypted-swap.html)
|
|
[](https://forums.linuxmint.com/viewtopic.php?t=287015)
|
|
|
|
~~~
|
|
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mapper/cryptswap1"
|
|
~~~ |