llenotre / maestro
- суббота, 6 января 2024 г. в 00:00:02
Unix-like kernel written in Rust
Maestro is a lightweight Unix-like kernel written in Rust.
The goal is to provide a lightweight operating system able to use the safety features of the Rust language to be reliable.
This project is still in early stage development, thus it is highly unstable and misses a lot of features. Do not use it in production!
To stay updated with the project, follow the blog!
Neofetch and bash running on the OS.
The following features are currently implemented (non-exhaustive):
This repository is not a full operating system in itself but only the kernel.
You can either:
The OS can then be run by a virtual machine such a QEMU or VirtualBox, or on a physical machine.
The configuration allows to easily specify which features have to be enabled in the kernel. This configuration is required to compile the kernel.
A default configuration is available in the file default.config.toml
. To use it, simply type the command:
cp default.config.toml config.toml
After configuration, the kernel can be built using the following commands:
cargo build # Debug mode
cargo build --release # Release mode
The default architecture is x86
. To specify another architecture, add the following parameter to the build command: --target arch/<arch>/<arch>.json
, where <arch>
is the selected architecture.
The list of available architectures can be retrieved by typing the command:
ls -1 arch/
QEMU is the preferred virtual machine to test the kernel.
To install QEMU, type the following command:
Ubuntu/Debian:
apt install qemu
Arch Linux:
pacman -S qemu
A fully built operating system is required to run the system. This system must be present on a raw disk in the file qemu_disk
at the root of the repository. The option -drive file=qemu_disk,format=raw
is used on QEMU to reference the disk.
The kernel can be run using:
cargo run # Debug mode
cargo run --release # Release mode
The following command runs unit tests in QEMU:
cargo test --lib
The kernel's book contains general information on how to use the kernel.
The book can be built using mdbook, with the command:
mdbook build doc/
Then, it can be accessed at doc/book/index.html
.
The references contain the documentation for functions, structures, etc...
It can be built using the command:
cargo doc
Then, it can be accessed at target/<arch>/doc/kernel/index.html
, where <arch>
is the architecture the kernel has been compiled for.