GNU is everywhere from early boot to userspace so we need to find or write replacements
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 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 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 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 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 somewhat works with modification though I couldn’t get it to load the initramfs.
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 is our custom bootloader designed to be built with an LLVM toolchain and be minimal. It is still very much WIP.