site  contact  subhomenews

Limine bootloader for EasyOS

June 20, 2022 — BarryK

The EasyOS image file has two different bootloaders, rEFInd for UEFI-BIOS booting, and syslinux for legacy-BIOS booting. You would download the image file and write it to a USB-stick and boot it.

Prior to version 4.1, the three files 'vmlinuz', 'initrd' and 'easy.sfs' are in the boot-partition. This is a vfat partition with boot-flag and esp-flag set, and it has rEFInd and syslinux. There is also a second partition, the ext4 working-partition.

For version 4.1, I placed 'easy.sfs' in the working-partition, as it could then be moved into the releases folder, rather than copied, a much faster operation.

In this page, I described how to update 4.1:

https://easyos.org/user/how-to-update-easyos.html

The manual steps to update in that link, have these snapshots showing how to drag-and-drop the latest files, firstly into the boot-partition:

img1

And into the working-partition:

img2

It was williwaw on the forum who made a comment about keeping all the EasyOS files separate from the boot-partition, which got me thinking. However, syslinux requires 'vmlinuz' and 'initrd' to be in the boot-partition.

If I want to have all three files in the working-partition, one possibility is to use extlinux, installed in the working-partition. But then don't have the clear separation between the bootloaders and the EasyOS working-partition.

I looked at some alternative bootloaders, and discovered Limine:

https://limine-bootloader.org/

Project page:

https://github.com/limine-bootloader/limine

The Arch guys have good documentation (as usual):

https://wiki.archlinux.org/title/Limine

What we really want is the simple conceptual separation of boot manager from the actual EasyOS installation, as described in frugal install:

https://bkhome.org/news/202206/simple-frugal-install-steps-and-update-fix.html

The three files somewhere, together, in the working-partition, as shown in this snapshot from above link:

img3

Limine achieves this goal. It is both a UEFI-BIOS and a legacy-BIOS bootloader, and there will be just the one menu for both boot modes. Limine is installed in a bootable esp vfat partition, which is the boot-partition in the image file, and the three EasyOS files can be anywhere else.

To show this, I setup the image file with Limine installed in the boot-partition and having this 'limine.cfg' file:

TIMEOUT=5

:EasyOS Test
COMMENT=A comment for this entry
PROTOCOL=linux
KERNEL_PATH=boot://2/easyos/vmlinuz
MODULE_PATH=boot://2/easyos/initrd
KERNEL_CMDLINE=initrd=initrd rw BOOT_UUID=e61a3ded-95c9-4209-ba43-3a094ad81227 BOOT_DIR=easyos WKG_UUID=e61a3ded-95c9-4209-ba43-3a094ad81227 WKG_DIR=easyos

The syntax of those KERNEL_PATH and MODULE_PATH variables is great; the "2" means the second partition in the boot drive. Fantastic, the three files are in the working-partition.

Limine doesn't have automatic scanning like rEFInd, but then, I don't use automatic scanning anyway.

Notice those BOOT_UUID and BOOT_DIR parameters on the kernel commandline, which are overrides for the BOOT_SPECS file inside the 'initrd'.
They are no longer needed, as there is nothing that EasyOS has to access in the boot-partition. If I embrace Limine, then can completely remove those two parameters from all scripts in EasyOS. Clear separation -- fantastic!

I hit a problem, Limine did not recognize the ext4 partition with "encrypt" feature set. Raised an issue and it was fixed the next day:

https://github.com/limine-bootloader/limine/issues/179

I have failure of legacy-BIOS boot on my Lenovo Ideacentre, have raised that issue:

https://github.com/limine-bootloader/limine/issues/180

Limine is looking promising!

EDIT 2022-06-21:
Forum discussion about Limine here:

https://forum.puppylinux.com/viewtopic.php?t=6190  

Tags: easy