Nullex is a kernel written fully in Rust. It is easily extendable and modular, making it easy to implement and make changes to. This kernel currently only runs in QEMU, because I have not tested creating a ISO file.
My goal is to create a fully fledged kernel in Rust, similar to Linux and RedoxOS, aiming to support multiple different architectures, and other things and to also get the community involved in having fun in coding something very tedious, like a Kernel / Operating System.
Thanks so much to Philipp Oppermann's Blog OS Tutorial I highly recommend it if you want to get started into OS and Kernel Programming. This project was started because of him so thanks so much.
Just a quick note: When using cargo test
no tests are found. If you want to test something, please use cargo test --test test_name
. I will need to fix this in the future.
- Rust-powered: Leverages Rust’s safety guarantees.
- Modular design: Easily extendable and maintainable.
- Rust (install the appropriate version; nightly is required)
- Cargo
- QEMU
- CMake
- LLVM Tools
- MSYS2 (if on windows)
Clone the repository:
git clone https://github.com/Peggun/nullex.git
cd nullex
Install bootimage:
cargo install bootimage
Install required rustup tools
rustup component add llvm-tools-preview
sudo apt install build-essential make llvm
To setup MSYS2 tools, we would prefer if you used UCRT64
Install the following:
pacman -S mingw-w64-ucrt-x86_64-binutils mingw-w64-ucrt-x86_64-toolchain
You can build the project, but for debugging purposes, you don't need to. Building in release mode is mostly recommended for public release.
cargo build --release
Run the test suite (READ THE NOTE ABOVE) :
cargo test
Run the QEMU Emulator:
cargo run -- -drive format=raw,file=ext2test.img,index=1,media=disk,if=ide -serial mon:stdio
or
make run
Contributions are welcome! Please check out our CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.
This project is licensed under the MIT License – see the LICENSE file for details.
For questions, suggestions, or contributions, please open an issue in this repository.