Host requirements

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 status

If 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 status

Build

cargo xtask build \
  --arch x86-64 \
  --platform qemu \
  --release

SPENCER builds the A9N kernel, A9NLoader-rs, and the default Nun user payload, then creates a bootable disk image.

Kernelout/x86_64-qemu-release/a9n/kernel.elf
Loaderout/x86_64-qemu-release/a9nloader/a9nloader-rs.efi
Disk Imageout/x86_64-qemu-release/spencer.img

Run with QEMU

cargo xtask run \
  --arch x86-64 \
  --platform qemu \
  --release

A 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>