# encrypt swap Ubuntu 20.04 with hibernation

## prerequisite

* all command bellow are run has root
* install ecryptfs

~~~{bat}
root@laptop:/root# install apt-get install ecryptfs-utils
~~~

## encrypt swap

* turn off current swap

~~~
root@laptop:/root# swapoff -a
~~~

* encrypt swap partition

~~~
root@laptop:/root# cryptsetup luksFormat --cipher aes-xts-plain64 --verify-passphrase --key-size 256 /dev/nvme0n1p2
root@laptop:/root# cryptsetup open /dev/nvme0n1p2 cryptswap
~~~

* set up the crypt partition as swap.

~~~
root@laptop:/root# mkswap /dev/mapper/cryptswap
~~~

* ajust **/etc/fstab** to use your mapper, replace your encrypt swap device like bellow :

~~~
/dev/mapper/cryptswap   none   swap   discard   0   0
~~~

* add your encrypt swap device define in **/etc/crypttab**

~~~
cryptswap   /dev/nvme0n1p2		none	luks
~~~

* enable swap

~~~
root@laptop:/root# swapon -a
~~~

* edit **/etc/initramfs-tools/conf.d/resume**. Replace the existing **RESUME** line with the following line.

~~~
root@laptop:/root# printf "RESUME=/dev/mapper/cryptswap" | tee /etc/initramfs-tools/conf.d/resume
~~~

* Register these changes.

~~~
root@laptop:/root# update-initramfs -u -k all
~~~


* Change your /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT to point to remove or be sure there is nothing in resume

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

~~~
root@laptop:/root# update-grub
~~~

### to be solve

~~~
cryptsetup: ERROR: Couln't resolve device rpool/ROOT/ubuntu_...
cryptsetup: WARNING: Couln't determine root device
~~~

## sources
* [wiki.archlinux.org - dm-crypt/Swap encryption](https://wiki.archlinux.org/index.php/Dm-crypt/Swap_encryption#LVM_on_LUKS)
* [help.ubuntu.com - Enable Hibernate With Encrypted Swap](https://help.ubuntu.com/community/EnableHibernateWithEncryptedSwap)