Limine
Notes
- limine
bios-install
can only be used forbios
and not for UEFI - parted
mkpart primary
only works formsdos
(BIOS/MBR), otherwise for GPT it will be set as name/PARTLABEL
and notPART-TYPE
- limine does not support booting from
ext4
directly when in BIOS/MBR mode
IMG (BIOS/MBR)
#!/bin/sh
rm -f glaucus.img
dd bs=1M count=1024 if=/dev/zero of=glaucus.img
parted -s glaucus.img mklabel msdosparted -s glaucus.img mkpart primary ext4 1 100%parted -s glaucus.img set 1 boot on
modprobe loop
losetup -D
device="$(losetup -f)"partition=${device}p1
losetup $device glaucus.imgpartx -a $device
mke2fs -t ext4 $partition
rm -fr /mnt/glaucusmkdir -p /mnt/glaucus
mount $partition /mnt/glaucus
rsync -aHAXx cross/ /mnt/glaucus
mkdir -p /mnt/glaucus/bootcp -af /boot/vmlinuz-linux-cachyos /mnt/glaucus/boot/vmlinuzbooster build --force --compression=zstd --config=/var/lib/rad/clusters/cerata/booster/booster.yaml --universal --strip /mnt/glaucus/boot/initramfs
mkdir -p /mnt/glaucus/boot/limine
cp -af /home/firasuke/Downloads/Git/glaucus/cerata/limine/limine.cfg.img /mnt/glaucus/boot/limine/limine.cfgcp -af /usr/share/limine/limine-bios.sys /mnt/glaucus/boot/limine
limine bios-install glaucus.img
chown -R 0:0 /mnt/glaucuschown -R 20:20 /mnt/glaucus/var/log/wtmpd
umount -fqR /mnt/glaucus
partx -d $partitionlosetup -d $device
chown firasuke:firasuke glaucus.img
IMG (EFI/GPT)
#!/bin/sh
rm -f glaucus.img
dd bs=1M count=1024 if=/dev/zero of=glaucus.img
parted -s glaucus.img mklabel gptparted -s glaucus.img mkpart ESP fat32 1 65parted -s glaucus.img set 1 esp onparted -s glaucus.img mkpart ext4 65 1024
modprobe loop
losetup -D
device="$(losetup -f)"partitionOne=${device}p1partitionTwo=${device}p2
losetup $device glaucus.imgpartx -a $device
mkfs.fat -F 32 $partitionOnemke2fs -t ext4 $partitionTwo
rm -fr /mnt/glaucusmkdir -p /mnt/glaucus
mount $partitionTwo /mnt/glaucus
rsync -aHAXx cross/ /mnt/glaucus
mount $partitionOne /mnt/glaucus/boot
booster build --force --compression=zstd --config=/var/lib/rad/clusters/cerata/booster/booster.yaml --universal --strip /mnt/glaucus/boot/initramfs
cp -f /home/firasuke/Downloads/Git/glaucus/cerata/limine/limine.cfg.img /mnt/glaucus/boot/limine.cfg
cp -f /boot/vmlinuz-linux-cachyos /mnt/glaucus/boot/vmlinuz
mkdir -p /mnt/glaucus/boot/EFI/BOOTcp -f /usr/share/limine/BOOTX64.EFI /mnt/glaucus/boot/EFI/BOOT
chown -R 0:0 /mnt/glaucuschown -R 20:20 /mnt/glaucus/var/log/wtmpd
umount -fqR /mnt/glaucus/bootumount -fqR /mnt/glaucus
partx -d $partitionOnepartx -d $partitionTwolosetup -d $device
chown firasuke:firasuke glaucus.img
ISO
#!/bin/sh
rm -fR glaucus.iso iso
mkdir -p iso/EFI/BOOT iso/limine
cp -af /home/firasuke/Downloads/Git/glaucus/initramfs iso/initramfscp -af /home/firasuke/Downloads/Git/glaucus/cerata/limine/limine.cfg.iso iso/limine/limine.cfgcp -af /boot/vmlinuz-linux-cachyos iso/vmlinuz
chown -R 0:0 crosschown -R 20:20 cross/var/log/wtmpd
mkfs.erofs iso/rootfs cross
cp -af /usr/share/limine/BOOTX64.EFI iso/EFI/BOOT
cp -af /usr/share/limine/limine-bios-cd.bin iso/liminecp -af /usr/share/limine/limine-bios.sys iso/liminecp -af /usr/share/limine/limine-uefi-cd.bin iso/limine
xorriso \ -as mkisofs \ -o glaucus.iso \ -iso-level 3 \ -l \ -r \ -J \ -joliet-long \ -V GLAUCUS \ -P glaucus \ -A glaucus \ -p glaucus \ -b limine/limine-bios-cd.bin \ -boot-load-size 4 \ -no-emul-boot \ -boot-info-table \ --efi-boot limine/limine-uefi-cd.bin \ --protective-msdos-label \ -efi-boot-part \ --efi-boot-image \ -vv \ iso
limine bios-install glaucus.iso
Resources
- https://wiki.archlinux.org/title/Limine
- https://limine-bootloader.org/
- https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md
- https://github.com/limine-bootloader/limine/blob/trunk/PHILOSOPHY.md
- https://github.com/limine-bootloader/limine/blob/trunk/USAGE.md
- https://github.com/limine-bootloader/limine/blob/trunk/test/limine.cfg
- https://github.com/eweOS/packages/blob/limine/limine.cfg