Rust implementation of Xinu, based on the excellent blog written by Philipp Oppermann
sudo apt-get install gcc qemu -y
curl https://sh.rustup.rs -sSf | sh -s -- -y
export PATH="${PATH}:$HOME/.cargo/bin"
rustup default nightly
rustup component add rust-src
rustup component add llvm-tools-preview
cargo install bootimage
cargo run # run kernel using qemu
docker build -t rxinu .
docker run -v ${PWD}:/home/rxinu/rxinu -i -t rxinu
There are multiple methods of running QEMU in headless mode. To use the curses
option, use the following:
cargo run -- -curses
See here for instructions on running the kernel on VirtualBox or on real hardware.
See Phillipp Oppermann's blog post regarding gdb to build a gdb binary that can debug x86_64 kernels.
qemu-system-x86_64 -drive format=raw,file=bootimage.bin -d int -s -S &
rust-gdb target/x86_64-rxinu/debug/rxinu -ex "target remote :1234"
- Architectures
- x86_64
- MMU
- Paging
- Heap Allocation
- Interrupt Handling
- Exceptions
- IRQ
- Scheduling
- Cooperative Scheduler
- Preemptive Scheduler
- Device Drivers
- PIC
- PIT
- PS/2 Keyboard
- Serial
- VGA
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.