Boot Process

GNU is everywhere from early boot to userspace so we need to find or write replacements

Init

While SystemD is not GNU it is not something I want to bother porting and it depends on a few GNU libraries. Because of this we’ll just be using the basic init provided by Toybox and Busybox with some custom init scripts.

Bootloaders

Bootloaders are difficult particularly on the X86 platform due to the requirement for baremetal code that often is not portable accross compilers. While many bootloaders exist that aren’t GNU’s GRUB, there has been little success building without a GNU toolchain.

SysLinux

SysLinux is the first bootloader I used with Iglunix on real hardware however it can’t be built with an LLVM toolchain dispite my best effort.

Barebox

Barebox looks promising and almost builds for both EFI and BIOS however both fail at the last hurdle. llvm-objcopy is not designed for converting ELF files to PE files required by EFI and there are a number of linker errors when building for BIOS.

Modifications similar to the ones for the Linux kernel are also required for building with byacc.

Tiny Linux Bootloader

Tiny Linux Bootloader is the bootloader we’ve had the most success with. It builds and runs and is usable however it is not enough for what we want. The extra NASM dependancy is not desireable either.

Elfboot

Elfboot somewhat works with modification though I couldn’t get it to load the initramfs.

Limine

Limine heavily uses Plan 9 and GNU extensions making it impossible to build on Iglunix. The main issue is the use of intel syntax inline assembly which clang doesn’t play nicely with.

OSLO

OSLO is our custom bootloader designed to be built with an LLVM toolchain and be minimal. It is still very much WIP.

TODO: