# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# The repo pins nightly via its rust-toolchain file; just add the components.
rustup component add rust-src llvm-tools-preview
# Bootimage (x86_64 bootable image)
cargo install bootimage
# QEMU + ARM cross-binutils (objcopy) + assembler
sudo apt update
sudo apt install -y qemu-system-x86 qemu-system-arm binutils-aarch64-linux-gnu nasmThe ARM build uses the in-repo custom target
aarch64-axiom.jsonwith-Z build-std(which is whyrust-srcis required) andaarch64-linux-gnu-objcopyfrombinutils-aarch64-linux-gnu. No extrarustup target addstep is needed.
cd axiom-os-kernel
cargo run --bin axiom_osExpected: the AXIOM OS v0.3.0-alpha banner and an interactive shell prompt.
./run_arm.shExpected: the AXIOM OS v0.3.0-alpha aarch64 banner, a BLAKE3 hash, and the benchmark output.
Inside the booted shell:
trust secret hello world
cat secret
tamper secret
cat secret
Expected on the final cat: READ BLOCKED — provenance violation.
bench
Reports the proportional-access ratio (whole-file vs. block-level verification) measured in-kernel via RDTSC. Cycle counts under QEMU are used only to confirm the ratio, not as absolute timings.
bench-native is a std crate nested in this no_std repo, so it inherits the kernel's
bare-metal cargo config. Build and run it outside the kernel tree:
cp -r bench-native /tmp/axiom-bench && cd /tmp/axiom-bench
cargo run --releaseReports BLAKE3 throughput, whole-file vs. block-level verification time, and the
inline-vs-periodic comparison. See BENCHMARKS.md for current numbers and hardware.