- C 90.4%
- Makefile 6.9%
- GDB 1.5%
- Linker Script 1.2%
| .vscode | vscode debug cleanup | |
| documentation | Added IDT, GDT and test interupts. PIC set | |
| src | aetherium:Added version display, moved arch specifics to subfolder, nabl: fixed L iterals to u | |
| tests | Added configuration option passing and documentation on the bootloader | |
| .gitignore | Little cleanup and restructuring | |
| config.cfg | Added prototype debugging | |
| LICENSE | Prepared for initial public release | |
| Makefile | (fix)[make] weird mv bug, cp is better | |
| nabl-debug.gdb | Debugging with vscode + gdb somewhat starts, no worky tho | |
| readme.md | Prepared for initial public release | |
NABL - New Amsterdam BootLoader
A prototype UEFI bootloader for loading custom kernels with configuration and boot information passing.
Overview
NABL is an experimental UEFI bootloader that loads flat binary kernels and passes boot information including command line arguments, UEFI system table access, and more. It features a simple configuration system and handles the ABI transition between UEFI (Windows calling convention) and typical kernels (System V calling convention).
Documentation
Relatively comprehensive documentation is available in the documentation/ folder:
-
NABL.md - Complete technical specification covering:
- Architecture and compilation targets
- Configuration system (config.cfg)
- Kernel loading process
- Calling convention handling
- Boot information structure
- Memory layout
- Implementation details
- Future enhancements
-
configuration.md - Configuration file usage guide:
- Config file format and syntax
- Supported options
- Boot information structure for kernel developers
- Example kernel implementation
-
bootchain.md - Boot chain documentation
-
drivers.md - Driver architecture
-
todo.md - Development roadmap
Quick Start
Build and test:
make test-001
Optionaly for other tests. Create a config file at the root of your EFI partition:
# config.cfg
kernel = kernel.bin
args = debug console=COM1
Features
- Configuration file support (config.cfg)
- Kernel command line arguments
- Boot information structure passed to kernel
- UEFI System Table access
- Calling convention handling (Windows → System V)
Planned:
- ELF binary support (planned)
- Memory map passing (planned)
- Framebuffer initialization (planned)
License
MIT License - See LICENSE file for details.
Status
Prototype - This is experimental software under active development. Not recommended for production use.
Note on Development
A significant portion of this codebase and documentation was generated with assistance from AI tools (ChatGPT and GitHub Copilot). While the design, architecture decisions, and testing are human-directed, the implementation leverages AI-assisted code generation.