"Linux as a Microkernel", or Linux - POSIX?
  • Rust 65.5%
  • Shell 34.5%
Find a file
2021-01-06 08:33:28 -08:00
docker Create an init process in Rust that can mount the initial file systems appropriately. 2021-01-06 08:33:28 -08:00
scripts Create an init process in Rust that can mount the initial file systems appropriately. 2021-01-06 08:33:28 -08:00
src/bin Create an init process in Rust that can mount the initial file systems appropriately. 2021-01-06 08:33:28 -08:00
.gitignore Create an init process in Rust that can mount the initial file systems appropriately. 2021-01-06 08:33:28 -08:00
Cargo.toml Create an init process in Rust that can mount the initial file systems appropriately. 2021-01-06 08:33:28 -08:00
README.md Create an init process in Rust that can mount the initial file systems appropriately. 2021-01-06 08:33:28 -08:00

Introduction

The repository is an exploration of the question: what if we wanted to use the Linux kernel as a poor man's microkernel? Microkernels are cool and all, but figuring out how to deal with all the device drivers is a bit soul crushing. So here, we're going to skip over those details, and see what it'd look like if we just built everything else: the network stack, the file systems, the graphical infrastructure, virtualization, etc. And let's use Rust to do it, because I'm a fanboy. And let's not keep ourselves to POSIX and standard Linux file system organization, because why bother?

To Hit Go

Well, you'll need Docker.

You'll need to use a fancy Rust Docker container or two. Run this:

% ./scripts/build-docker-envs.sh

To build your handy-dandy Docker containers.

To build the linux kernel, which you'll need, you should run:

% ./scripts/build-kernel.sh

You'll then want to run the Rust build:

% cargo build --release --target x86_65-unknown-linux-musl

And then build this all up into a nice ramdisk:

% ./scripts/build-ramfs.sh

And run the demo:

% ./scripts/run.sh

Wheee!! Fun!!