@Moon@shitposter.club @a1ba@suya.place
> "what are these stupid bootloaders even doing, what do they need to do past load the linux kernel into memory"
GRUB 2 supports:* A complete I/O library memory management subsystem, to allow people to write extensions, just like kernel modules. An early demo was parting the entire Lua interpreter to GRUB (not part of the repo)
* Hardware-specific devices, such as serial port, PS/2, USB, and video / graphics. Because GRUB needs to work equally on all platforms, it mostly uses its own drivers instead of delegating the task to the boot firmware (on some embedded targets, GRUB itself can even be used as boot firmware).
* Graphics User Interface for boot theming, including decoders for custom images such as PNG, JPEG, and TGA.
* Localization to 20+ languages, with custom Unicode font support.
* Booting from a network, including PXE, HTTP, TFTP, so it has a TCP/IP stack and drivers for network providers such as OpenFireware, UEFI, and U-Boot.
* Parsing and listing partition tables.
* 20+ Filesystem drivers
* A basic sh-like command-shell that support sturctured programming, with ~50 built-in commands, such as ls, grep, cat, lspci, md5sum, hdparm, etc,.
All of these are arguably very useful features to many users. The shell is essential for troubleshooting, network boot is used for many diskless machines, almost all mainstream distros heavily use boot theming and localization, etc.
I think the real problem is that it's doing too much duplicate work. You may as well just use a Linux kernel with kexec() as the bootloader. This is exactly the motivation of recently launched projects like LinuxBoot.