Open Source Rust kernel; Runs WASM and WASI as lightweight containers.

Overview

GitHub Workflow Status Discord Lines of code

😳 etheryal Kernel

etheryal kernel is an Open Source capability-based Kernel written in the Rust programming language. The kernel allows implementing a Language-based System, unlike most historic kernels, etheryal components execute in the same address space (process), which contains software-isolated processes (SIPs). Each SIP has its own data and code layout, and is independent from other SIPs. These SIPs behave like normal processes, but avoid the cost of task-switches. etheryal uses a modular design based on Webassembly System Interface (WASI), containerizing drivers and user-space applications in a safe lightweight sandbox (WASM). Just like Singularity, etheryal internal security uses type safety instead of hardware memory protection.

Features

  • Focused on performance and safety.
  • Webassembly (WASM) runtime and Webassembly System Interface (WASI) implementation.
  • Lightweight modular design.

🦀 License

etheryal is licensed under the permissive MIT license.

Building

You can build a Kernel binary with just cargo make.

cargo install --force cargo-make
cargo make build

🥳 Running

You can start a QEMU virtual machine running a booteable image generated with our tool etheryal-bootimage with cargo make.

cargo install --force cargo-make
cargo make run
You might also like...
Examples on how to write Windows kernel drivers in Rust

windows-kernel-rs Note: this is still work in progress! This is a Windows kernel framework in Rust that consists of windows-kernel-sys, a crate that p

Xrs is a POSIX-subset operating system kernel written in Rust.

XRS-OS ( 🚧 WIP) Xrs is a POSIX-subset operating system kernel written in Rust. Current project team members 0x5459 core developer (he/him) 0x5457 cor

Linux kernel modules written in Rust

Linux kernel modules written in Rust A collection of in-progress experimental Linux kernel modules written for the Rust for Linux project To run the o

Rux - An x86_64 toy operating system kernel written in Rust
Rux - An x86_64 toy operating system kernel written in Rust

Rux - An x86_64 toy operating system kernel written in Rust. Rux is a port of the Hux kernel, my x86 32-bit single-CPU toy kernel written in C, following the OSTEP book structure and terminology.

An super minimal kernel written in rust

Grisha This project depends on this blog serie Philipp Oppermann's blog Required Knowlege I don't know what you really need to know to learn efficient

An x86-64 kernel with ~100% Rust (originally) in a week
An x86-64 kernel with ~100% Rust (originally) in a week

litchi-rs An x86-64 kernel with ~100% Rust (originally) in a week. The continuation of Litchi. Try it Make sure the Rust toolchains and qemu-system-x8

Linux ABI-compatible kernel written in Rust
Linux ABI-compatible kernel written in Rust

Linux ABI-compatible kernel written in Rust 🖼️ Screenshot (v0.1.0-alpha.1) 📦 Build dependencies To compile GalaxyOS kernel and create basic OS ISO i

Kernel density estimation in Rust.
Kernel density estimation in Rust.

kernel-density-estimation Kernel density estimation in Rust. Kernel density estimation (KDE) is a non-parametric method to estimate the probability de

A KISS Rust crate to parse Windows kernel crash-dumps created by Windows & its debugger.
A KISS Rust crate to parse Windows kernel crash-dumps created by Windows & its debugger.

kdmp-parser A KISS Rust crate to parse Windows kernel crash-dumps created by Windows & its debugger. This is a cross-platform crate that parses Window

Comments
  • "cargo make run" goes into error

    Follow the build guide,error occured when come to build etheryal-bootimage v0.4.1 using "cargo make run" command. Error messages :

    Compiling etheryal-bootimage v0.4.1 error[E0432]: unresolved import clap::Clap --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/main.rs:26:5 | 26 | use clap::Clap; | ^^^^^^^^^^ no Clap in the root

    error[E0432]: unresolved import clap::Clap --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:23:5 | 23 | use clap::Clap; | ^^^^^^^^^^ no Clap in the root

    error: cannot determine resolution for the derive macro Clap --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:26:10 | 26 | #[derive(Clap)] | ^^^^ | = note: import resolution is stuck, try simplifying macro imports

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:27:3 | 27 | #[clap(version = "0.4", author = "Miguel Peláez [email protected]")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:29:7 | 29 | #[clap(subcommand)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot determine resolution for the derive macro Clap --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:33:10 | 33 | #[derive(Clap)] | ^^^^ | = note: import resolution is stuck, try simplifying macro imports

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:35:7 | 35 | #[clap(long, default_value = "--no-reboot -serial stdio -s")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:40:7 | 40 | #[clap(long, short, default_value = "out")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:43:7 | 43 | #[clap(long, short)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot determine resolution for the derive macro Clap --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:47:10 | 47 | #[derive(Clap)] | ^^^^ | = note: import resolution is stuck, try simplifying macro imports

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:49:7 | 49 | #[clap(long, default_value = "x86_64")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:52:7 | 52 | #[clap(long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:55:7 | 55 | #[clap(long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:58:7 | 58 | #[clap(long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:61:7 | 61 | #[clap(long)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:64:7 | 64 | #[clap(long, short)] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot determine resolution for the derive macro Clap --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:68:10 | 68 | #[derive(Clap)] | ^^^^ | = note: import resolution is stuck, try simplifying macro imports

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:71:7 | 71 | #[clap(version = "0.4", author = "Miguel Peláez [email protected]")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error: cannot find attribute clap in this scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:75:7 | 75 | #[clap(version = "0.4", author = "Miguel Peláez [email protected]")] | ^^^^ | = note: clap is in scope, but it is a crate, not an attribute

    error[E0599]: no function or associated item named parse found for struct opts::Opts in the current scope --> /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/main.rs:40:28 | 40 | let opts: Opts = Opts::parse(); | ^^^^^ function or associated item not found in opts::Opts | ::: /home/test/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/etheryal-bootimage-0.4.1/src/opts.rs:28:1 | 28 | pub struct Opts { | --------------- function or associated item parse not found for this | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item parse, perhaps you need to implement it: candidate #1: Parser

    Some errors have detailed explanations: E0432, E0599. For more information about an error, try rustc --explain E0432. error: failed to compile etheryal-bootimage v0.4.1, intermediate artifacts can be found at /tmp/cargo-installLZeLU8

    Caused by: could not compile etheryal-bootimage due to 20 previous errors [cargo-make] ERROR - Error while executing command, exit code: 101 [cargo-make] WARN - Build Failed.

    opened by fatgrass 1
Owner
Open source operating system, with an unique design that explores new possibilities like Webassembly runtime, Kernel mode containers, memory safety and more.
null
Distrod is a meta-distro for WSL 2 which runs Systemd as init process. You can run Ubuntu, Arch, and et.c with systemd in a minute. Distrod also has built-in auto-start feature on Windows startup and port forwarding abiltiy.

Distrod - WSL2 Distros with Systemd! Distrod is a systemd-based meta-distro for WSL2 that allows you to install Ubuntu, Arch Linux, Gentoo and many ot

Takaya Saeki 1.6k Jan 9, 2023
🍒 Small, simple, and fast kernel written in Rust. 🌸

?? Small, simple, and fast kernel written in Rust. ??

Cherry Developers 5 May 20, 2022
The official kernel for Popcorn OS, and operating system designed for handheld devices.

About Popkern is the kernel for Popcorn OS, an operating system designed for handheld devices. As such, the kernel is (to be) optimised at all levels

Team Scena 3 Sep 19, 2021
(Going to be) A microkernel that implements a WebAssembly "usermode" that runs in Ring 0.

Read this (from the creator of Nebulet) Hi everyone, It's been a while since I've looked at this repository. Nebulet is not in active development, and

Nebulet 2.3k Dec 15, 2022
An OS kernel written in rust. Non POSIX

"Tifflin" Experimental Kernel (and eventually Operating System) This is an experiment in writing an OS Kernel in rust (http://rust-lang.org). Mostly t

John Hodge (Mutabah) 618 Jan 8, 2023
A tiny 32 bit kernel written in Rust

rustboot A tiny 32 bit kernel written in Rust. I was inspired to download Rust and try to do this after seeing zero.rs - a stub that lets Rust program

Charlie Somerville 1.5k Dec 30, 2022
Experimental kernel for embedded devices written in Rust

bkernel is an experimental kernel for embedded devices written in Rust. I'm mostly trying out Rust now to see how it applies to kernel development. Pr

Alexey Shmalko 84 Dec 13, 2022
Basic Rust kernel using Limine

Rust Limine Barebones This is a small kernel that boots using Limine. Build First of all, download Rust ! (I guess you already did it if you are here

Quentincestino 16 Dec 23, 2022
A new operating system kernel with Linux binary compatibility written in Rust.

Kerla Kerla is a monolithic operating system kernel from scratch in Rust which aims to be compatible with the Linux ABI, that is, runs Linux binaries

Seiya Nuta 3.1k Jan 1, 2023
Minimal x86_64 OS kernel written in Rust

rkernel A minimal x86_64 Rust OS kernel. Multiboot2 VGA driver PIC PIT PS/2 Keyboard driver PS/2 Mouse driver TSC RTC Allocator ATA PIO (In progress..

Divy Srivastava 36 Apr 26, 2022