Skip to content

Add other project section on EuraliOS #128

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Nov 21, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions content/this-month/2022-11/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,37 @@ In this section, we describe updates to Rust OS projects that are not directly r
...<<your project updates>>...
-->

### [`bendudson/EuraliOS`](https://github.com/bendudson/EuraliOS)
<span class="maintainers">(Section written by [@bendudson](https://github.com/bendudson))</span>

EuraliOS is a hobby multitasking operating system written in
Rust. It's based on a microkernel ("Merriwig") that provides on-demand
paging, stack and heap memory management for multi-threaded user
processes. Drivers run in Ring 3 and communication between processes
is by Rendezvous message passing. Each process can have its own
virtual file system, enabling multiple users to be isolated from each
other.

This still has many rough edges and doesn't have many drivers:
EuraliOS only has ramdisk storage, but does have a TCP stack thanks to
the [smoltcp](https://github.com/smoltcp-rs/smoltcp) crate. The only
user programs are a simple shell and a
[Gopher](https://en.wikipedia.org/wiki/Gopher_(protocol)) client; I'm
trying to port the [kibi](https://github.com/ilai-deutel/kibi) text
editor but have a lot of work to do on the standard library.

This was based on [Phil's blog](https://os.phil-opp.com/) and uses
many rust-osdev crates including
[x86_64](https://github.com/rust-osdev/x86_64),
[bootloader](https://github.com/rust-osdev/bootloader) and
[vga](https://github.com/rust-osdev/vga). Thanks to Phil and
Rust-OSdev contributors for all their work supporting this community!

I've tried to
[document](https://github.com/bendudson/EuraliOS#documentation) the
development steps and hope these are useful for others, particularly
the sections on getting into Ring 3, implementing syscalls and
switching stacks with `swapgs`. Suggestions for improvement welcome!

## Other News

Expand Down