User Tools

Site Tools


hibernate_from_a_non_activate_swapfile_from_btrfs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
hibernate_from_a_non_activate_swapfile_from_btrfs [2020/12/16 09:06] memeruizhibernate_from_a_non_activate_swapfile_from_btrfs [2021/02/01 05:55] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Hibernate from a non activate swapfile from btrfs ====== ====== Hibernate from a non activate swapfile from btrfs ======
 +
 +*** Important! *** This didn't work! It is not secure! When wiping happens, the file gets moved to another place by btrfs, then, this doesn't work for two reasons: 1) Wiping happens in other parts of the disk, and the offset changes and has to be updated in all configurations files after wiping everytime.
 +
 +* This was just a stupid experiment.
  
 ===== Create swapfile ===== ===== Create swapfile =====
Line 11: Line 15:
  
  
-  UUID=8f9ede3a-912f-40d6-9335-90ed3186e3e4              /swap            btrfs defaults,noautodefrag,nodiscard,noatime,subvol=swap 0 0+  UUID=8f9ede3a-912f-40d6-9335-90ed3186e3e4              /swap            btrfs defaults,noautodefrag,nodatacow,nodiscard,noatime,subvol=swap 0 0
  
   * Be sure there is no discard nor autodefrag options activated for this subvolume   * Be sure there is no discard nor autodefrag options activated for this subvolume
Line 58: Line 62:
 ===== Configure system for hibernation ===== ===== Configure system for hibernation =====
  
-  * Install u+ 
 +  * Create /etc/initramfs-tools/conf.d/resume and put the resume and offset data on it: 
 + 
 +  RESUME=UUID=8f9ede3a-912f-40d6-9335-90ed3186e3e4 resume_offset=1121793 
 + 
 +  * Modify /etc/default/grub with the corresponding resume and offset values: 
 + 
 +  GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=8f9ede3a-912f-40d6-9335-90ed3186e3e4 resume_offset=1121793 quiet btusb.enable_autosuspend=n" 
 + 
 +  * Activate the swap file 
 + 
 +  sudo swapon /swap/swapfile 
 + 
 +  * Install uswsusp package 
 +  * Edit /etc/uswsusp.conf: 
 + 
 +  resume device = /dev/disk/by-uuid/8f9ede3a-912f-40d6-9335-90ed3186e3e4 
 +  early writeout = y 
 +  image size = 0 
 +  RSA key file = /etc/uswsusp.key 
 +  shutdown method = platform 
 +  resume offset = 1121793 
 + 
 +  * Activate a systemd service: 
 + 
 +  sudo systemctl edit systemd-hibernate.service 
 + 
 +  * With: 
 + 
 +  [Service] 
 +  ExecStart= 
 +  ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep 
 +  ExecStart=/usr/sbin/s2disk 
 +  ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep 
 + 
 +  * Update initramfs and grub 
 + 
 +  sudo update-grub 
 +  sudo update-initramfs -k all -u 
 +  sudo update-grub 
 + 
 +  * Test the hibernation: 
 + 
 +  sudo s2disk 
 + 
 +I have a system with encrypted swap, but I don't want to have encryption on the hibernation swap file. My idea is to use hibernation only when strictly necessary, because I don't want to need to put a password during booting.  Then, this swap file should actually be always deactivated except before hibernation. When resuming, this swap space should be deactivated and then securely wiped! The script to do this would be this: my_server_hibernate.sh: 
 + 
 +#!/bin/bash 
 + 
 +  echo "Activating swap from swapfile" 
 +  sudo swapon /swap/swapfile 
 +  sleep 1 
 +  echo "Hibernating" 
 +  sleep 0.2 
 +  xtrlock -b & 
 +  sudo s2disk 
 +  echo "Returning from Hibernate" 
 +  sleep 10 
 +  echo "Deactivating swapfile" 
 +  sudo swapoff /swap/swapfile 
 +  sleep 5 
 +  echo "Wiping swapfile" 
 +  #sudo wipe -k -f -q -Q 1 /swap/swapfile 
 +  sudo dd if=/dev/zero of=/swap/swapfile bs=1M count=24576 status=progress #reserve 24GB 
 +  sync 
 +  sleep 1 
 +  echo "Making swapfs again" 
 +  sudo mkswap /swap/swapfile 
 +  echo "All done, ready to hiberante again" 
 + 
 +===== References ===== 
 + 
 + 
 +https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file_on_Btrfs 
 + 
 +https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file 
 + 
 +https://wiki.archlinux.org/index.php/Swap#Swap_file_creationhttps://wiki.archlinux.org/index.php/Swap#Swap_file_creation 
 + 
 +https://askubuntu.com/questions/6769/hibernate-and-resume-from-a-swap-file 
 + 
 +https://wiki.debian.org/Hibernation/Hibernate_Without_Swap_Partition 
 + 
 +https://wiki.debian.org/Hibernation 
 + 
 +https://unix.stackexchange.com/questions/521686/using-swapfile-for-hibernation-with-btrfs-and-kernel-5-0-16-gentoohttps://unix.stackexchange.com/questions/521686/using-swapfile-for-hibernation-with-btrfs-and-kernel-5-0-16-gentoo 
 + 
 + 
  
hibernate_from_a_non_activate_swapfile_from_btrfs.1608109596.txt.gz · Last modified: 2021/02/01 05:55 (external edit)