{"id":4105,"date":"2019-12-27T00:13:28","date_gmt":"2019-12-26T23:13:28","guid":{"rendered":"https:\/\/rephlex.de\/blog\/?p=4105"},"modified":"2020-10-30T12:08:24","modified_gmt":"2020-10-30T11:08:24","slug":"how-to-hibernate-and-resume-from-swap-file-in-ubuntu-20-04-using-full-disk-encryption","status":"publish","type":"post","link":"https:\/\/rephlex.de\/blog\/2019\/12\/27\/how-to-hibernate-and-resume-from-swap-file-in-ubuntu-20-04-using-full-disk-encryption\/","title":{"rendered":"How to hibernate and resume from swap file in Ubuntu 20.04 using full disk encryption"},"content":{"rendered":"\n<p>On my laptop, I am running full disk encryption (LUKS with a single encrypted ext4 partition), and a single, large swap file as large as my system RAM (16GB).<\/p>\n\n\n\n<p>Here&#8217;s how to make it work:<\/p>\n\n\n\n<p>Make your swapfile have at least the size of your systems RAM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo swapoff \/swapfile\nsudo dd if=\/dev\/zero of=\/swapfile bs=$(cat \/proc\/meminfo | grep MemTotal | grep -oh '&#91;0-9]*') count=1024 conv=notrunc\nsudo mkswap \/swapfile\nsudo swapon \/swapfile<\/code><\/pre>\n\n\n\n<p>Note the UUID of the partiton containing your swapfile:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo findmnt -no SOURCE,UUID -T \/swapfile\n\/dev\/nvme0n1p5 20562a02-cfa6-42e0-bb9f-5e936ea763d0<\/code><\/pre>\n\n\n\n<p>Reconfigure the package uswsusp correctly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt -y install uswsusp\nsudo dpkg-reconfigure -pmedium uswsusp\n# Answer \"Yes\" to continue without swap space\n# Select \"\/dev\/disk\/by-uuid\/20562a02-cfa6-42e0-bb9f-5e936ea763d0\" replace the UUID with the result from the previous findmnt command\n# Encrypt: \"No\"<\/code><\/pre>\n\n\n\n<p>Edit the SystemD hibernate service using&nbsp;<code>sudo systemctl edit systemd-hibernate.service<\/code>&nbsp;and fill it with the following content:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Service]\nExecStart=\nExecStartPre=-\/bin\/run-parts -v -a pre \/lib\/systemd\/system-sleep\nExecStart=\/usr\/sbin\/s2disk\nExecStartPost=-\/bin\/run-parts -v --reverse -a post \/lib\/systemd\/system-sleep<\/code><\/pre>\n\n\n\n<p>Note the offset of your swapfile relative to the partition start:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo swap-offset \/swapfile\nresume offset = 34818<\/code><\/pre>\n\n\n\n<p>Tell grub to resume by editiing your etc\/default\/grub<\/p>\n\n\n\n<p><strong><em>NOTE: THE OFFSET IS DIFFERENT FROM SYSTEM TO SYSTEM! YOU NEED TO USE THE VALUE RETURNED ON YOUR SYSTEM!<\/em><\/strong><\/p>\n\n\n\n<p><code>GRUB_CMDLINE_LINUX_DEFAULT=\"resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash\" <\/code><\/p>\n\n\n\n<p>Update grub:<\/p>\n\n\n\n<p><code>sudo update-grub <\/code><\/p>\n\n\n\n<p>Create \/etc\/initramfs-tools\/conf.d\/resume<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816\n# Resume from \/swapfile<\/code><\/pre>\n\n\n\n<p>Update initramfs:<\/p>\n\n\n\n<p><code>sudo update-initramfs -u -k all <\/code><\/p>\n\n\n\n<p>Now you can just hibernate your system with<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo systemctl hibernate<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>On my laptop, I am running full disk encryption (LUKS with a single encrypted ext4 partition), and a single, large swap file as large as my system RAM (16GB). Here&#8217;s how to make it work: Make your swapfile have at least the size of your systems RAM: Note the UUID of the partiton containing your [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[459,455,726,722,721,297,718,723,454,725,724,727,729,542,720,719,47,458],"class_list":["post-4105","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-boot","tag-cryptsetup","tag-disk","tag-encrypted","tag-enctyption","tag-grub","tag-hibernate","tag-key","tag-luks","tag-passphrase","tag-password","tag-ram","tag-sleep","tag-suspend","tag-swap","tag-swap-file","tag-ubuntu","tag-unlock"],"_links":{"self":[{"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/posts\/4105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/comments?post=4105"}],"version-history":[{"count":4,"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/posts\/4105\/revisions"}],"predecessor-version":[{"id":4171,"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/posts\/4105\/revisions\/4171"}],"wp:attachment":[{"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/media?parent=4105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/categories?post=4105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rephlex.de\/blog\/wp-json\/wp\/v2\/tags?post=4105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}