Awesome
Awesome Operating System Stuff
This list contains awesome operating system related stuff. The goal is to collect all kinds of different open source OSs so people can study their code and learn from them. As well as collect helpful resources to help people getting started developing in popular operating systems.
Open Source Operating Systems
- 9front - A fork of Plan 9, designed for distributed, networked computing.
- AROS - Research Operating System is a lightweight, efficient, and flexible desktop operating system, designed to help you make the most of your computer. It's an independent, portable and free project, aiming at being compatible with AmigaOS at the API level
- AlmeidaOS - x86-64 OS with its own bootloader, scheduler and limited libc all written from scratch
- Animal - 32 bit multithreaded operating system (formerly Gramado)
- AurixOS - A small multiplatform Operating System designed for developers and creators
- AquilaOS - Operating System that is designed to be POSIX compliant and mostly ISA transparent
- BareMetal, GitHub - 64 bit operating system written in Assembly for x86-64
- Basekernel - A simple OS kernel for research, teaching, and fun
- BoneOS- OS for everyone built by everyone
- Bottlerocket OS- Linux-based OS meant for hosting containers.
- Brutal - An operating system inspired by brutalist design that combines the ideals of UNIX from the 1970s with modern technology and engineering
- cavOS - Amd64 operating system in C. Trying to make a full OS, with a simple and readable codebase
- Charlotte - CharlotteOS kernel in Rust
- ChibiOS - a complete development environment for embedded applications including RTOS, an HAL, peripheral drivers, support files and tools
- Clive - A unikernel OS inspired by Plan9 and Nix developed at Universidad Rey Juan Carlos of Madrid
- Cyjon - pure x64 assembly language operating system (related to Fern-Night project).
- DragonOS - An x86-64 OS build from scratch.
- Dreamos64 - An x86-64 hobby os built from scratch
- Embox - Configurable operating system kernel designed for resource constrained and embedded systems.
- ExectOS, GitHub - ExectOS is a modern, EFI-enabled, general purpose operating system written from scratch and implementing the XT architecture. It runs on x86 and x86_64 architectures and provides NT drivers compatibility layer.
- Fern-Night - C language operating system (related to Cyjon project).
- Fiwix, GitHub - A UNIX-like kernel for the i386 architecture.
- Fomos - Experimental OS, built with Rust.
- FreeRTOS, GitHub - IoT operating system for microcontrollers, by Amazon.
- GarnOS - Hobby OS powered by a modular kernel.
- Genode - A FOSS operating system framework consisting of a microkernel abstraction layer and a collection of userspace components
- Gloire - An OS built with the Ironclad kernel (a partially formally verified kernel with a small footprint for general-purpose and embedded OSes, written in SPARK and Ada) and GNU tools.
- GreenteaOS, Github - A free OS designed to be compatible with Windows executables
- HalideOS - experimental operating system written entirely from scratch.
- HarveyOS - A distributed operating system
- HelenOS - multikernel multiserver OS
- House - Haskell User's Operating System and Environment.
- Hubris - Hubris is an operating system for microcontrollers developed by Oxide Computer Company in Rust
- Illumos - illumos is a Unix operating system which provides next-generation features for downstream distributions (like OmniOS, OpenIndiana, and Tribblix)
- Interim - Minimalist OS with concepts from Lisp machines and Plan9
- JSD-OS - A small operating system for 32 bit x86.
- Jehanne, GitHub - OS inspired by Plan9, 9front and Harvey OS
- KiddieOS - UNIX-like 64-bit operating system written in Assembly, C++.
- KnightOS - for z80 calculators
- KolibriOS - MenuetOS fork
- L4re - Operating system and hypervisor for security/safety-critical and virtualization-enabled applications.
- LemonOS, GitHub - UNIX-like 64-bit operating system written in C++.
- Mako - Hobby OS for x86 from scratch, written in C
- MaslOS - A 64 bit GUI multitasking Hobby OS written mostly from scratch in C++ and a bit of C/ASM.
- MeetixOS - A hobby OS written in modern C++20 which aims to be Unix-like.
- MentOS - An educational 32-bit linux-like Operating System.
- MenuetOS - Hobby OS supporting 32 and 64 bit, written in Assembly language
- Mimiker, GitHub - Simple unix-like operating system for education and research purposes. MIPS microkernel.
- Mimosa, GitHub - Research Operating System that runs Scheme on bare-metal
- Minoca OS - General purpose OS, written in C
- MollenOS - MollenOS/Vali is a modern operating system that is built with focus on abstraction and a modular design, allowing anyone to port it to any architecture. It currently targets the x86-32 and x86-64 platform
- MyXomycota - Monolithic kernel in C
- NESOS - An OS for the Nintendo Entertainment System!
- Nanos - Unikernel that is linux-compatible, written in C
- NodeOS - OS using NodeJS and Linux
- Northport - Monolithic kernel and support libraries for riscv64 and x86_64.
- PathOS - Hobby OS based on MikeOS, written in Assembly Language
- Pidi OS - Independent and minimalistic OS
- PonyOS, GitHub - ToaruOS-based, My Little Pony themed OS
- PouplyOS - Simple OS for fun and learning, named after the ESISAR mascot Poulpy
- PureDarwin - PureDarwin is a community project to extend Darwin into a complete, usable operating system
- Qubes OS - Security-focused OS built on the Xen hypervisor, designed to isolate different compartments based on levels of trust.
- RavynOS - A BSD-based OS project that aims to provide an experience like and some compatibility with macOS (formerly known as airyxOS)
- Redox - written in Rust
- RustyHermit - A Rust-based, lightweight unikernel
- Sanos, GitHub - Sanos is a minimalistic 32-bit x86 operating system kernel for network server appliances running on standard PC hardware.
- SayoriOS - Hobby OS for x86 computers, currently under active development, written in C
- Sculpt OS - Genode based OS
- Serenity - Graphical Unix-like operating system for x86 computers
- SimpleOS - Simple Operating System coded in C and Assembly
- Snowdrop OS - a homebrew operating system from scratch, in assembly language
- Sortix - Hobby OS in C and C++ by Jonas 'Sortie' Termansen
- Syllable - Successor of AtheOS, Syllable is designed in the tradition of the Amiga and BeOS, but built using many parts from the GNU project and Linux.
- SynestiaOS - 32/64 bit operating system written in C for arm platform
- TempleOS - Religious OS :-)
- Theseus - A modern experimental OS written from scratch in Rust to explore novel OS structure and state management techniques.
- Thor - 64bit operating system mostly written in C++
- ToaruOS - Hobby operating system from scratch
- Týndur - Hobby operating system build by the Lowlevel community. Written in C and Pascal
- Ultron OS - x86 Operating System written in C++, High School Project
- Unikraft - A modular unikernel for specialization, high efficiency, performance, and security; Linux/POSIX-compatible; mostly in C
- Vinix - Vinix is an effort to write a modern, fast, and useful operating system in the V programming language
- Visopsys - Open Source Hobby OS developed since 1997
- Windows 95 in Electron - Hobby Windows 95 implementation in Electron
- Xv6 - A teaching operating system developed in the summer of 2006 for MIT's operating systems course
- ZealOS - The Zeal Operating System is a modernized, professional fork of the 64-bit Temple Operating System, TempleOS.
- ackOS - A simple 64-bit operating system.
- aurora_os - Written in Rust.
- dahliaOS- dahliaOS is a modern, secure, lightweight and responsive operating system, combining the best of GNU/Linux and Fuchsia OS.
- duckOS - A hobby UNIX-like OS with a graphical window manager for x86 computers.
- eggos - A Go unikernel running on x86 bare metal
- emerald - An operating system kernel written for fun in C
- gopher-os - A proof of concept OS kernel written in Go
- hhuOS - hhuOS is a small operating system written in C++ and Assembler for the x86-architecture. The main purpose of this project is to show how different aspects of operating systems theory can be implemented and linked together. The system is not aimed to be a full-featured operating system for daily use.
- hydrogen - toy OS. 64-bit, preemptive multitasking kernel supporting EFI, PCIe, SATA, framebuffer graphics mode, HFS+.
- lyre - x86 kernel and distribution powered by mlibc, GNU userland tools, and other common *nix software.
- managarm - Pragmatic microkernel-based OS with fully asynchronous I/O
- menix - A minimal and expandable Unix-like operating system.
- moros - MOROS is a hobby operating system written in Rust for the x86 architecture.
- mOS - A hobby operating system developed from scratch
- nopeos - Simple OS kernel with BASIC interpreter for x86
- octox - Unix-like OS in Rust inspired by xv6-riscv
- oneOS - x86-32 and ARMv7 kernel with pre-emptive multi-threading, window manager and editor
- opuntiaOS - an operating system targeting x86, ARMv7, Aarch64.
- orange_slice - A research kernel and hypervisor attempting to get fully deterministic emulation with minimum performance cost. In Rust
- pranaOS - A unix operating system written from scratch in c / c++
- quickOS - An OS made by an independant developer, still in developement, like MS-DOS, but in qbasic. It's MADE with qb64.
- r3 - A hobby x86_64 Operating System kernel written in Rust -- with minimal functionalities
- ravynOS - BSD-based OS project that aims to provide an experience like and some compatibility with macOS (formerly known as airyxOS)
- skiftOS, GitHub - A simple, handmade, operating system with a graphical user interface.
- soso - Simple unix-like operating system written in Nasm assembly and mostly in C
- tilck - A Tiny Linux-Compatible Kernel.
- tock, GitHub - A secure embedded operating system for microcontrollers
- unox-os - Unox is an educational unix-like operating system
- willOS - A minimal 64 bits kernel (Operating System that cannot "operate" a lot of things)
Popular Operating Systems
- Darwin XNU - The XNU kernel source code for use in MacOS and iOS
- FreeBSD, Github - Unix-like operating system based on the BSD
- FreeDOS - DOS compatible OS
- Haiku - BeOS inspired OS
- Linux - Linux kernel
- Minix, Github - Unix-like operating system based on a microkernel architecture
- MS-DOS - The original sources of MS-DOS 1.25 and 2.0
- NetBSD, Github - Unix-like operating system based on the BSD
- OpenBSD, Github - Unix-like operating system based on the BSD
- Plan 9 from Bell Labs - An OS from the creators of Unix, extending the Unix philosophy of "everything is a file" with a network-centric file system, namespaces and distributed computing.
- ReactOS, Github - A free Windows-compatible Operating System
- SystemV - AT&T UNIX System V Source Code
Books and Guides
Online books
- How to Make a Computer Operating System - in C++
- Intermezzos - A follow along book to build IntermezzosOS in Rust
- Linux Kernel in a Nutshell - Covers the entire range of kernel tasks, available as chapters or one PDF
- The little book about OS development by Erik Helin and Adam Renberg
- Think OS - A Brief Introduction to Operating Systems by Allen B. Downey
- Operating System Development Series - OS from the ground up in C
- Operating Systems: Three Easy Pieces - Easy to read book covering virtualization, concurrency and persistence
- xv6: a simple, Unix-like teaching operating system - Book for Xv6
- Operating Systems: From 0 to 1 - Bootstrap yourself to write an OS from scratch by Do Hoang Tu
- Osdev Notes - How to write an operating system from scratch by Ivan G. and Dean T.
Tutorials
- Baking Pi – Operating Systems Development by University of Cambridge
- Build a minimal multi-tasking OS kernel for ARM from scratch by Jim Huang
- Bran's Kernel Development by Brandon Friesen
- How to write a Linux kernel patch and submit it by Greg Kroah-Hartman
- Presentation on how the Linux kernel is developed by Greg Kroah-Hartman
- os-tutorial - How to create an OS from scratch by Carlos Fenollosa
- Roll your own toy UNIX-clone OS by James Molloy
- Writing an OS in Rust by Philipp Oppermann
- Making a RISC-V Operating System using Rust by Stephen Marz
- Operating systems development for Dummies by Leo Whitehead
- Kernels 101 – Let’s write a Kernel by Arjun Sreedharan
- Kernels 201 - Let’s write a Kernel with keyboard and screen support by Arjun Sreedharan
- Writing a Tiny x86 Bootloader by Joe Bergeron
- Writing a Bootloader by Alex Parker
- Learning operating system development using Linux kernel and Raspberry Pi
- mya a fun project to create OS from scratch by Erfan
Websites
- Genodians - Stories around the Genode Operating System
- os-dev - Wiki with everything you need to know
- Lowlevel - A wiki about creating an OS from scratch. In German
- POSIX - Standards for maintaining compatibility between operating systems
- Rust OSDev - Newsletter about OS development in Rust
- OSRTOS - List of open source real-time operating systems
- Multicians - The Multicians web site presents the story of the Multics operating system for people interested in the system's history
Papers
- The benefits and costs of writing a POSIX kernel in a high-level language by Cody Cutler, M. Frans Kaashoek, and Robert T. Morris, MIT CSAIL
- Running Scheme On Bare Metal by Samuel Yvon, Marc Feeley, Scheme 2020
- Unikraft: Fast, Specialized Unikernels the Easy Way by Kuenzer et al., EuroSys 2021
Video Tutorials
- Write your own Operating System
- Nanobyte
- Kernel dev from scratch by Dragon Zap Education
- OSDev Lecture Series by AptRock327
Linux specific
-
Linux kernel system call table for all archs by Marcin Juszkiewicz
-
OldLinux - A Heavily Commented Linux kernel source and more
-
fibdrv Linux kernel module that calculates Fibonacci numbers
-
syzbot bugs
-
syzkaller kernel fuzzer
-
Der Linux Kernel Entwicklungs-Workflow (2023, German) by Rouven Czerwinski
Tools
- b4, docu, a tool to help with email-based patch workflows
- clang-extract a tool to extract code content from source files using the clang and LLVM infrastructure.
- hackermail a mails management tool for hackers who collaborate using mailing lists
- kworkflow - reduce the overhead with infrastructure setup for Linux development
- virtme-ng - quickly build and run kernels inside a virtualized snapshot of your live system
Blogposts
-
Become a Linux kernel contributor - Part 1 by Javier Carrasco
-
Become a Linux kernel contributor - Part 2 by Javier Carrasco
-
Become a Linux kernel contributor - Part 3 by Javier Carrasco
-
Fixing bugs in the Linux kernel with Syzbot, Qemu and GDB by Javier Carrasco
-
b4 for Linux kernel contributors by Javier Carrasco
-
Use b4 for kernel contributions by Marcus Folkesson
-
Using lei, b4, and mutt to do kernel development by Josef Bacik
-
netdev in 2023 by Jakub Kicinski
-
Five commands to crash the kernel by Marcos Paulo de Souza
-
You can be a kernel hacker! by Julia Evans
-
4 paths to being a kernel hacker by Julia Evans
-
Guessing Linux kernel registers by Julia Evans
-
How I got robbed of my first kernel contribution by Ariel Miculas
-
Apply Linux Kernel Patches from LKML by Adam Young (before he got aware of b4)
-
My patch review workflow by Josef Bacik
-
Linux Kernel Develop Workflow by Tommaso Merciai
-
Apply a Linux kernel patch to the stable tree (2009) by Greg Kroah-Hartman
-
Patch Workflow With Mutt 2019 by Greg Kroah-Hartman
-
Debug kernel with KGDB by Marcus Folkesson
-
How I Learned to Love the Email Patch Developer Workflow by Emily Shaffer
Debugging
- Bug hunting
- Bisecting a bug
- Dynamic Debug
- Who Made That Change and When: Using Cregit for Debugging by Shuah Khan
- Make stack dump output useful again
- Debugging Analysis of Kernel panics and Kernel oopses using System Map by Sanjeev Sharma
- Understanding a Kernel Oops! by Surya Prabhakar
-
Learn how to use git+email: git-send-email
-
Learn how to review patches over email: git-am
-
Use plaintext emails
-
The advantages of an email-driven git workflow by Drew DeVault
-
Code review at the speed of email by Drew DeVault