必要なTool

Rust ToolchainはSPENCERのrust-toolchain.tomlで指定されます.初回BuildではToolchainとCargo Packageの取得にNetwork接続を使います.

Sourceを取得する

通常はSSHを使い,SPENCERをSubmoduleとともに取得します.

git clone --recurse-submodules \
  [email protected]:horizon2038/spencer.git spencer
cd spencer
git submodule status

SSH Credentialを利用できない環境では,Submodule URLをHTTPSへ置換して取得できます.

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はA9N Kernel,A9NLoader-rs,既定のNun User Payloadを個別にBuildし,Boot可能な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

QEMUで起動する

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

起動が完了すると,Serial出力に次の内容が表示されます.

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>