Adding swap /hibernation after install

I did a fresh install again on a new laptop dual boot Windows. I created a partition for linux and used replace partition in the installer. Ive been messing with this trying to figure out the best setup. I want the system when i close the lid to hibernate. Right now it is set to suspend but i see i don’t have swap or hibernate so I’m not sure it’s doing that or just shutting down the display. I left it overnight and battery was dead already. My fstab is them following.

# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=F23A-62B4                            /boot/efi      vfat    umask=0077 0 2
UUID=1b3dcd7d-b403-4b62-975f-ebbb0c435982 /              ext4    defaults,noatime 0 1
[ricklinux@eos-xfce ~]$ 

Can i add hibernation after the fact? I need swap file to do that and add info to my fstab?
If i do this I’m looking to have the laptop shutdown on hibernation. Is that the way it hibernates?

1 Like

Yes, you need swap{partition,file} to hibernate.

Also yes, hibernate actually fully powers off the machine after saving your current state into your swap and setting it to resume from swap. However, I will say, if you have an SSD, hibernation doesn’t get you much. Resuming from hibernate vs. power off/on when system is on an SSD is pretty much the same speed (possible 1-3 seconds slower w/ power on, but very similar).

Yes, you can definitely add hibernate after the fact, but there’s a LITTLE more to setting up hibernate from a swapfile than from a swap partition.

I just might wipe this off again and install it with hibernation and try it first. Then i will add Windows maybe? Everything seems to work including backlighting. I’ve been experimenting with it. It’s not that I mind Windows it’s the 3rd party crapware and Microsoft’s own crap it installs. I usually take everything out except for Windows 10 and then i add what i want with software. Not Windows store apps.

Always install Windows first. Windows does not play well with being installed after other OS’s.


swapfile should do the job, as it does not need to change partitions

doens forget the resume= otherwise is useless that swapfile :slight_smile:

1 Like

Can you explain how i do this before i end up doing another bare metal install? First make a swap file. Then i have to add stuff to fstab? Plus i have to edit grub?

You need a swap partition and resume=swap_device kernel parameter to hibernate your system state, although this works a bit differently if encryption is involved.

Better to test install your setup on a VM first, rather than bare metal, particularly if not 100% sure of how it all works.

I’d recommend not just simpy re-installing, this could be a good learning process for you, just make any mistakes in a VM first.

I just made a swap file but it doesn’t show anything in fstab? I guess that is only if you create a swap partition?

[ricklinux@eos-xfce ~]$ free
              total        used        free      shared  buff/cache   available
Mem:        7554380     1236852      138024      149352     6179504     5865508
Swap:       8191996           0     8191996
[ricklinux@eos-xfce ~]$ 

Edit: Can i just hibernate to this swap file? Do i need to do anything else?

You need to add a swap file entry manually, simply creating a file doesn’t create the fstab entry automatically.

/swapfile  none swap defaults 0 0

Take your time. Read the Arch Wiki and understand what you are doing instead of just shooting from from the hip.

I wouldn’t recommend using a swap file for hibernation either.

sudo dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress
512 must be changed to the size you want (size of your RAM alike)

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Finally, edit the fstab configuration to add an entry for the swap file:

sudo nano /etc/fstab

/swapfile none swap defaults 0 0

simple as this… to get it working for hibernation/suspend:

Add the resume option to grub kernel line
to the the UUID of the partition containing your /swapfile:

sudo findmnt -no UUID -T /swapfile

sudo nano /etc/default/grub

# GRUB boot loader configuration

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 resume=UUID=**put the uuid here** nowatchdog"

regenerating grub.cfg :vulcan_salute:
sudo grub-mkconfig -o /boot/grub/grub.cfg

1 Like

I have 8G ram. I used 8000 which gave me 7.8G swap file should i go bigger?

should be fine

I actually use fallocate for creating mine, so that I can specify the size in GiB (Gibibytes), so that it’s truly 8. Easier than doing the maths for dd. :smiley:

fallocate -l 8Gib /swapfile


Besides the resume=UUID= a resume_offset value needs also to be added to the boot parameters when hibernating into a swapfile:

1 Like

Okay i left it at 7.8G. I’m going to try it this way. Thanks!

be aware of files with holes :nerd_face:

As if i don’t have enough to hurt my little brain! :rofl:

Edit: I think it’s beware of holes in your head?

Eh, it’s not hard. Do it a couple times in a VM and it’ll be simple as anything. Yeah, a few extra commands, but still easy. Just…not worth it to me since I moved to SSD’s.

IDK, simply giving a list of commands to blindly copy and paste doesn’t really help
Rick understand, which IMHO doesn’t really help him in the long run.

I understand EndeavourOS is not Arch, but a certain degree of encouragement to learn should be given for such a simple task.

1 . Create swap partition.
2 . Set resume kernel parameter to swap partition UUID.