Getting Started
Build and boot A9N
Use the standard SPENCER configuration to run a Nun user payload on the A9N Microkernel.
Host requirements
- Git
- rustup / Cargo
- CMake 3.29 or later
- LLVM 18 or later, Clang, Clang++, LLD, and llvm-config
- NASM
- QEMU
The Rust toolchain is selected by SPENCER's rust-toolchain.toml. The first build requires network access to download the toolchain and Cargo packages.
Check out the source
Normally, clone SPENCER and its submodules over SSH.
git clone --recurse-submodules \
[email protected]:horizon2038/spencer.git spencer
cd spencer
git submodule statusIf SSH credentials are unavailable, rewrite the submodule URLs to HTTPS while cloning.
git -c url."https://github.com/"[email protected]: \
clone --recurse-submodules \
https://github.com/horizon2038/spencer.git spencer
cd spencer
git submodule statusBuild
cargo xtask build \
--arch x86-64 \
--platform qemu \
--releaseSPENCER builds the A9N kernel, A9NLoader-rs, and the default Nun user payload, then creates a bootable disk image.
Kernel
out/x86_64-qemu-release/a9n/kernel.elfLoader
out/x86_64-qemu-release/a9nloader/a9nloader-rs.efiDisk Image
out/x86_64-qemu-release/spencer.imgRun with QEMU
cargo xtask run \
--arch x86-64 \
--platform qemu \
--releaseA successful boot prints the following lines to the serial console.
Nun - an operating system framework based on the A9N Microkernel
Configuring <init> ...
Configuring Initial IPC buffer to thread local storage...
Hello, world!
version: <kernel version>