Migrating from systemd-boot to Themed Limine with Btrfs Snapshots

I initallity installed CachyOS with systemd-boot as a ’tried and true’ option for my bootloader. After using it for a few weeks and playing around with BTRFS snapshots, I came to understand the benefits of using Limine and having snapshots available to boot from. This is a guide detailing what I did to change.

DISCLAIMER: I used Google Gemini to help with writing this guide. The assistance was done with my notes/rough draft, and all steps have been validated by me.

The Goal

  • Theming: The bootloader should look and feel like the CachyOS limine out of the box.

  • Resilience: Automatic syncing of BTRFS snapshots into the boot menu.

Step 1: Prepare the Assets

Limine is configured via a simple human-readable file. For this setup, we use a custom splash image and a Catppuccin color palette. /boot/limine.conf

This is the “brain” of the operation. We use default_entry: 2 because Limine uses 1-based indexing, and the global settings block often occupies the first internal slot.

timeout: 5
default_entry: 2
remember_last_entry: yes

# Catppuccin Mocha Palette
term_palette: 1e1e2e;f38ba8;a6e3a1;f9e2af;89b4fa;f5c2e7;94e2d5;cdd6f4
term_palette_bright: 585b70;f38ba8;a6e3a1;f9e2af;89b4fa;f5c2e7;94e2d5;cdd6f4
term_background: ffffffff
term_foreground: cdd6f4
term_background_bright: ffffffff
term_foreground_bright: cdd6f4
wallpaper: boot():/limine-splash.png

Download This Image and save it to /boot/limine-splash.png

Step 2: Install and Verify

Install the binaries and register Limine as the primary boot option in your NVRAM.

sudo pacman -S limine-mkinitcpio-hook limine-snapper-sync
systemctl enable --now limine-snapper-sync
sudo limine-install

Verify that Limine is now Boot0000 and top of the BootOrder

sudo efibootmgr -v

If you have any custom boot options, add them to /etc/default/limine. Mine look like this for an nvidia GPU:

KERNEL_CMDLINE[default]="quiet splash rw rootflags=subvol=/@ root=UUID=<YOUR UUID> nvidia-drm.modeset=1 nvidia-drm.fbdev=1"

Finally, run sudo limine-mkinitcpio

Step 3: The “Point of No Return” (Cleanup)

Once you have rebooted and verified that Limine loads your OS and your snapshots correctly, you can reclaim space on your EFI partition (especially important if you have a 2GB limit).


# 1. Remove systemd-boot binaries and entries
sudo bootctl remove
sudo rm -rf /boot/loader /boot/EFI/systemd

# 2. Delete redundant kernels in the root of /boot
sudo rm /boot/vmlinuz-linux-cachyos /boot/initramfs-linux-cachyos.img

Final Results

After a successful reboot, you should be greeted by the Catppuccin-themed menu. Your main CachyOS install will be the default selection, with a “Snapshots” folder nested below it.

Storage & Retention

If you’re working with a smaller EFI partition, you’ll want to manage how many snapshots Limine keeps track of. While Snapper might keep 50+ snapshots on your SSD, you don’t want 50 kernels filling up your boot partition.

Edit /etc/limine-snapper-sync.conf to set a sensible retention policy:

### Limit the number of bootable snapshots to keep /boot lean
MAX_SNAPSHOTS="8"

If you have a 2GB EFI partition, keep an eye on usage with df -h. Every unique kernel/initramfs pair takes up roughly 250-300MB. If you use both the Main and LTS kernels, your space will disappear twice as fast.