Skip to content

Rust implementation of Xinu educational operating system

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

robert-w-gries/rxinu

Repository files navigation

Build Status

rxinu

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

Running

Docker

docker build -t rxinu .
docker run -v ${PWD}:/home/rxinu/rxinu -i -t rxinu

QEMU headless mode

There are multiple methods of running QEMU in headless mode. To use the curses option, use the following:

cargo run -- -curses

Other methods

See here for instructions on running the kernel on VirtualBox or on real hardware.

Debugging

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"

Features

  • 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

License

Licensed under either of

at your option.

Contribution

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.

About

Rust implementation of Xinu educational operating system

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published