# Ember OS > ## ❤️ Please give me a `Star` / `Follow` if you like this project! ❤️ ## Brief A simple OS implemented in rust, referenced `Philipp Oppermann`'s `Writing an OS in Rust blog`. ## Referencing Info This project includes(referenced) code from [phil-opp](https://github.com/phil-opp)'s [blog_os](https://github.com/phil-opp/blog_os), which is available under the [MIT LICENSE](https://github.com/phil-opp/blog_os/blob/main/LICENSE-MIT) and the [APACHE LICENSE](https://github.com/phil-opp/blog_os/blob/main/LICENSE-APACHE). The original code can be found at [phil-opp/blog_os](https://github.com/phil-opp/blog_os). Main extensions (differences between `this` project and `phil-opp`'s) are as follows: 1. Full implementation of the `Asynchronous Task Manager` 2. Simple implementation of the `Shell` 3. Fully transplanted `benchmarks` from `NJU-OS-Experiment` ## Build With the reliance on a bunch of `unstable features`, `nightly` channel of `rust-toolchain` is in need. A simple way is to run `rustup update nightly --force`. Obviously, you should have `qemu` installed first. You could do that with the help of `brew`: ```bash brew install qemu ``` Last but not least, install [`bootimage`](https://crates.io/crates/bootimage) so that you could create a legal boot disk image from the complied kernel: ```bash cargo install bootimage ``` Finally, you could build the project by running: ```bash cargo build ``` And then, you could run it: ```bash cargo run ``` Or, run some given tests: ```bash cargo test ``` (Yes, `cargo bootimage` is not a necessary step, as the build behavior under this project has been adjusted to do that automatically before `running`) ## Acknowledgements - [https://github.com/phil-opp/blog_os] - [https://os.phil-opp.com/]