Skip to content

Adding swap after installation

by Bryanpwo edited by joekamprad (12.08.2020) + (24.02.2021) + (28.09.2023)

To add after installation there are two options:

1. creating a swap partition by shrinking space and adding a partition using Gparted on the Live ISO

2. creating a swap file.

Early SSDs had a reputation for failing after fewer writes than HDDs.

This might be why you heard it could be bad to use an SSD for swap.

Modern SSDs don’t have this issue

Making a swap partition with Gparted

Boot your machine with the Live ISO and open Gparted. Select the last partition on your HDD (this can either be the Root partition or the Home partition, depending on how you partitioned your disk) and shrink the partition by leaving a disk space free equal to the size of your RAM or double the size, that’s up to you. Then select the free space and mark it as a swap partition, let Gparted do its work, and boot back into your installed system and swap should be recognized by systemd. To check enter:

swapon --show

Making a swap file

The above method is the easiest one, but it can damage the partition that you’ve shrunk. So you can also make a swap file.

Commands like cp(1) or truncate(1) create files with holes. These files will be rejected by swapon.

Preallocated files created by fallocate(1) may be interpreted as files with holes too depending of the filesystem.

As documented here: swapon.8#Files_with_holes

So as Archwiki recommends better use dd command with some danger of using a Destroyer of Disks.

!! This following step is only needed if you run on Btrfs filesystem !!

Notes if you are using Btrfs

For Btrfs, first create a zero-length file, set the No_COW attribute on it with chattr, and make sure compression is disabled. This is not needed on other filesystems (like ext4) !!

sudo truncate -s 0 /swapfile
sudo chattr +C /swapfile
sudo btrfs property set /swapfile compression none

If you are using a subvol for swap like current default BTRFS installs will do your swapfile location needs to be changed to /swap/swapfile instead of /swapfile.

Further for all file systems:

Use dd to create a swap file the size of your choosing. For example, creating a 512 MiB swap file (for all filesystems)

sudo dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress

Replace count=512 with the amount of MB you want to install for swap use. then:

sudo chmod 600 /swapfile

To give the swap file root-only permissions.

sudo mkswap /swapfile

To make the file as swap space and finally to enable the file:

sudo swapon /swapfile

Edit the fstab configuration to add an entry for the swap file:

/etc/fstab

/swapfile none swap defaults 0 0

Note: The swap file must be specified by its location on the file system, not by its UUID or LABEL.

to check:

swapon --show

Remove swap file:

To remove a swap file, it must be turned off first and then can be removed:

sudo swapoff /swapfile
sudo rm -f /swapfile

Finally, remove the relevant entry from /etc/fstab.

Adding swap after installation

  • by