Voltar ao ranking

nebulet/nebulet

Rust

A proof-of-concept microkernel that implements a WebAssembly "usermode" that runs in Ring 0.

osdevwebassemblyrustoperating-systemmicrokernelnebulet
Crescimento de estrelas
Estrelas
2.4k
Forks
72
Crescimento semanal
Issues
9
1k2k
mar. de 2018dez. de 2020out. de 2023jul. de 2026
Artefatoscrates.iocargo add nebulet
README

Nebulet

Join the chat at https://gitter.im/nebulet/nebulet Build Status

What is Nebulet?

Nebulet is a Google Summer of Code project started during the summer of 2018. More details about Nebulet and GSoC are here.

Under the hood, Nebulet is a microkernel that executes WebAssembly modules in ring 0 and a single address space to increase performance. This allows for low context-switch overhead, syscalls just being function calls, and exotic optimizations that simply would not be possible on conventional operating systems. The WebAssembly is verified, and due to a trick used to optimize out bounds-checking, unable to even represent the act of writing or reading outside its assigned linear memory.

The Cranelift compiler is used to compile WebAssembly to native machine code. Once compiled, there are no complex interactions between the application and the runtime (unlike jit compilers, like v8) to reduce surface area for vulnerabilities.

Right now, Nebulet isn't ready to do anything yet, but it'll get there.

Building & Running

MacOS requires you to first cross compile binutils and to add the newly compiled ld-bfd to your path.

# checkout code and associated submodules
$> git clone https://github.com/nebulet/nebulet.git
$> cd nebulet/ && rustup override set nightly

# install tools
# make sure that `python` is accessible.
$> rustup component add rust-src
$> rustup target add wasm32-unknown-unknown
$> cargo install cargo-xbuild
$> cargo install --git https://github.com/nebulet/bootimage --branch packaging

# build userspace
$> cargo userspace

# compile the kernel
$> bootimage build --release

# compile and run the kernel in qemu
$> bootimage run --release -- -serial stdio
Repositórios relacionados
reactos/reactos

A free Windows-compatible Operating System

CGNU General Public License v2.0operating-systemc
reactos.org
17.9k2.2k
s-matyukevich/raspberry-pi-os

Learning operating system development using Linux kernel and Raspberry Pi

CMIT Licenseraspberry-pilinux-kernel
13.9k1.3k
ravynsoft/ravynos

An open-source OS project that aims to provide source and binary compatibility with macOS® and a similar user experience.

Cfreebsdmacos
ravynos.com
6.8k229
klange/toaruos

Complete, independent operating system built by humans.

CUniversity of Illinois/NCSA Open Source Licenseoperating-systemtoaruos
toaruos.org
6.8k540
unikraft/unikraft

A next-generation cloud native kernel designed to unlock best-in-class performance, security primitives and efficiency savings.

COtherunikernelunikraft
unikraft.org
3.8k1.5k
rcore-os/rCore

Rust version of THU uCore OS. Linux compatible.

Rustcrates.ioMIT Licenserustosdev
3.7k378
nanovms/nanos

A kernel designed to run one and only one application in a virtualized environment

CApache License 2.0osdevsecurity
nanos.org
3.2k180
skift-org/skift

🥑 A modern delightful operating system (mirror)

C++GNU Lesser General Public License v3.0osdevkernel
codeberg.org/skift/os
3k149
icexin/eggos

A Go unikernel running on x86 bare metal

GoGo ModulesMIT Licensegogolang
eggos.icexin.com
2.3k122
jubalh/awesome-os

A list of operating systems and stuff

osos-dev
2.2k213
hermit-os/hermit-rs

Hermit for Rust.

Rustcrates.ioApache License 2.0virtualizationosdev
hermit-os.org
1.9k113
o8vm/octox

Unix-like OS in Rust inspired by xv6-riscv

Rustcrates.ioApache License 2.0rustxv6-riscv
1.6k64