Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dreden33773/ember_os

A simple OS kernel implemented in rust, which has referenced https://os.phil-opp.com/
https://github.com/dreden33773/ember_os

embedded kernel linux os qemu rtos rust unix x86-64

Last synced: 2 days ago
JSON representation

A simple OS kernel implemented in rust, which has referenced https://os.phil-opp.com/

Awesome Lists containing this project

README

        

# 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/]