On this page:
Small Rust OS Documentation

Small Rust OS Documentation

Luke Jianu <jianuluke@gmail.com>,
Andrey Piterkin <andrey.piterkin@gmail.com>,
Lucas Sta Maria <lucas@priime.dev>,
Oleg Pavlenko <oleg.pavlenko@outlook.com>,
James Sweeney <sweeneyj202@gmail.com>,
Nishil Patel <nishil.patel13@gmail.com>,
and Derek Kaplan <thederekkaplan@proton.me>

This site contains documentation for the small-rust-os project. This project is an attempt to systematically design and implement a small operating system in the Rust programming language. We are currently in the very early stages, still deciding on the scope of the project.

This document is itself written using Scribble, a Racket DSL for writing documentation. You can see its source at https://github.com/lukejianu/small-rust-os/tree/main/docs, starting with the "index.scrbl" file.

    1 Motivation

      1.1 Why?

        1.1.1 Why Operating Systems?

        1.1.2 Why Rust?

        1.1.3 Why Systematic Design?

 The Design Recipe

 The Design Recipe in Rust

 Systematic Design in our OS

    2 A Toy Operating System

      2.1 What is an OS?

        2.1.1 OS as an API

 System Calls


 System Calls Are Everywhere!

        2.1.2 OS Functionality

 Process Management

 Memory Management

 File Management

    3 The Components

      3.1 Scheduler

      3.2 Memory Allocator

      3.3 File System

      3.4 Shell

      3.5 Booter

    4 The Plan

      4.1 The Scope

      4.2 Component Ordering

      4.3 Milestones

      4.4 Milestone 1

        4.4.1 Freestanding Binary


 C Program to Binary

 Bare Metal Rust

 Aside: The Java Virtual Machine

        4.4.2 Hello World Bootable Disk Image

        4.4.3 Testing


 Unit Tests

      4.5 Milestone 2

      4.6 Milestone 3

    5 Contributor Resources

      5.1 Operating Systems

      5.2 Rust

      5.3 Scribble

Last built and deployed at Thursday, December 21st, 2023 4:36:34pm PST.