roxy-loader
Lightweight Rust bootloader for kernel development.
Quick Start
If you want to build your own kernel on top of roxy-loader, start from the template repository:
If you are adapting an existing kernel to use roxy-loader, you can use the template repository as a reference.
For more information, check the README of the template repository
C Support
If you want to use roxy-loader with a C kernel, you can refer to the
C template.
[!WARNING] Although
roxy-loaderofficially supports C kernels, it is not recommended.roxy-loaderhas the best support for Rust kernels.
Interface
This section assumes your kernel follows the same structure as the template repository, or that you are using the template directly.
Framebuffer
The framebuffer is available as bootinfo.framebuffer.
It currently provides:
ptr(): returns the framebuffer base pointer as*mut u8size: total framebuffer size in bytesstride: framebuffer stride
Example:
unsafe
Memory Map
Memory map access is not supported yet.
SMP
roxy-loader does not support SMP.
If you need SMP, use the ap-startup crate.
Developing roxy-loader
This repository itself is the loader implementation and its supporting crates.
Requirements
- Rust toolchain from
rust-toolchain.toml qemu-system-x86_64- optionally
nixif you want to use the provided dev shell
Enter the dev shell with Nix:
Or use your local Rust + QEMU installation directly.
Commands
Build and run the basic kernel for quick testing in QEMU:
Run host-side and kernel-side tests: