# Awesome Operating System Stuff

This list contains awesome OS related stuff.
It contains open source operating sytems and hobby operating systems as one can study their code and learn from them.

## Open Source Operating Systems

* [9front](http://9front.org) - A fork of Plan 9, designed for distributed, networked computing.
* [ackOS](https://github.com/ackOS-project/ackOS) - A simple 64-bit operating system.
* [AROS](https://aros.sourceforge.io/) - 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
* [BoneOS](https://github.com/Bone-Project/BoneOS)- OS for everyone built by everyone
* [Bottlerocket OS](https://github.com/bottlerocket-os/bottlerocket)- Linux-based OS meant for hosting containers.
* [Charlotte](https://github.com/charlotte-os/charlotte-core) - CharlotteOS kernel in Rust
* [ChibiOS](http://www.chibios.org/) - a complete development environment for embedded applications including RTOS, an HAL, peripheral drivers, support files and tools
* [Clive](https://lsub.org/ls/clive.html) - A unikernel OS inspired by Plan9 and Nix developed at *Universidad Rey Juan Carlos of Madrid*
* [dahliaOS](https://dahliaos.io)- dahliaOS is a modern, secure, lightweight and responsive operating system, combining the best of GNU/Linux and Fuchsia OS.
* [eggos](https://github.com/icexin/eggos) - A Go unikernel running on x86 bare metal
* [Embox](https://embox.github.io/) - Configurable operating system kernel designed for resource constrained and embedded systems.
* [ExectOS](https://git.codingworkshop.eu.org/xt-sys/exectos), [GitHub](https://github.com/xt-sys/exectos) - 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.
* [Fiwix](https://www.fiwix.org/), [GitHub](https://github.com/mikaku/Fiwix) - A UNIX-like kernel for the i386 architecture.
* [FreeRTOS](https://www.freertos.org/), [GitHub](https://github.com/FreeRTOS/FreeRTOS) - IoT operating system for microcontrollers, by Amazon.
* [Genode](https://genode.org/) - A FOSS operating system framework consisting of a microkernel abstraction layer and a collection of userspace components
* [gopher-os](https://github.com/gopher-os/gopher-os) - A proof of concept OS kernel written in Go
* [GreenteaOS](https://greenteaos.github.io/), [Github](https://github.com/GreenteaOS/Greentea) - A free OS designed to be compatible with Windows executables 
* [HarveyOS](https://harvey-os.org/) - A distributed operating system
* [HelenOS](https://github.com/HelenOS/helenos) - multikernel multiserver OS
* [RavynOS](https://github.com/ravynsoft/ravynos) - A BSD-based OS project that aims to provide an experience like and some compatibility with macOS (formerly known as airyxOS)
* [Hubris](https://hubris.oxide.computer/) - Hubris is an operating system for microcontrollers developed by Oxide Computer Company in Rust
* [Illumos](https://illumos.org/) - illumos is a Unix operating system which provides next-generation features for downstream distributions (like OmniOS, OpenIndiana, and Tribblix)
* [Interim](https://github.com/mntmn/interim) - Minimalist OS with concepts from Lisp machines and Plan9
* [Jehanne](http://jehanne.io/), [GitHub](https://github.com/JehanneOS/jehanne/) - OS inspired by Plan9, 9front and Harvey OS
* [KnightOS](https://github.com/KnightOS/KnightOS) - for z80 calculators
* [L4re](https://github.com/kernkonzept/l4re-core) - Operating system and hypervisor for security/safety-critical and virtualization-enabled applications.
* [managarm](https://github.com/managarm/managarm) - Pragmatic microkernel-based OS with fully asynchronous I/O
* [MentOS](https://github.com/mentos-team/MentOS) - An educational 32-bit linux-like Operating System.
* [Mimiker](https://mimiker.ii.uni.wroc.pl/), [GitHub](https://github.com/cahirwpz/mimiker) - Simple unix-like operating system for education and research purposes. MIPS microkernel.
* [Minoca OS](https://github.com/minoca/os) - General purpose OS, written in C
* [MollenOS](https://github.com/Meulengracht/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
* [Nanos](https://github.com/nanovms/nanos) - Unikernel that is linux-compatible, written in C
* [NESOS](https://notin.tokyo/nesos/) - An OS for the Nintendo Entertainment System!
* [NodeOS](https://github.com/NodeOS/NodeOS) - OS using NodeJS and Linux
* [octox](https://github.com/o8vm/octox) - Unix-like OS in Rust inspired by xv6-riscv
* [opuntiaOS](https://github.com/opuntiaOS-Project/opuntiaOS) -  an operating system targeting x86, ARMv7, Aarch64.
* [orange_slice](https://github.com/gamozolabs/orange_slice) - A research kernel and hypervisor attempting to get fully deterministic emulation with minimum performance cost. In Rust
* [Pidi OS](https://github.com/GandelXIV/pidi-os) - Independent and minimalistic OS
* [Qubes OS](https://qubes-os.org) - Security-focused OS built on the Xen hypervisor, designed to isolate different compartments based on levels of trust.
* [ravynOS](https://github.com/ravynsoft/ravynos) - BSD-based OS project that aims to provide an experience like and some compatibility with macOS (formerly known as airyxOS)
* [Redox](https://github.com/redox-os/redox) - written in Rust
* [RustyHermit](https://github.com/hermitcore/rusty-hermit) - A Rust-based, lightweight unikernel
* [Sanos](http://www.jbox.dk/sanos/), [GitHub](https://github.com/ringgaard/sanos) - Sanos is a minimalistic 32-bit x86 operating system kernel for network server appliances running on standard PC hardware.
* [skiftOS](https://skiftos.org/), [GitHub](https://github.com/skiftOS/skift) - A simple, handmade, operating system with a graphical user interface.
* [Sculpt OS](https://genode.org/download/sculpt) - Genode based OS
* [soso](https://github.com/ozkl/soso) - Simple unix-like operating system written in Nasm assembly and mostly in C
* [SynestiaOS](https://github.com/SynestiaOS/SynestiaOS) - 32/64 bit operating system written in C for arm platform
* [Thor](https://github.com/wichtounet/thor-os) - 64bit operating system mostly written in C++
* [Theseus](https://github.com/theseus-os/Theseus) - A modern experimental OS written from scratch in Rust to explore novel OS structure and state management techniques.
* [tilck](https://github.com/vvaltchev/tilck) - A Tiny Linux-Compatible Kernel.
* [tock](https://www.tockos.org/), [GitHub](https://github.com/tock/tock) - A secure embedded operating system for microcontrollers
* [Unikraft](https://github.com/unikraft/unikraft) - A modular unikernel for specialization, high efficiency, performance, and security; Linux/POSIX-compatible; mostly in C
* [Mimosa](https://icfp20.sigplan.org/details/scheme-2020-papers/3/Running-Scheme-On-Bare-Metal-Experience-Report-), [GitHub](https://github.com/udem-dlteam/mimosa) - Research Operating System that runs Scheme on bare-metal
* [hhuOS](https://github.com/hhuOS/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.

### Hobby
* [aurora_os](https://github.com/Athryx/aurora_os) - Written in Rust.
* [quickOS](evrestrgb.github.io) - An OS made by an independant developer, still in developement, like MS-DOS, but in qbasic. It's MADE with qb64.
* [AlmeidaOS](https://github.com/PauloMigAlmeida/AlmeidaOS) - x86-64 OS with its own bootloader, scheduler and limited libc all written from scratch
* [AquilaOS](https://aquilaos.com) - Operating System that is designed to be POSIX compliant and mostly ISA transparent
* [Animal](https://github.com/frednora/animal) - 32 bit multithreaded operating system (formerly Gramado)
* [Basekernel](https://github.com/dthain/basekernel) - A simple OS kernel for research, teaching, and fun
* [Brutal](https://github.com/brutal-org/brutal) - An operating system inspired by brutalist design that combines the ideals of UNIX from the 1970s with modern technology and engineering
* [Cyjon](https://github.com/CorruptedByCPU/Cyjon/) - pure x64 assembly language operating system (related to [Fern-Night](https://github.com/CorruptedByCPU/Fern-Night/) project).
* [DragonOS](https://github.com/fslongjin/DragonOS) - An x86-64 OS build from scratch.
* [Dreamos64](https://github.com/dreamos82/Dreamos64) - An x86-64 hobby os built from scratch
* [duckOS](https://github.com/byteduck/duckOS) - A hobby UNIX-like OS with a graphical window manager for x86 computers.
* [emerald](https://github.com/Abb1x/emerald) - An operating system kernel written for fun in C
* [Fern-Night](https://github.com/CorruptedByCPU/Fern-Night/) - C language operating system (related to [Cyjon](https://github.com/CorruptedByCPU/Cyjon/) project).
* [Fomos](https://github.com/Ruddle/Fomos) - Experimental OS, built with Rust.
* [Gloire](https://github.com/streaksu/Gloire) - An OS built with the [Ironclad](https://www.nongnu.org/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.
* [HalideOS](https://gdsc-kiit.github.io/project-halide/) - experimental operating system written entirely from scratch.
* [House](https://programatica.cs.pdx.edu//House/) - Haskell User's Operating System and Environment.
* [hydrogen](https://github.com/mszoek/hydrogen) - toy OS. 64-bit, preemptive multitasking kernel supporting EFI, PCIe, SATA, framebuffer graphics mode, HFS+.
* [JSD-OS](https://github.com/pgrAm/JSD-OS) - A small operating system for 32 bit x86.
* [KolibriOS](http://www.kolibrios.org) - MenuetOS fork
* [LemonOS](https://lemonos.org/), [GitHub](https://github.com/fido2020/Lemon-OS) - UNIX-like 64-bit operating system written in C++.
* [lyre](https://github.com/lyre-os/lyre) - x86 kernel and distribution powered by mlibc, GNU userland tools, and other common *nix software.
* [Mako](https://github.com/AjayMT/mako) - Hobby OS for x86 from scratch, written in C
* [MaslOS](https://github.com/marceldobehere/MaslOS) - A 64 bit GUI multitasking Hobby OS written mostly from scratch in C++ and a bit of C/ASM.
* [MenuetOS](http://www.menuetos.net/) - Hobby OS supporting 32 and 64 bit, written in Assembly language
* [MeetixOS](https://github.com/MarcoCicognani/MeetixOS) - A hobby OS written in modern C++20 which aims to be Unix-like.
* [mOS](https://github.com/MQuy/mos) - A hobby operating system developed from scratch
* [moros](https://github.com/vinc/moros) - MOROS is a hobby operating system written in Rust for the x86 architecture.
* [MyXomycota](https://sourceforge.net/projects/myxomycota/) - Monolithic kernel in C
* [nopeos](https://github.com/d99kris/nopeos) - Simple OS kernel with BASIC interpreter for x86
* [Northport](https://github.com/DeanoBurrito/northport) - Monolithic kernel and support libraries for riscv64 and x86_64.
* [oneOS](https://github.com/nimelehin/oneOS) - x86-32 and ARMv7 kernel with pre-emptive multi-threading, window manager and editor
* [pranaOS](https://github.com/pranaOS/pranaOS) - A unix operating system written from scratch in c / c++
* [PathOS](http://path-os.duckdns.org/) - Hobby OS based on [MikeOS](https://github.com/mig-hub/mikeOS), written in Assembly Language
* [PonyOS](https://ponyos.org/), [GitHub](https://github.com/klange/ponyos) - ToaruOS-based, My Little Pony themed OS
* [PouplyOS](https://github.com/mtribiere/PoulpyOS) - Simple OS for fun and learning, named after the ESISAR mascot Poulpy
* [PureDarwin](https://github.com/PureDarwin/PureDarwin/wiki) - PureDarwin is a community project to extend Darwin into a complete, usable operating system
* [r3](https://github.com/Narasimha1997/r3) - A hobby x86_64 Operating System kernel written in Rust -- with minimal functionalities
* [SayoriOS](https://github.com/pimnik98/SayoriOS) - Hobby OS for x86 computers, currently under active development, written in C
* [Serenity](https://github.com/SerenityOS/serenity) - Graphical Unix-like operating system for x86 computers
* [SimpleOS](https://github.com/xing1357/SimpleOS) - Simple Operating System coded in C and Assembly
* [Snowdrop OS](http://sebastianmihai.com/snowdrop/) - a homebrew operating system from scratch, in assembly language 
* [Sortix](https://sortix.org/) - Hobby OS in C and C++ by *Jonas 'Sortie' Termansen*
* [Syllable](http://syllable.metaproject.frl/) - 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.
* [TempleOS](https://github.com/minexew/TempleOS) - Religious OS :-)
* [ToaruOS](https://github.com/klange/toaruos) - Hobby operating system from scratch
* [Týndur](http://www.tyndur.org/) - Hobby operating system build by the Lowlevel community. Written in C and Pascal
* [Ultron OS](https://github.com/aswinmohanme/ultronOS) - x86 Operating System written in C++, High School Project
* [unox-os](https://github.com/bistcuite/unox-os) - Unox is an educational unix-like operating system
* [Vinix](https://github.com/vlang/vinix) - Vinix is an effort to write a modern, fast, and useful operating system in the V programming language
* [Visopsys](https://visopsys.org/) - Open Source Hobby OS developed since 1997
* [willOS](https://github.com/willdurand/willOS) - A minimal 64 bits kernel (Operating System that cannot "operate" a lot of things)
* [Windows 95 in Electron](https://github.com/felixrieseberg/windows95) - Hobby Windows 95 implementation in Electron
* [Xv6](https://pdos.csail.mit.edu/6.828/2019/xv6.html) - A teaching operating system developed in the summer of 2006 for MIT's operating systems course
* [BareMetal](http://www.returninfinity.com/), [GitHub](https://github.com/ReturnInfinity/BareMetal) - 64 bit operating system written in Assembly for x86-64
* [ZealOS](https://github.com/Zeal-Operating-System/ZealOS) - The Zeal Operating System is a modernized, professional fork of the 64-bit Temple Operating System, TempleOS.

### Popular Operating Systems
* [Darwin XNU](https://github.com/apple-oss-distributions/xnu) - The XNU kernel source code for use in MacOS and iOS
* [FreeBSD](https://freebsd.org/), [Github](https://github.com/freebsd/freebsd) - Unix-like operating system based on the BSD
* [FreeDOS](http://freedos.org/) - DOS compatible OS
* [Haiku](https://github.com/haiku/haiku) - BeOS inspired OS
* [Linux](https://github.com/torvalds/linux) - Linux kernel
* [Minix](https://www.minix3.org/), [Github](https://github.com/Stichting-MINIX-Research-Foundation/minix) - Unix-like operating system based on a microkernel architecture
* [MS-DOS](https://github.com/microsoft/MS-DOS) - The original sources of MS-DOS 1.25 and 2.0
* [NetBSD](https://www.netbsd.org/), [Github](https://github.com/netbsd/src) - Unix-like operating system based on the BSD
* [OpenBSD](https://www.openbsd.org/), [Github](https://github.com/openbsd/src) - Unix-like operating system based on the BSD
* [Plan 9 from Bell Labs](http://9p.io/plan9/) - 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](https://reactos.org/), [Github](https://github.com/reactos/reactos) - A free Windows-compatible Operating System 
* [SystemV](https://archive.org/details/ATTUNIXSystemVRelease4Version2) - AT&T UNIX System V Source Code

## Books and Guides

### Online books

* [How to Make a Computer Operating System](https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System) - in C++
* [Intermezzos](https://intermezzos.github.io/book/) - A follow along book to build IntermezzosOS in Rust
* [Linux Kernel in a Nutshell](http://www.kroah.com/lkn/) - Covers the entire range of kernel tasks, available as chapters or one PDF
* [The little book about OS development](http://littleosbook.github.io/) by *Erik Helin* and *Adam Renberg*
* [Think OS](http://greenteapress.com/thinkos/) - A Brief Introduction to Operating Systems by *Allen B. Downey*
* [Operating System Development Series](http://www.brokenthorn.com/Resources/OSDevIndex.html) - OS from the ground up in C
* [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) - Easy to read book covering virtualization, concurrency and persistence
* [xv6: a simple, Unix-like teaching operating system](https://pdos.csail.mit.edu/6.828/2019/xv6/book-riscv-rev0.pdf) - Book for Xv6
* [Operating Systems: From 0 to 1](https://tuhdo.github.io/os01/) - Bootstrap yourself to write an OS from scratch by *Do Hoang Tu*
* [Osdev Notes](https://github.com/dreamos82/Osdev-Notes) - How to write an operating system from scratch by *Ivan G.* and *Dean T.* 

### Tutorials

* [Baking Pi – Operating Systems Development](https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html) by University of Cambridge
* [Build a minimal multi-tasking OS kernel for ARM from scratch](https://github.com/jserv/mini-arm-os) by Jim Huang
* [Bran's Kernel Development](http://www.osdever.net/bkerndev/Docs/title.htm) by Brandon Friesen
* [How to write a Linux kernel patch and submit it](https://github.com/gregkh/kernel-tutorial) by Greg Kroah-Hartman
* [Presentation on how the Linux kernel is developed](https://github.com/gregkh/kernel-development) by Greg Kroah-Hartman
* [os-tutorial - How to create an OS from scratch](https://github.com/cfenollosa/os-tutorial) by Carlos Fenollosa
* [Roll your own toy UNIX-clone OS](http://jamesmolloy.co.uk/tutorial_html/)  by James Molloy
* [Writing an OS in Rust](https://os.phil-opp.com/) by Philipp Oppermann
* [Making a RISC-V Operating System using Rust](http://osblog.stephenmarz.com/) by Stephen Marz
* [Operating systems development for Dummies](https://medium.com/@lduck11007/operating-systems-development-for-dummies-3d4d786e8ac) by Leo Whitehead
* [Kernels 101 – Let’s write a Kernel](https://arjunsreedharan.org/post/82710718100/kernels-101-lets-write-a-kernel) by Arjun Sreedharan
* [Kernels 201 - Let’s write a Kernel with keyboard and screen support](https://arjunsreedharan.org/post/99370248137/kernels-201-lets-write-a-kernel-with-keyboard) by Arjun Sreedharan
* [Writing a Tiny x86 Bootloader](https://www.joe-bergeron.com/posts/Writing%20a%20Tiny%20x86%20Bootloader/) by Joe Bergeron
* [Writing a Bootloader](http://3zanders.co.uk/2017/10/13/writing-a-bootloader/) by Alex Parker
* [Learning operating system development using Linux kernel and Raspberry Pi](https://github.com/s-matyukevich/raspberry-pi-os)
* [mya](https://github.com/flydeoo/mya) a fun project to create OS from scratch by Erfan

### Website
* [Genodians](https://genodians.org/) - Stories around the Genode Operating System
* [os-dev](http://wiki.osdev.org/Main_Page) - Wiki with everything you need to know
* [Lowlevel](http://www.lowlevel.eu/wiki/Hauptseite) - A wiki about creating an OS from scratch. In German
* [POSIX](https://pubs.opengroup.org/onlinepubs/9699919799/) - Standards for maintaining compatibility between operating systems
* [Rust OSDev](https://rust-osdev.com/) - Newsletter about OS development in Rust
* [OSRTOS](https://www.osrtos.com/) - List of open source real-time operating systems
* [Multicians](https://www.multicians.org/) - 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](https://www.usenix.org/conference/osdi18/presentation/cutler) by Cody Cutler, M. Frans Kaashoek, and Robert T. Morris, MIT CSAIL
* [Running Scheme On Bare Metal](https://icfp20.sigplan.org/details/scheme-2020-papers/3/Running-Scheme-On-Bare-Metal-Experience-Report-) by Samuel Yvon, Marc Feeley, Scheme 2020
* [Unikraft: Fast, Specialized Unikernels the Easy Way](https://dl.acm.org/doi/pdf/10.1145/3447786.3456248) by Kuenzer et al., EuroSys 2021

### Video Tutorials

* [Write your own Operating System](https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M)
* [Nanobyte](https://www.youtube.com/channel/UCSPIuWADJIMIf9Erf--XAsA)
* [Kernel dev from scratch by Dragon Zap Education](https://www.youtube.com/watch?v=HNIg3TXfdX8&list=PLrGN1Qi7t67V-9uXzj4VSQCffntfvn42v)
* [OSDev Lecture Series by AptRock327](https://youtube.com/playlist?list=PL5p37LtXzjqOoEl369i0nlTSaU1O3L-BN)

### Linux Kernel specific Resources

* [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/)
* [The Linux Kernel documentation](https://www.kernel.org/doc/html/latest/)
* [Working with the kernel development community](https://www.kernel.org/doc/html/latest/process/)
* [Linux Kernel Teaching](https://linux-kernel-labs.github.io/refs/heads/master)
* [linux-insides](https://0xax.gitbooks.io/linux-insides/content/)
* [Linux Kernel Workbook](https://lkw.readthedocs.io/en/latest/index.html)
* [Linux Kernel Teaching](https://linux-kernel-labs.github.io/refs/heads/master/)

* [bootlins interactive Linux kernel map](https://makelinux.github.io/kernel/map/)
* [OldLinux](http://www.oldlinux.org/) - A Heavily Commented Linux kernel source and more

* [sam4ks Linux Kernel Resources](https://github.com/sam4k/linux-kernel-resources)
* [xairys Linux Kernel Exploitation](https://github.com/xairy/linux-kernel-exploitation)

* [Linux kernel system call table for all archs](https://marcin.juszkiewicz.com.pl/download/tables/syscalls.html) by Marcin Juszkiewicz

* [You can be a kernel hacker!](https://jvns.ca/blog/2014/09/18/you-can-be-a-kernel-hacker/)
* [4 paths to being a kernel hacker](https://jvns.ca/blog/2014/01/04/4-paths-to-being-a-kernel-hacker/)
* [Guessing Linux kernel registers](https://jvns.ca/blog/2016/01/18/guessing-linux-kernel-registers/)

* [A Beginner’s Guide to Linux Kernel Development (LFD103)](https://training.linuxfoundation.org/training/a-beginners-guide-to-linux-kernel-development-lfd103)

* [fibdrv Linux kernel module that calculates Fibonacci numbers](https://github.com/sysprog21/fibdrv)

* [kernel-security-learning](https://github.com/bsauce/kernel-security-learning)
