#!/bin/sh TODO: Das muss noch entwickelt geteset werden # It is possible to use a swap file on btrfs, but there are some considerations that need taking care of. # btrfs filesystem doesn't let to create snapshots if there is a working swap file on the subvolume. That means that it is highly recommended to place a swap file on a separate subvolume. # Let's assume that the current swap is already off, the / is on /dev/sda1 and Ubuntu is installed with / on @ subvolume and /home is on @home subvolume. # Mount /dev/sda1 to /mnt. sudo mount /dev/sda1 /mnt # If you run ls /mnt, you'll see @, @home and other subvolumes that may be there. # Create a new @swap subvolume. sudo btrfs sub create /mnt/@swap # Unmount /dev/sda1 from /mnt. sudo umount /mnt # Create /swap directory where we plan to mount the @swap subvolume. sudo mkdir /swap # Mount the @swap subvolume to /swap. sudo mount -o subvol=@swap /dev/sda1 /swap # Create the swap file. sudo touch /swap/swapfile # Set 600 permissions to the file. sudo chmod 600 /swap/swapfile # Disable COW for this file. sudo chattr +C /swap/swapfile # Set size of the swap file to 8G as an example. sudo dd if=/dev/zero of=/swap/swapfile bs=1M count=8192 # Format the swapfile. sudo mkswap /swap/swapfile # Turn the swap file on. sudo swapon /swap/swapfile # Now the new swap should be working. # # You also need to update /etc/fstab to mount all this on boot. Add there two lines: # uuid from Dev uuid=$(lsblk -n -o UUID /dev/sda1) sudo echo "UUID=$uuid /swap btrfs subvol=@swap 0 0 /swap/swapfile none swap sw 0 0" >> /etc/fstab # The UUID is the one of your /dev/sda1.