Show HN: Simpleboot and Easyboot (gitlab.com)
There are two repositories, depending on the desired use case:
Simpleboot is the little brother, an embeddable boot loader: https://gitlab.com/bztsrc/simpleboot
- multiplatform (BIOS, UEFI, RPi, coreboot)
- very small (less than 64k), single binary
- also flashable into ROM (option ROM, expansion ROM, coreboot payload, etc.)
- easy to configure (single config file, checked for validity by the disk creator utility)
- one backup boot option
- capable to boot Linux and simplified Multiboot2 kernels (see below)
Easyboot is the big brother, an interactive boot manager: https://gitlab.com/bztsrc/easyboot
- multiplatform (BIOS, UEFI, RPi)
- interactive boot menu for dual booting multiple OSes
- easy to configure (similar syntax as GRUB's, but much simpler)
- up to 9 boot options
- transparent payload decompression
- on-the-fly, transparent DSDT and DTB patching
- plugin system to support multiple file systems and boot protocols
- supports FAT12/16/32, exFAT, NTFS (v3, v3.1), ext2/3/4, XFS (SGI), UFS (v2, v4.4), mfs (Minix3), BeFS (Haiku), plus any root file system (zfs, btrfs, etc.) provided the kernel is on the ESP
- supports booting Linux, Windows, OpenBSD, FreeBSD, FreeDOS, ReactOS, MenuetOS, KolibriOS, SerenityOS, Haiku, Multiboot1, Multiboot2 (in PE/COFF, ELF, a.out, etc. formats)
- comes with a (very minimal but useful) kernel debugger that works on real machines too
Full disclosure: forking Simpleboot into Easyboot was sponsored by The Free Software Foundation Hungary (https://fsf.hu/nevjegy), created in appliance of FSF.hu's Free Software Tender 2023.
Their default "simplified Multiboot2 protocol" is an easier to use superset of the GRUB's Multiboot2 protocol. This protocol handles native 64 bit kernels (no 32-bit trampoline code), programming language and ABI agnostic (works with native C, C++, Rust, Go, Ada, Pascal, etc. kernels, no Assembly preambule needed), supports transparent higher-half mapping, not tied to x86, and has SMP support too (running the kernel on all CPU cores), passes EDID and kernel segmentation information (not in GRUB), etc. etc. etc. An example kernel is provided in the repo: https://gitlab.com/bztsrc/simpleboot/-/tree/main/example
If needed, there's an Easyboot plugin to support the old-fashioned, x86-only, GRUB-compatible Multiboot2 protocol (embedded tags, 32-bit entry point, no higher-half, GRUB ABI).
Documentation and detailed specification is available in German, English, Spanish, French, Hungarian, Italian, Japanese, Dutch, Polish, Portuguese, Russian and Chinese (some machine translated, sorry).
I would really love to hear your opinion and constructive criticism. Simpleboot is feature complete (only bugfix allowed), but Easyboot is expandable with new features via plugins.
0 comments
[ 0.30 ms ] story [ 5.7 ms ] threadNo comments yet.