Experimental operating system written in Rust.
I am following the Writing an OS in Rust series at os.phil-opp.com. If you use this and find it helpful please head over there and support him.
This project is a work in progress, below is the current status of the roadmap:
- Create operating system kernel
- Implement support for VGA Text Mode
- Create a testing framework
- Handling CPU Exceptions
- Handling Double (and Triple) Faults
- Set up Interrupt Controller for Hardware Interrupts
- Memory Management: Paging
- Memory Management: Support for Heap Allocation
- Support for Async/Await
Rust has three release channels: stable, beta, and nightly. The Rust Book explains the difference between these channels really well: https://doc.rust-lang.org/book/appendix-07-nightly-rust.html#choo-choo-release-channels-and-riding-the-trains.
For building an operating system, we will need some experimental features that are only available on the nightly channel, so we need to install a nightly version of Rust.
rustup override set nightly
rustup component add llvm-tools-preview
cargo install bootimage
cargo bootimage
To run the application you can use a virtual machine. See this link for instructions regarding installing and using qemu: https://www.minitool.com/partition-disk/qemu-for-windows.html
First step is to copy target/x86_64-lojoh_os/debug/bootimage-lojoh_os.bin to the folder where qemu is running:
copy .\target\x86_64-lojoh_os\debug\bootimage-lojoh_os.bin <qemu-location>
Then cd to qemu-location:
cd <qemu-location>
...and run the os:
qemu-system-x86_64 -drive format=raw,file=bootimage-lojoh_os.bin
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.