1
0
Fork
You've already forked NABL
0
Another bootloader? Nah, this is just an experimental loader for an experimental kernel/OS.
  • C 90.4%
  • Makefile 6.9%
  • GDB 1.5%
  • Linker Script 1.2%
2026年07月13日 12:34:03 +02:00
.vscode vscode debug cleanup 2026年05月21日 09:51:13 +02:00
documentation Added IDT, GDT and test interupts. PIC set 2026年07月07日 16:21:04 +02:00
src aetherium:Added version display, moved arch specifics to subfolder, nabl: fixed L iterals to u 2026年07月07日 23:10:05 +02:00
tests Added configuration option passing and documentation on the bootloader 2026年03月06日 14:40:51 +01:00
.gitignore Little cleanup and restructuring 2026年03月03日 15:36:40 +01:00
config.cfg Added prototype debugging 2026年04月12日 23:54:26 +02:00
LICENSE Prepared for initial public release 2026年03月06日 16:12:07 +01:00
Makefile (fix)[make] weird mv bug, cp is better 2026年07月13日 12:34:03 +02:00
nabl-debug.gdb Debugging with vscode + gdb somewhat starts, no worky tho 2026年04月14日 14:10:29 +02:00
readme.md Prepared for initial public release 2026年03月06日 16:12:07 +01:00

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.