Page 1 of 1

Installing Limine Bootloader

Posted: Wed Jun 29, 2022 11:28 pm
by williwaw

UPDATE: 9/21/22 example limine.cfg for PUPPY viewtopic.php?p=67377#p67377

After updating to Easy Dunfell using Limine as a bootloader recently, I decided to install Limine bootloader to a ssd. The syntax used in its config file is easy to utilize, and Limine boots UEFI as well as BIOS.

I used EasyOs Dunfell 4.2 from a USB to make the install as it includes Limine installed (as a pet).
The pet can also be found at https://distro.ibiblio.org/easyos/amd64 ... e/dunfell/
And the latest source at https://limine-bootloader.org/files/limine/

Once you have the pet installed, copy the contents of /usr/share/limine to your boot partition. I placed it one level down in /boot and it worked fine. Create a configuration file in the same directory named limine.cfg

For UEFI, your boot partition needs to be need a FAT formatted, with the "esp" flag set.
The "boot" flag should be set for use with legacy BIOS on a FAT partition or ext2/3/4

To enable support for legacy BIOS devices, run....

Screenshot(3).png
Screenshot(3).png (35.33 KiB) Viewed 10040 times

Example limine.cfg for EasyOs

Note:

  • "rw wkg_uuid=ce4ef232-b688-49dd-b07c-5abeb8a0281a wkg_dir=install/" are parameters specific to easyos.

  • "boot://2/install/" indicates a subfolder named "install" on the second partition of the boot device

  • each line in any boot stanza should end with a line feed

Code: Select all

QUIET=no
TIMEOUT=no
GRAPHICS=no
DEFAULT_ENTRY=1
EDITOR_ENABLED=yes
INTERFACE_BRANDING=Limine Boot Manager

:Dunfell
    COMMENT=Dunfell
    PROTOCOL=linux
    TEXTMODE=yes
    KERNEL_PATH=boot://2/install/vmlinuz
    MODULE_PATH=boot://2/install/initrd
    KERNEL_CMDLINE=initrd=initrd rw wkg_uuid=ce4ef232-b351-49dd-b07c-5abeb8a0281a wkg_dir=install/

see https://wiki.archlinux.org/title/Limine#Deployment_2

limine.md.gz
remove the fake.gz
(13.58 KiB) Downloaded 73 times

Re: Installing Limine Bootloader

Posted: Thu Jun 30, 2022 1:06 am
by BarryK

EasyOS 4.2.2 has Limine version 3.7.3, which has some bug fixes.

I have updated the package online:

https://distro.ibiblio.org/easyos/amd64 ... -64.tar.xz

Note that it was compiled with glibc 2.33, so it is possible the 'limine-deploy' utility won't work on OS with older glibc -- but it might.


Re: Installing Limine Bootloader

Posted: Sat Jul 02, 2022 1:11 pm
by BarryK

How to add Windows to the Limine menu:

https://bkhome.org/news/202207/how-to-a ... -menu.html


Re: Installing Limine Bootloader

Posted: Sat Jul 02, 2022 5:13 pm
by williwaw

mintsuki has added a configuration guide to the project repo https://github.com/limine-bootloader/limine

attached below is CONFIG.md as written 7/2/22 development is ongoing so there may be a later version at the link above

remove the fake .gz from the attachment


Re: Installing Limine Bootloader

Posted: Sat Jul 02, 2022 6:02 pm
by bigpup

For this to stay in the How To -> Boot
This section of the forum is for How To's using Official Puppy versions.

You need to give specific info on how to use this to boot an actual Official Puppy version.


Re: Installing Limine Bootloader

Posted: Sat Jul 02, 2022 9:35 pm
by rockedge

@bigpup I was thinking about trying to see if I can get a USB frugal install of a Fossapup64 or Bionic64 to boot using this bootloader. Looks interesting and simple.

Also once it's working test if I can install a KLV next to the Puppy on that USB drive and dual boot those 2 systems.


Re: Installing Limine Bootloader For Booting Frugals

Posted: Mon Jul 04, 2022 2:49 am
by williwaw
bigpup wrote: Sat Jul 02, 2022 6:02 pm

For this to stay in the How To -> Boot
This section of the forum is for How To's using Official Puppy versions.

You need to give specific info on how to use this to boot an actual Official Puppy version.

OK, with usb drive sdb as a target, and using Barry's tar.xz

1. extract the contents of your puppy iso to the root of the target

2. in the distro you are working from, extract the contents of https://distro.ibiblio.org/easyos/amd64 ... -64.tar.xz to a working folder.

3. create a folder "boot" alongside the the iso contents in your target, and from usr/share/limine in the working folder, copy into /boot...

  • BOOTX64.EFI (for UEFI booting of a 64 bit puppy).

and/or

  • limine.sys (for BIOS booting).

4. A mbr also needs to be installed for BIOS booting

  • if you are working with rox, open a terminal in the usr/bin that's in the working folder.

or

  • cd to working-folder/usr/bin

and

Code: Select all

# ./limine-deploy /dev/sdb

5. create limine.cfg in /boot and paste in

Code: Select all

TIMEOUT=no
GRAPHICS=no
DEFAULT_ENTRY=1
EDITOR_ENABLED=yes
INTERFACE_BRANDING=Limine Boot Manager

:MY-FRUGAL-PUPPY
    COMMENT=
    PROTOCOL=linux
    TEXTMODE=yes
    KERNEL_PATH=boot:///vmlinuz
    MODULE_PATH=boot:///initrd.gz
    KERNEL_CMDLINE=initrd=initrd pmedia=usbflash

copying the entire contents of usr/share/limine to /boot will also enable booting a 32 bit, a cd, and a network boot, although not tested yet, and your limine.cfg will differ.


Re: Installing Limine Bootloader

Posted: Tue Jul 05, 2022 12:08 am
by puddlemoon

I have had some great success with this bootloader so far.
I have used it for a "multiboot" disk image with a fat boot partition and an ext4 install partition. "limine-deploy" can be run on a .img file as well as a physical drive. So perfect for (easy)dd or balena-etcher.

Example config with extra boot entries:

Code: Select all

#Limine USB fat-boot config

# Some example macros
${kernel}=boot://2/jackalpup/vmlinuz
${init}=boot://2/jackalpup/initrd.gz
${cmd}=pmedia=usbflash psubdir=/jackalpup pfix=fsck threadirqs

DEFAULT_ENTRY=1
TIMEOUT=5
VERBOSE=yes

# Visual settings
TERM_WALLPAPER=boot:///hexynapse.bmp
TERM_BACKDROP=008080
TERM_FOREGROUND=00D999

# Boot Entries

:jackalpup 
    COMMENT=Audio Production Puplet

    PROTOCOL=linux
    KERNEL_PATH=${kernel}
    KERNEL_CMDLINE=${cmd}
    MODULE_PATH=${init}
    
:Boot a fresh start (no save)
    COMMENT=Base system only - without user changes

    PROTOCOL=linux
    KERNEL_PATH=${kernel}
    KERNEL_CMDLINE=pmedia=usbflash psubdir=/jackalpup pfix=fsck,ram threadirqs
    MODULE_PATH=${init}
    
:Alternate boot for low ram systems
    COMMENT=Uses less ram at boot up but programs load slower

    PROTOCOL=linux
    KERNEL_PATH=${kernel}
    KERNEL_CMDLINE=pmedia=usbflash psubdir=/jackalpup pfix=fsck,nocopy threadirqs
    MODULE_PATH=${init}
    
:Boot to console (no X)
    COMMENT=Base system - without loading xorg

    PROTOCOL=linux
    KERNEL_PATH=${kernel}
    KERNEL_CMDLINE=pmedia=usbflash psubdir=/jackalpup pfix=nox threadirqs
    MODULE_PATH=${init}
   

Also the make .iso function is simple and fast.
The readme offers this command:

Code: Select all

xorriso -as mkisofs -b <relative path of limine-cd.bin> \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        --efi-boot <relative path of limine-cd-efi.bin \
        -efi-boot-part --efi-boot-image --protective-msdos-label \
        <root directory> -o image.iso
        

So my mk-limine-iso script became:

Code: Select all

#!/bin/sh
xorriso -as mkisofs -b boot/limine-cd.bin \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        --efi-boot boot/limine-cd-efi.bin> \
        -efi-boot-part --efi-boot-image --protective-msdos-label \
        /mnt/home/jackalpup-0.0 -o jackalpup.iso

Here is the iso directory structue for this example

Code: Select all

root# ls
adrv_jackalpup-0.0.sfs  initrd.gz                ydrv_jackalpup-0.0.sfs
boot                    puppy_jackalpup-0.0.sfs  zdrv_jackalpup-0.0.sfs
fdrv_jackalpup-0.0.sfs  vmlinuz
root# ls boot/
hexynapse.bmp  limine-cd.bin  limine-cd-efi.bin  limine.cfg  limine.sys
root# 

-Note, xorriso needs to be installed- only tested in qemu so far.

One more great use is to create a "hybrid" usb that can use Limine for bios booting and rEFInd for uefi.
This allows the benefits of refind, namely the ability to scan for and boot other windows/mac/linux installs.
Just deploy limine as usual and use the refind /EFI directory.
So in the boot partition you'd have:

Code: Select all

root# ls
EFI  hexynapse.bmp  limine.cfg  limine.sys
root# ls EFI/boot/
BOOT.CSV     drivers_x64  keys         refind_x64.efi  tools_x64
bootx64.efi  icons        refind.conf  themes
root# 

This has been an exciting find!
one issue I have is the display drops out between loading the initrd.gz/vmlinuz and the time the true resolution kicks in, so during the loading of the puppy sfs files the screen is blank but only on the bios boot, not uefi or the iso.

Mabye not he most instructional but these have been my discoveries so far. Check the readme for more info (:


Re: Installing Limine Bootloader

Posted: Tue Jul 05, 2022 8:44 am
by williwaw

KERNEL_CMDLINE=initrd=initrd pmedia=usbflash

the initrd=initrd seems to be superfluous with easyos, but breaks puppy if the install is not in the root of the partition.

can anyone comment on its purpose or need?


Re: Installing Limine Bootloader

Posted: Tue Jul 05, 2022 5:54 pm
by BarryK
williwaw wrote: Tue Jul 05, 2022 8:44 am

KERNEL_CMDLINE=initrd=initrd pmedia=usbflash

the initrd=initrd seems to be superfluous with easyos, but breaks puppy if the install is not in the root of the partition.

can anyone comment on its purpose or need?

EasyOS needs "initrd=initrd", but for Puppy frugal install it should be "initrd=initrd.gz"


Re: Installing Limine Bootloader

Posted: Tue Jul 05, 2022 6:31 pm
by rcrsn51
williwaw wrote: Tue Jul 05, 2022 8:44 am

KERNEL_CMDLINE=initrd=initrd pmedia=usbflash

the initrd=initrd seems to be superfluous with easyos, but breaks puppy if the install is not in the root of the partition.

can anyone comment on its purpose or need?

Remove it. The initrd is defined with a MODULE_PATH line.


Re: Installing Limine Bootloader

Posted: Wed Jul 06, 2022 1:08 am
by williams2

initrd=initrd ... can anyone comment on its purpose or need?

On my usb flash drive, I have files like vmlimuzb8 and initrdb8 vmlinuzb7 and initrdb7 etc etc.

initrd=initrd means "hey, bootloader, copy the file named vmlinuz to ram, and copy the file named initrd to ram so that the kernel (which is in the file named vmlinuz) can access it (in /dev/initrd)

initrd=initrdb8 means "hey, bootloader, copy the file named vmlinuzb8 to ram, and copy the file named initrdb8 to ram so that the kernel (which is in the file named vmlinuzb8) can access it (in /dev/initrd)

That is, initrd=initrdxen means copy the contents of the file named initrdxen to ram, so that the kernel can access it to create an initrd (initial ram drive)
The initial ram drive is the file system of a tiny puppy linux which creates the big Puppy Linux.
AFAIK, the initrd file can be named whatever you want. The first initrd is not a file name and can not be renamed (it is a boot loader command)


Re: Installing Limine Bootloader

Posted: Wed Jul 06, 2022 7:46 pm
by williwaw

from CONFIG.md

URIs
A URI is a path that Limine uses to locate resources in the whole system. It is comprised of a resource, a root, and a path. It takes the form of:
resource://root/path

Has anyone had success with the guid:// or fslabel:// resource?
with respect to

KERNEL_PATH=
and/or
MODULE_PATH=

could limine be useful to boot something on a different disk?


Re: Installing Limine Bootloader

Posted: Wed Jul 06, 2022 8:34 pm
by TerryH
williwaw wrote: Wed Jul 06, 2022 7:46 pm

from CONFIG.md

URIs
A URI is a path that Limine uses to locate resources in the whole system. It is comprised of a resource, a root, and a path. It takes the form of:
resource://root/path

Has anyone had success with the guid:// or fslabel:// resource?
with respect to

KERNEL_PATH=
and/or
MODULE_PATH=

could limine be useful to boot something on a different disk?

It worked for guid on my install. I set up a fslabel, but the install of EasyOS was pre limine 3.10, so hadn't been included yet. EasyOS 4.2.3 includes limine 3.10.1-r9 which I believe has fslabel included. I couldn't get it to boot my W10 install using fslabel, I just get a kernel panic. I believe I have the correct syntax. For the other 2 options (as shown in screenshot), the boot just goes back to as if it's a first boot, rather than direct to Windows 10 boot.

Note: The USB Drive which contains the boot partition, so is identified as Device1, so EasyOS working partition is 1:2. The internal NVME Drive is Device 2, so Windows 10 boot partiton is 2:1.


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 2:24 am
by rcrsn51
rcrsn51 wrote: Tue Jul 05, 2022 6:31 pm
williwaw wrote: Tue Jul 05, 2022 8:44 am

KERNEL_CMDLINE=initrd=initrd pmedia=usbflash

the initrd=initrd seems to be superfluous with easyos, but breaks puppy if the install is not in the root of the partition.

can anyone comment on its purpose or need?

Remove it. The initrd is defined with a MODULE_PATH line.

No reply. Am I the only person here who does NOT need "initrd=initrd"?


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 2:32 am
by BarryK
rcrsn51 wrote: Thu Jul 07, 2022 2:24 am
rcrsn51 wrote: Tue Jul 05, 2022 6:31 pm
williwaw wrote: Tue Jul 05, 2022 8:44 am

the initrd=initrd seems to be superfluous with easyos, but breaks puppy if the install is not in the root of the partition.

can anyone comment on its purpose or need?

Remove it. The initrd is defined with a MODULE_PATH line.

No reply. Am I the only person here who does NOT need "initrd=initrd"?

I did a thank-you to your original post.

While I was posting a report at Limine issues, I threw in a question about what you have reported:

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

I haven't got around to testing yet.


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 2:35 am
by BarryK
TerryH wrote: Wed Jul 06, 2022 8:34 pm

Note: The USB Drive which contains the boot partition, so is identified as Device1, so EasyOS working partition is 1:2. The internal NVME Drive is Device 2, so Windows 10 boot partition is 2:1.

I asked that question on the Limine site yesterday:

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

...so cannot assume boot drive is number one.


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 8:20 am
by williwaw
TerryH wrote: Wed Jul 06, 2022 8:34 pm

EasyOS 4.2.3 includes limine 3.10.1-r9 which I believe has fslabel included.

tx, will have to install it to sda1


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 10:14 am
by BarryK
williwaw wrote: Thu Jul 07, 2022 8:20 am
TerryH wrote: Wed Jul 06, 2022 8:34 pm

EasyOS 4.2.3 includes limine 3.10.1-r9 which I believe has fslabel included.

tx, will have to install it to sda1

Yes.
One thing to be careful of though, if do an update on the usb-stick from an earlier version of EasyOS, the Limine bootloader isn't updated.


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 12:34 pm
by TerryH
BarryK wrote: Thu Jul 07, 2022 10:14 am
williwaw wrote: Thu Jul 07, 2022 8:20 am
TerryH wrote: Wed Jul 06, 2022 8:34 pm

EasyOS 4.2.3 includes limine 3.10.1-r9 which I believe has fslabel included.

tx, will have to install it to sda1

Yes.
One thing to be careful of though, if do an update on the usb-stick from an earlier version of EasyOS, the Limine bootloader isn't updated.

Thanks, I checked the package list, but forgot that the contents of partition 1 containing the bootloader would still be from the original install. That explains why fslabel failed.


Re: Installing Limine Bootloader

Posted: Thu Jul 07, 2022 5:11 pm
by TerryH
BarryK wrote: Thu Jul 07, 2022 2:35 am
TerryH wrote: Wed Jul 06, 2022 8:34 pm

Note: The USB Drive which contains the boot partition, so is identified as Device1, so EasyOS working partition is 1:2. The internal NVME Drive is Device 2, so Windows 10 boot partition is 2:1.

I asked that question on the Limine site yesterday:

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

...so cannot assume boot drive is number one.

OK thanks for the details.


Re: Installing Limine Bootloader

Posted: Sun Jul 10, 2022 12:38 pm
by rcrsn51
rcrsn51 wrote: Thu Jul 07, 2022 2:24 am

Am I the only person here who does NOT need "initrd=initrd"?

Any update on this?


Re: Installing Limine Bootloader

Posted: Sun Jul 10, 2022 5:15 pm
by TerryH
rcrsn51 wrote: Sun Jul 10, 2022 12:38 pm
rcrsn51 wrote: Thu Jul 07, 2022 2:24 am

Am I the only person here who does NOT need "initrd=initrd"?

Any update on this?

On my current ASUS Zenbook laptop, which is UEFI only, I can boot EasyOS without the initrd=initrd.

Edit: Just set up a Vanilla Dpup on my USB Drive with Limine bootloader. It will also boot with or without initrd=initrd.gz as a KERNEL_CMDLINE parameter


Re: Installing Limine Bootloader

Posted: Sun Jul 10, 2022 8:09 pm
by williwaw
TerryH wrote: Wed Jul 06, 2022 8:34 pm
williwaw wrote: Wed Jul 06, 2022 7:46 pm

Has anyone had success with the guid:// or fslabel:// resource?
with respect to

KERNEL_PATH=
and/or
MODULE_PATH=

could limine be useful to boot something on a different disk?

It worked for guid on my install.

thanks, TerryH
After reviewing some puppy kernel line parameters, I find this liming.cfg to work, when limine is installed to a USB, and booting vanilla on an internal ssd

Code: Select all

QUIET=no
TIMEOUT=no
GRAPHICS=no
DEFAULT_ENTRY=2
EDITOR_ENABLED=yes
INTERFACE_BRANDING=Limine Boot Manager

    
:Vanilladpup from usb
    COMMENT=
    PROTOCOL=linux
    TEXTMODE=yes
    KERNEL_PATH=guid://ce4ef232-b351-49dd-b07c-5abeb8a0281a/pups/vanilla/vmlinuz
    MODULE_PATH=guid://ce4ef232-b351-49dd-b07c-5abeb8a0281a/pups/vanilla/initrd.gz
    KERNEL_CMDLINE=pmedia=ataflash psubdir=/pups/vanilla pfix=fsckp

Re: Installing Limine Bootloader

Posted: Mon Jul 11, 2022 5:52 am
by BarryK
rcrsn51 wrote: Sun Jul 10, 2022 12:38 pm
rcrsn51 wrote: Thu Jul 07, 2022 2:24 am

Am I the only person here who does NOT need "initrd=initrd"?

Any update on this?

I can confirm, the "initrd=" entry is not needed.


Re: Installing Limine Bootloader

Posted: Mon Jul 11, 2022 5:53 am
by BarryK

Re: Installing Limine Bootloader

Posted: Sat Sep 17, 2022 6:09 am
by mouldy

Finally got around to trying out Limine beyond just booting EasyOS. As somebody that used to prefer Loadlin (remember that one that loaded linux from small DOS partition/floppy?), then Gujin, I have never enjoyed dealing with any bootloader that much. Got used to Grub4Dos, mostly cause that was what was available with Puppy and Puppy had installer for it. And I had lot computers that still have legacy bios. I seriously dont like Grub2. Though if you are installing a linux distribution with Grub2 on its own drive, then it works.

Anyway I got both frugal versions DebianDogBookworm and Fossapup64 to boot with Limine on thumbdrive that also had EasyOS. Both MBR and UEFI with same thumbdrive. Tried booting a full install of DebianDog and still no luck with that one. Two weird quirks. DD frugal booted then it wouldnt boot UNTIL I finally used Gparted to give its partition a new UUID. This maybe why the full install of DD didnt bootm whatever weird thing with the UUID becoming corrupted. Not sure what the heck up with that. Also I have no idea where to put "changes=/path" for save folder for DD. DD needs its nose stuck in it by bootloader to find it. I tried putting it after the kernel line and DD stopped booting. Removed it and it booted again. Fossapup did better, its tends to try harder to find its save folder/file. Bootloader doesnt have to tell it where.

Oh another odd quirk. YOu cant have any other instance plugged into the computer. I had copied files off the Fossapup dvd and just left it in the dvdrom. Limine FOUND IT and and booted it, then when I shut down Fossapup, it tried to create a save file on the dvdrom.... Once I removed the dvd and rebooted, next time it offered to create it on the thumbdrive.

But all in all this is far simpler than Grub2 IMHO, though its all what you are used to using. For me this is lot like Grub4Dos only it can boot on both MBR and UEFI systems without lot extra hassle. I hope it becomes more popular, especially on smaller distributions.

EDIT: Must been tired when I was I finally got it booting. In the limine.cfg, entry for Debian Dog Bookworm, I apparently never actually entered "changes=/live/changes" in the KERNEL_CMDLINE, just thought I did. Did so now and it finds and uses the changes folder. Anyway its just bit different from what I got used to with GRUB4DOS. Next ought to try it with larger full install linux that comes with GRUB2. But as long as it can do pups/dogs/easy and in both MBR and UEFI; then aok with me. Its no harder than GRUB4DOS, just little different. And yea, still kinda miss the days of LOADLIN.... Simpler times.


Re: Installing Limine Bootloader

Posted: Wed Sep 21, 2022 5:08 pm
by williwaw
mouldy wrote: Sat Sep 17, 2022 6:09 am

DD frugal booted then it wouldnt boot UNTIL I finally used Gparted to give its partition a new UUID.

previously I used the uuid parameters because uuid seemed quite specific. I cannot recall exactly why I needed to look for different options, but now I create partition boot labels with gparted and use fslabel instead
in this example, F1 is the boot label and /pups/vanilla is the installs directory/subdirectory

Code: Select all

:Vanilladpup
    COMMENT=
    PROTOCOL=linux
    TEXTMODE=yes
    KERNEL_CMDLINE=psubdir=pups/vanilla pmedia=ataflash
    KERNEL_PATH=fslabel://F1/pups/vanilla/vmlinuz
    MODULE_PATH=fslabel://F1/pups/vanilla/initrd.gz

Edit: I recall some issues using uuid parameters when having multiple installs of easy on different disks on the same machine.