On my laptop (MSI GE60) unfortunately the swap partition was too small. Fedora recommends that a swap partition should be half the size of RAM without hibernation and 1.5 the size of RAM with hibernation with 8 GB - 64 GB of RAM.
This laptop has 12 GB of RAM, but only a 6 GB swap partition. The partition has to be extended to 18 GB.
There is a 250 GB SSD with 174 GB of space in /home (ext4 on LVM). I had to reduce the home partition to 162 GB to free up space for the swap partition. Of course, I had to free up enough space in the filesystem first. It is better to have a few times more free space than the amount to be reduced.
Resizing an LVM/ext4 /home partitionI don't recommend doing this, unless you have knowledge about partitions and LVM. You could easily destroy your data! But I will describe step by step how I did it.
Boot the laptop into single mode. At the Grub screen, edit the linux kernel command line and add "single" or "rescue.target" (without quotes) to the command line. Ctrl-X to boot. At the rescue prompt, enter your root password.
At the root rescue prompt, unmount /home with:
umount /homeCheck the partition:
e2fsck -f /dev/mapper/fedora_msi-home(on another laptop, the partition will be named something else, but you will find it under /dev/mapper. "df" will also show currently mounted partitions and usually they are also listed in /etc/fstab)
Resize the file system:
resize2fs -p /dev/mapper/fedora_msi-home 162GResize the logical volume:
lvreduce -L 162G /dev/fedora_msi/home
Before continuing, make sure that the partition lines up with the logical volume:
e2fsck -f /dev/mapper/fedora_msi-homeIf there are errors because of a too small logical volume, it can be extended with for instance "lvextend -L +1G /dev/fedora_msi/home". Continue extending and running e2fsck until e2fsck is happy.
Make sure the file system fills up the logical volume:
resize2fs -p /dev/mapper/fedora_msi-homeCheck again:
e2fsck -f /dev/mapper/fedora_msi-homeNow mount the home partition again:
mount /homeLooks good:
df -h|grep home
/dev/mapper/fedora_msi-home 160G 80G 72G 53% /home
Extending the swap partitionNow that there is enough space available in the LVM volume group, we can extend the logical volume and swap space. Still at the rescue prompt, turn off swap (this should work fine also in runlevel 5/desktop):
swapoff -aExtend the logical volume:
lvextend -L +12G /dev/fedora_msi/swapThen just create a new swap partition on the 18GB volume:
mkswap /dev/fedora_msi/swapTurn on swap:
swapon -aCheck with "free" that your swap space is available. If you didn't already, now you can shutdown and reboot the computer.
Enabling hibernation in FedoraCheck that your laptop at least is able to suspend:
systemctl suspendIn Gnome, you can also click the Gnome status menu, then press the Alt key and the power off icon will turn into a suspend icon. On MSI GE60, the Fn+F10 key combination also suspends.
If it suspends fine and turns on successfully with the power button to where you had left it, there is at least a better chance that also hibernation works fine.
To enable hibernation, add your swap space to fstab (if it isn't already). Note that the partition UUID changed when creating a new swap space above. To get the UUID, issue:
blkid /dev/mapper/fedora_msi-swap(on another laptop, the partition will be named something else, but you will find it under /dev/mapper)
The output will be something like:
/dev/mapper/fedora_msi-swap: UUID="eb721352-fe3c-4097-9d3f-042de0c98aa5" TYPE="swap"Add it to /etc/fstab in the following format, preferably as the last row after the other partitions:
UUID=eb721352-fe3c-4097-9d3f-042de0c98aa5 swap swap defaults 0 0Check if initramfs contains support for resuming from hibernation:
lsinitrd|moreIn the "dracut modules:" section, you should find "resume".
If not, then run dracut to regenerate initramfs for the current running linux kernel:
dracut -f -vThe output should now include the "resume" module.
Add the swap partition to Grub. In my case, I added it to /etc/default/grub:
GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/eb721352-fe3c-4097-9d3f-042de0c98aa5 rd.lvm.lv=fedora_msi/swap rd.lvm.lv=fedora_msi/root nouveau.modeset=0 rd.driver.blacklist=nouveau rhgb quiet"Just add the "resume=/dev/disk/by-uuid/eb721352-fe3c-4097-9d3f-042de0c98aa5" with your own uuid of your swap partition. You know the uuid from the blkid command and fstab. Then write the new Grub configuration:
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
To be sure that you set everything alright in fstab and Grub, reboot once:
systemctl rebootIf you rebooted successfully, login and try to hibernate:
systemctl hibernateAnother nice sleep state:
systemctl hybrid-sleepThe latter is a nice sleep state for especially stationary laptops. If there is still power when resuming, the system wakes up quickly from suspend in RAM. If the battery and/or power is lost, then it will resume from hibernation (from disk).
Unfortunately Gnome doesn't support hibernation by default. You have to use your own shortcut or hibernate from command line. There is also a Gnome extension that currently seems to work fine. It will add a hibernation icon to the Gnome Status menu. Using Alt modifier, you can also do a hybrid sleep.