Status: v0.4 tagged milestone; v0.5 extends this with BootInfo normalization
v0.4.0 replaces the temporary v0.3 stage-0 probe with a Rust kernel entry.
The image path now builds a release-profile freestanding x86_64-unknown-none
ELF, packages it with Limine, boots it in QEMU, and validates serial output
from Rust _start.
cargo xtask build-kernel
cargo xtask image
cargo xtask qemucargo xtask image creates:
build/qemu/aesynx-v0.4.0.iso
build/qemu/aesynx-v0.4.0.manifest
The manifest records the kernel profile, the Limine minimum version, and the Rust, Limine, xorriso, and QEMU version banners used to create and smoke-test the image.
cargo xtask qemu expects:
Aesynx: booting
arch=x86_64 platform=qemu
[TEST] boot=ok
boot/qemu/limine.confconfigures Limine.crates/aesynx-kernel/src/main.rsexports_start.crates/aesynx-arch-x86_64/src/serial.rsprovides the safe COM1 writer.crates/aesynx-arch-x86_64/src/port.rscontains the reviewed port-I/O unsafe boundary.linker/kernel-x86_64.ldkeeps load segments page-separated so Limine does not load mixed-permission program headers onto the same page.- The v0.4 boot entry writes fixed strings directly, so the boot ELF avoids a
writable
.gotsection. boot/qemu/limine.confkeeps KASLR disabled for the QEMU smoke image until Limine BootInfo parsing can populateKernelImageInfowith the randomized load addresses.
This milestone proves:
- Stable Rust can build the first freestanding kernel ELF.
- Limine can load the ELF in QEMU.
- Rust
_startruns. - COM1 serial output works.
- The QEMU smoke test validates a kernel-owned marker.
- Panic serial output is best-effort and bounded so execution still reaches the halt path if the UART does not become ready.
This milestone does not prove:
- BootInfo parsing.
- Memory-map normalization.
- KASLR-enabled boot.
- Page-table ownership.
- Interrupts or exceptions.
- Panic diagnostics beyond a minimal serial fallback.
- SMP-safe serial logging.
- Allocator setup.