A Guide to Installing Limine Bootloader on x86_64 UEFI Systems

Limine is an advanced, portable, multiprotocol boot loader originally developed as the reference implementation for the Limine boot protocol, but also supporting the ability to boot Linux as well as to chainload other boot loaders.

While Limine supports BIOS and several other architectures, this is a brief guide written specifically for installing Limine on UEFI x86_64 systems. After completing this guide, you might want to follow up with the official documentation for detailed usage here.

Limine can be used as an alternative to the GRUB bootloader.


Prerequisites

efibootmgr package, which can be installed using sudo apt install efibootmgr.

Core bootloader file [BOOTX64.EFI] of Limine, current latest version can be downloaded from here

EFI partition must be mounted to /boot.

Note: The EFI partition must use the FAT12, FAT16, or FAT32 filesystem.


Installation Steps

Deploying Limine on UEFI systems involves copying the BOOTX64.EFI file (that we downloaded earlier) to /boot. I will be copying it to /boot/limine for the sake of organization.

Now we will write a configration file for Limine, which i will place in /boot/limine/limine.conf

Before we write the configration, we must know the following:

  1. UUID of the root directory, which can be found using sudo blkid command.
  2. Path to vmlinuz and initramfs, that are typically found in /boot, BOTH OF THE FILES MUST BE THE SAME VERSION, for example initrd.img-6.8.0-44-generic and vmlinuz-6.8.0-44-generic.
    The initrd can sometimes be named initramfs, for example, initramfs-6.8.0-44-generic.img.

Here follows a simple example configuration that contains boot menu entries describing a typical Linux-Windows dual boot setup:

timeout: 5 # Specifies the timeout in seconds before the first entry is automatically booted
remember_last_entry: no  # If set to yes, remember last booted entry.
wallpaper: boot():/boot/limine/wallpaper.png # Must be in the /boot directory. BMP, PNG, and JPEG formats are supported.

/Zorin OS
    protocol: linux
    kernel_path: boot():/vmlinuz-6.8.0-44-generic
    kernel_cmdline: root=UUID=XXXXXX-XXXX-XXXX-XXXX-XXXXX rw # Kernel parameters can be passed here
    module_path: boot():/initrd.img-6.8.0-44-generic

#Incase of dual boot

/Windows 11
   protocol: efi_chainload
    image_path: boot():/path/to/bootmgfw.efi

Finally, to create an entry in the UEFI Firmware, use the following command:

sudo efibootmgr --create --disk /dev/sda --part 2 --label "Zorin OS with Limine" --loader '/limine/BOOTX64.EFI'

Replace /dev/sda and 2 of the --part argument to the disk and partition number on which the EFI System Partition is hosted.

Note: Do NOT include /boot when pointing to Limine Bootloader file.
/boot/limine/BOOTX64.EFI :x:
/limine/BOOTX64.EFI :white_check_mark: