- Console driver with log support
- Page frame mapping and table generation (using buddy_system_allocator as global allocator)
- Grant table creation/destruction
- XenStore interface
- XenBus interface
- Simple async executor
- Network driver using smoltcp for TCP/IP stack
Building and running stardust-oxide
requires:
- Rust toolchain (latest nightly)
- C compiler
- Xen hypervisor and associated headers
The recommended way to install Rust is with rustup. The rust-toolchain
file in the repository root will ensure the correct toolchain version is installed and used (therefore the toolchain and components selected during installation do not matter).
The required packages can be installed on Ubuntu with:
$ sudo apt install -y clang xen-system-amd64 libxen-dev
The host machine must be restarted to boot into the hypervisor with the original Debian/Ubuntu installation now running as the Domain 0 virtual machine.
Executing cargo build
in the repository root will build all three crates including the stardust
kernel binary.
Executing cargo run
will call the run.sh
script which generates the configuration for the Xen virtual machine then uses xl
to start it.
This project is a Cargo workspace consisting of three crates.
Main crate that produces a kernel binary and contains the start_kernel
entrypoint function.
Contains safe interfaces to the xen-sys
that could be used to write any guest Xen kernel.
Contains Rust bindings to the Xen C headers using bindgen
.