666 lines
34 KiB
HTML
666 lines
34 KiB
HTML
<h1 id="awesome-operating-system-stuff">Awesome Operating System
|
||
Stuff</h1>
|
||
<p>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.</p>
|
||
<h2 id="open-source-operating-systems">Open Source Operating
|
||
Systems</h2>
|
||
<ul>
|
||
<li><a href="http://9front.org">9front</a> - A fork of Plan 9, designed
|
||
for distributed, networked computing.</li>
|
||
<li><a href="https://aros.sourceforge.io/">AROS</a> - 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</li>
|
||
<li><a href="https://github.com/PauloMigAlmeida/AlmeidaOS">AlmeidaOS</a>
|
||
- x86-64 OS with its own bootloader, scheduler and limited libc all
|
||
written from scratch</li>
|
||
<li><a href="https://github.com/frednora/animal">Animal</a> - 32 bit
|
||
multithreaded operating system (formerly Gramado)</li>
|
||
<li><a href="https://github.com/aurixos/os">AurixOS</a> - A small
|
||
multiplatform Operating System designed for developers and creators</li>
|
||
<li><a href="https://aquilaos.com">AquilaOS</a> - Operating System that
|
||
is designed to be POSIX compliant and mostly ISA transparent</li>
|
||
<li><a href="https://arikoto.nerdnextdoor.net/">Arikoto</a>, <a
|
||
href="https://github.com/IAmTheNerdNextDoor/arikoto">GitHub</a> - A
|
||
Limine protocol, x86_64, C based personal Operating System development
|
||
project that is inspired by and is aiming to have a similar nature to
|
||
ToaruOS</li>
|
||
<li><a href="http://www.returninfinity.com/">BareMetal</a>, <a
|
||
href="https://github.com/ReturnInfinity/BareMetal">GitHub</a> - 64 bit
|
||
operating system written in Assembly for x86-64</li>
|
||
<li><a href="https://github.com/dthain/basekernel">Basekernel</a> - A
|
||
simple OS kernel for research, teaching, and fun</li>
|
||
<li><a href="https://github.com/Bone-Project/BoneOS">BoneOS</a>- OS for
|
||
everyone built by everyone</li>
|
||
<li><a
|
||
href="https://github.com/bottlerocket-os/bottlerocket">Bottlerocket
|
||
OS</a>- Linux-based OS meant for hosting containers.</li>
|
||
<li><a href="https://github.com/brutal-org/brutal">Brutal</a> - An
|
||
operating system inspired by brutalist design that combines the ideals
|
||
of UNIX from the 1970s with modern technology and engineering</li>
|
||
<li><a href="https://github.com/malwarepad/cavOS">cavOS</a> - Amd64
|
||
operating system in C. Trying to make a full OS, with a simple and
|
||
readable codebase</li>
|
||
<li><a
|
||
href="https://github.com/charlotte-os/charlotte-core">Charlotte</a> -
|
||
CharlotteOS kernel in Rust</li>
|
||
<li><a href="http://www.chibios.org/">ChibiOS</a> - a complete
|
||
development environment for embedded applications including RTOS, an
|
||
HAL, peripheral drivers, support files and tools</li>
|
||
<li><a href="https://lsub.org/ls/clive.html">Clive</a> - A unikernel OS
|
||
inspired by Plan9 and Nix developed at <em>Universidad Rey Juan Carlos
|
||
of Madrid</em></li>
|
||
<li><a href="https://github.com/CorruptedByCPU/Cyjon/">Cyjon</a> - pure
|
||
x64 assembly language operating system (related to <a
|
||
href="https://github.com/CorruptedByCPU/Fern-Night/">Fern-Night</a>
|
||
project).</li>
|
||
<li><a href="https://github.com/fslongjin/DragonOS">DragonOS</a> - An
|
||
x86-64 OS build from scratch.</li>
|
||
<li><a href="https://github.com/dreamos82/Dreamos64">Dreamos64</a> - An
|
||
x86-64 hobby os built from scratch</li>
|
||
<li><a href="https://embox.github.io/">Embox</a> - Configurable
|
||
operating system kernel designed for resource constrained and embedded
|
||
systems.</li>
|
||
<li><a
|
||
href="https://git.codingworkshop.eu.org/xt-sys/exectos">ExectOS</a>, <a
|
||
href="https://github.com/xt-sys/exectos">GitHub</a> - 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.</li>
|
||
<li><a
|
||
href="https://github.com/CorruptedByCPU/Fern-Night/">Fern-Night</a> - C
|
||
language operating system (related to <a
|
||
href="https://github.com/CorruptedByCPU/Cyjon/">Cyjon</a> project).</li>
|
||
<li><a href="https://www.fiwix.org/">Fiwix</a>, <a
|
||
href="https://github.com/mikaku/Fiwix">GitHub</a> - A UNIX-like kernel
|
||
for the i386 architecture.</li>
|
||
<li><a href="https://github.com/Ruddle/Fomos">Fomos</a> - Experimental
|
||
OS, built with Rust.</li>
|
||
<li><a href="https://www.freertos.org/">FreeRTOS</a>, <a
|
||
href="https://github.com/FreeRTOS/FreeRTOS">GitHub</a> - IoT operating
|
||
system for microcontrollers, by Amazon.</li>
|
||
<li><a href="https://genode.org/">Genode</a> - A FOSS operating system
|
||
framework consisting of a microkernel abstraction layer and a collection
|
||
of userspace components</li>
|
||
<li><a href="https://github.com/streaksu/Gloire">Gloire</a> - An OS
|
||
built with the <a href="https://www.nongnu.org/ironclad/">Ironclad</a>
|
||
kernel (a partially formally verified kernel with a small footprint for
|
||
general-purpose and embedded OSes, written in SPARK and Ada) and GNU
|
||
tools.</li>
|
||
<li><a href="https://greenteaos.github.io/">GreenteaOS</a>, <a
|
||
href="https://github.com/GreenteaOS/Greentea">Github</a> - A free OS
|
||
designed to be compatible with Windows executables</li>
|
||
<li><a href="https://gdsc-kiit.github.io/project-halide/">HalideOS</a> -
|
||
experimental operating system written entirely from scratch.</li>
|
||
<li><a href="https://harvey-os.org/">HarveyOS</a> - A distributed
|
||
operating system</li>
|
||
<li><a href="https://github.com/HelenOS/helenos">HelenOS</a> -
|
||
multikernel multiserver OS</li>
|
||
<li><a href="https://programatica.cs.pdx.edu//House/">House</a> -
|
||
Haskell User’s Operating System and Environment.</li>
|
||
<li><a href="https://hubris.oxide.computer/">Hubris</a> - Hubris is an
|
||
operating system for microcontrollers developed by Oxide Computer
|
||
Company in Rust</li>
|
||
<li><a href="https://illumos.org/">Illumos</a> - illumos is a Unix
|
||
operating system which provides next-generation features for downstream
|
||
distributions (like OmniOS, OpenIndiana, and Tribblix)</li>
|
||
<li><a href="https://github.com/mntmn/interim">Interim</a> - Minimalist
|
||
OS with concepts from Lisp machines and Plan9</li>
|
||
<li><a href="https://github.com/pgrAm/JSD-OS">JSD-OS</a> - A small
|
||
operating system for 32 bit x86.</li>
|
||
<li><a href="http://jehanne.io/">Jehanne</a>, <a
|
||
href="https://github.com/JehanneOS/jehanne/">GitHub</a> - OS inspired by
|
||
Plan9, 9front and Harvey OS</li>
|
||
<li><a
|
||
href="https://github.com/FrancisBFTC/KiddieOS_Development">KiddieOS</a>
|
||
- UNIX-like 64-bit operating system written in Assembly, C++.</li>
|
||
<li><a href="https://github.com/KnightOS/KnightOS">KnightOS</a> - for
|
||
z80 calculators</li>
|
||
<li><a href="http://www.kolibrios.org">KolibriOS</a> - MenuetOS
|
||
fork</li>
|
||
<li><a href="https://github.com/kernkonzept/l4re-core">L4re</a> -
|
||
Operating system and hypervisor for security/safety-critical and
|
||
virtualization-enabled applications.</li>
|
||
<li><a href="https://lemonos.org/">LemonOS</a>, <a
|
||
href="https://github.com/fido2020/Lemon-OS">GitHub</a> - UNIX-like
|
||
64-bit operating system written in C++.</li>
|
||
<li><a href="https://github.com/maestro-os/maestro">Maestro</a>, <a
|
||
href="https://blog.lenot.re">Blog</a> - Operating system written in
|
||
Rust, aiming to be a lightweight version of Linux</li>
|
||
<li><a href="https://github.com/AjayMT/mako">Mako</a> - Hobby OS for x86
|
||
from scratch, written in C</li>
|
||
<li><a href="https://github.com/marceldobehere/MaslOS">MaslOS</a> - A 64
|
||
bit GUI multitasking Hobby OS written mostly from scratch in C++ and a
|
||
bit of C/ASM.</li>
|
||
<li><a href="https://github.com/MarcoCicognani/MeetixOS">MeetixOS</a> -
|
||
A hobby OS written in modern C++20 which aims to be Unix-like.</li>
|
||
<li><a href="https://github.com/mentos-team/MentOS">MentOS</a> - An
|
||
educational 32-bit linux-like Operating System.</li>
|
||
<li><a href="http://www.menuetos.net/">MenuetOS</a> - Hobby OS
|
||
supporting 32 and 64 bit, written in Assembly language</li>
|
||
<li><a href="https://mimiker.ii.uni.wroc.pl/">Mimiker</a>, <a
|
||
href="https://github.com/cahirwpz/mimiker">GitHub</a> - Simple unix-like
|
||
operating system for education and research purposes. MIPS
|
||
microkernel.</li>
|
||
<li><a
|
||
href="https://icfp20.sigplan.org/details/scheme-2020-papers/3/Running-Scheme-On-Bare-Metal-Experience-Report-">Mimosa</a>,
|
||
<a href="https://github.com/udem-dlteam/mimosa">GitHub</a> - Research
|
||
Operating System that runs Scheme on bare-metal</li>
|
||
<li><a href="https://github.com/minoca/os">Minoca OS</a> - General
|
||
purpose OS, written in C</li>
|
||
<li><a href="https://github.com/Meulengracht/MollenOS">MollenOS</a> -
|
||
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</li>
|
||
<li><a
|
||
href="https://sourceforge.net/projects/myxomycota/">MyXomycota</a> -
|
||
Monolithic kernel in C</li>
|
||
<li><a href="https://notin.tokyo/nesos/">NESOS</a> - An OS for the
|
||
Nintendo Entertainment System!</li>
|
||
<li><a href="https://github.com/nanovms/nanos">Nanos</a> - Unikernel
|
||
that is linux-compatible, written in C</li>
|
||
<li><a href="https://github.com/NodeOS/NodeOS">NodeOS</a> - OS using
|
||
NodeJS and Linux</li>
|
||
<li><a href="https://github.com/DeanoBurrito/northport">Northport</a> -
|
||
Monolithic kernel and support libraries for riscv64 and x86_64.</li>
|
||
<li><a href="http://path-os.duckdns.org/">PathOS</a> - Hobby OS based on
|
||
<a href="https://github.com/mig-hub/mikeOS">MikeOS</a>, written in
|
||
Assembly Language</li>
|
||
<li><a href="https://github.com/GandelXIV/pidi-os">Pidi OS</a> -
|
||
Independent and minimalistic OS</li>
|
||
<li><a href="https://ponyos.org/">PonyOS</a>, <a
|
||
href="https://github.com/klange/ponyos">GitHub</a> - ToaruOS-based, My
|
||
Little Pony themed OS</li>
|
||
<li><a href="https://github.com/mtribiere/PoulpyOS">PouplyOS</a> -
|
||
Simple OS for fun and learning, named after the ESISAR mascot
|
||
Poulpy</li>
|
||
<li><a
|
||
href="https://github.com/PureDarwin/PureDarwin/wiki">PureDarwin</a> -
|
||
PureDarwin is a community project to extend Darwin into a complete,
|
||
usable operating system</li>
|
||
<li><a href="https://qubes-os.org">Qubes OS</a> - Security-focused OS
|
||
built on the Xen hypervisor, designed to isolate different compartments
|
||
based on levels of trust.</li>
|
||
<li><a href="https://github.com/ravynsoft/ravynos">RavynOS</a> - A
|
||
BSD-based OS project that aims to provide an experience like and some
|
||
compatibility with macOS (formerly known as airyxOS)</li>
|
||
<li><a href="https://github.com/redox-os/redox">Redox</a> - written in
|
||
Rust</li>
|
||
<li><a href="https://github.com/krustowski/rou2exOS">rou2exOS</a>, <a
|
||
href="https://blog.vxn.dev/rou2exos-rusted-edition">Blog</a> - A second
|
||
iteration of the DOS-like hobby OS written in Rust and x86_64
|
||
assembly</li>
|
||
<li><a href="https://github.com/hermitcore/rusty-hermit">RustyHermit</a>
|
||
- A Rust-based, lightweight unikernel</li>
|
||
<li><a href="http://www.jbox.dk/sanos/">Sanos</a>, <a
|
||
href="https://github.com/ringgaard/sanos">GitHub</a> - Sanos is a
|
||
minimalistic 32-bit x86 operating system kernel for network server
|
||
appliances running on standard PC hardware.</li>
|
||
<li><a href="https://github.com/pimnik98/SayoriOS">SayoriOS</a> - Hobby
|
||
OS for x86 computers, currently under active development, written in
|
||
C</li>
|
||
<li><a href="https://genode.org/download/sculpt">Sculpt OS</a> - Genode
|
||
based OS</li>
|
||
<li><a href="https://github.com/SerenityOS/serenity">Serenity</a> -
|
||
Graphical Unix-like operating system for x86 computers</li>
|
||
<li><a href="https://github.com/xing1357/SimpleOS">SimpleOS</a> - Simple
|
||
Operating System coded in C and Assembly</li>
|
||
<li><a href="http://sebastianmihai.com/snowdrop/">Snowdrop OS</a> - a
|
||
homebrew operating system from scratch, in assembly language</li>
|
||
<li><a href="https://sortix.org/">Sortix</a> - Hobby OS in C and C++ by
|
||
Jonas ‘Sortie’ Termansen</li>
|
||
<li><a href="http://syllable.metaproject.frl/">Syllable</a> - 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.</li>
|
||
<li><a href="https://github.com/SynestiaOS/SynestiaOS">SynestiaOS</a> -
|
||
32/64 bit operating system written in C for arm platform</li>
|
||
<li><a href="https://github.com/minexew/TempleOS">TempleOS</a> -
|
||
Religious OS :-)</li>
|
||
<li><a href="https://github.com/theseus-os/Theseus">Theseus</a> - A
|
||
modern experimental OS written from scratch in Rust to explore novel OS
|
||
structure and state management techniques.</li>
|
||
<li><a href="https://github.com/wichtounet/thor-os">Thor</a> - 64bit
|
||
operating system mostly written in C++</li>
|
||
<li><a href="https://github.com/klange/toaruos">ToaruOS</a> - Hobby
|
||
operating system from scratch</li>
|
||
<li><a href="http://www.tyndur.org/">Týndur</a> - Hobby operating system
|
||
build by the Lowlevel community. Written in C and Pascal</li>
|
||
<li><a href="https://github.com/aswinmohanme/ultronOS">Ultron OS</a> -
|
||
x86 Operating System written in C++, High School Project</li>
|
||
<li><a href="https://github.com/unikraft/unikraft">Unikraft</a> - A
|
||
modular unikernel for specialization, high efficiency, performance, and
|
||
security; Linux/POSIX-compatible; mostly in C</li>
|
||
<li><a href="https://github.com/vlang/vinix">Vinix</a> - Vinix is an
|
||
effort to write a modern, fast, and useful operating system in the V
|
||
programming language</li>
|
||
<li><a href="https://visopsys.org/">Visopsys</a> - Open Source Hobby OS
|
||
developed since 1997</li>
|
||
<li><a href="https://github.com/felixrieseberg/windows95">Windows 95 in
|
||
Electron</a> - Hobby Windows 95 implementation in Electron</li>
|
||
<li><a href="https://pdos.csail.mit.edu/6.828/2019/xv6.html">Xv6</a> - A
|
||
teaching operating system developed in the summer of 2006 for MIT’s
|
||
operating systems course</li>
|
||
<li><a href="https://github.com/Zeal-Operating-System/ZealOS">ZealOS</a>
|
||
- The Zeal Operating System is a modernized, professional fork of the
|
||
64-bit Temple Operating System, TempleOS.</li>
|
||
<li><a href="https://github.com/ackOS-project/ackOS">ackOS</a> - A
|
||
simple 64-bit operating system.</li>
|
||
<li><a href="https://github.com/Athryx/aurora_os">aurora_os</a> -
|
||
Written in Rust.</li>
|
||
<li><a href="https://dahliaos.io">dahliaOS</a>- dahliaOS is a modern,
|
||
secure, lightweight and responsive operating system, combining the best
|
||
of GNU/Linux and Fuchsia OS.</li>
|
||
<li><a href="https://github.com/byteduck/duckOS">duckOS</a> - A hobby
|
||
UNIX-like OS with a graphical window manager for x86 computers.</li>
|
||
<li><a href="https://github.com/icexin/eggos">eggos</a> - A Go unikernel
|
||
running on x86 bare metal</li>
|
||
<li><a href="https://github.com/Abb1x/emerald">emerald</a> - An
|
||
operating system kernel written for fun in C</li>
|
||
<li><a href="https://github.com/gopher-os/gopher-os">gopher-os</a> - A
|
||
proof of concept OS kernel written in Go</li>
|
||
<li><a href="https://github.com/hhuOS/hhuOS">hhuOS</a> - 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.</li>
|
||
<li><a href="https://github.com/mszoek/hydrogen">hydrogen</a> - toy OS.
|
||
64-bit, preemptive multitasking kernel supporting EFI, PCIe, SATA,
|
||
framebuffer graphics mode, HFS+.</li>
|
||
<li><a href="https://github.com/lyre-os/lyre">lyre</a> - x86 kernel and
|
||
distribution powered by mlibc, GNU userland tools, and other common *nix
|
||
software.</li>
|
||
<li><a href="https://github.com/managarm/managarm">managarm</a> -
|
||
Pragmatic microkernel-based OS with fully asynchronous I/O</li>
|
||
<li><a href="https://github.com/menix-os/menix">menix</a> - A minimal
|
||
and expandable Unix-like operating system.</li>
|
||
<li><a href="https://github.com/vinc/moros">moros</a> - MOROS is a hobby
|
||
operating system written in Rust for the x86 architecture.</li>
|
||
<li><a href="https://github.com/MQuy/mos">mOS</a> - A hobby operating
|
||
system developed from scratch</li>
|
||
<li><a href="https://github.com/d99kris/nopeos">nopeos</a> - Simple OS
|
||
kernel with BASIC interpreter for x86</li>
|
||
<li><a href="https://github.com/o8vm/octox">octox</a> - Unix-like OS in
|
||
Rust inspired by xv6-riscv</li>
|
||
<li><a href="https://github.com/nimelehin/oneOS">oneOS</a> - x86-32 and
|
||
ARMv7 kernel with pre-emptive multi-threading, window manager and
|
||
editor</li>
|
||
<li><a
|
||
href="https://github.com/opuntiaOS-Project/opuntiaOS">opuntiaOS</a> - an
|
||
operating system targeting x86, ARMv7, Aarch64.</li>
|
||
<li><a
|
||
href="https://github.com/gamozolabs/orange_slice">orange_slice</a> - A
|
||
research kernel and hypervisor attempting to get fully deterministic
|
||
emulation with minimum performance cost. In Rust</li>
|
||
<li><a href="https://github.com/Garnek0/Ovation">Ovation</a> - A simple,
|
||
hobby, 64-bit operating system that focuses on simplicity, portability
|
||
and maintainability. Written in C.</li>
|
||
<li><a href="https://github.com/pranaOS/pranaOS">pranaOS</a> - A unix
|
||
operating system written from scratch in c / c++</li>
|
||
<li><a href="evrestrgb.github.io">quickOS</a> - An OS made by an
|
||
independant developer, still in development, like MS-DOS, but in qbasic.
|
||
It’s MADE with qb64.</li>
|
||
<li><a href="https://github.com/Narasimha1997/r3">r3</a> - A hobby
|
||
x86_64 Operating System kernel written in Rust – with minimal
|
||
functionalities</li>
|
||
<li><a href="https://github.com/ravynsoft/ravynos">ravynOS</a> -
|
||
BSD-based OS project that aims to provide an experience like and some
|
||
compatibility with macOS (formerly known as airyxOS)</li>
|
||
<li><a href="https://skiftos.org/">skiftOS</a>, <a
|
||
href="https://github.com/skiftOS/skift">GitHub</a> - A simple, handmade,
|
||
operating system with a graphical user interface.</li>
|
||
<li><a href="https://github.com/ozkl/soso">soso</a> - Simple unix-like
|
||
operating system written in Nasm assembly and mostly in C</li>
|
||
<li><a href="https://github.com/vvaltchev/tilck">tilck</a> - A Tiny
|
||
Linux-Compatible Kernel.</li>
|
||
<li><a href="https://www.tockos.org/">tock</a>, <a
|
||
href="https://github.com/tock/tock">GitHub</a> - A secure embedded
|
||
operating system for microcontrollers</li>
|
||
<li><a href="https://github.com/bistcuite/unox-os">unox-os</a> - Unox is
|
||
an educational unix-like operating system</li>
|
||
<li><a href="https://github.com/willdurand/willOS">willOS</a> - A
|
||
minimal 64 bits kernel (Operating System that cannot “operate” a lot of
|
||
things)</li>
|
||
</ul>
|
||
<h3 id="popular-operating-systems">Popular Operating Systems</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/apple-oss-distributions/xnu">Darwin
|
||
XNU</a> - The XNU kernel source code for use in MacOS and iOS</li>
|
||
<li><a href="https://freebsd.org/">FreeBSD</a>, <a
|
||
href="https://github.com/freebsd/freebsd">Github</a> - Unix-like
|
||
operating system based on the BSD</li>
|
||
<li><a href="http://freedos.org/">FreeDOS</a> - DOS compatible OS</li>
|
||
<li><a href="https://github.com/haiku/haiku">Haiku</a> - BeOS inspired
|
||
OS</li>
|
||
<li><a href="https://github.com/torvalds/linux">Linux</a> - Linux
|
||
kernel</li>
|
||
<li><a href="https://www.minix3.org/">Minix</a>, <a
|
||
href="https://github.com/Stichting-MINIX-Research-Foundation/minix">Github</a>
|
||
- Unix-like operating system based on a microkernel architecture</li>
|
||
<li><a href="https://github.com/microsoft/MS-DOS">MS-DOS</a> - The
|
||
original sources of MS-DOS 1.25 and 2.0</li>
|
||
<li><a href="https://www.netbsd.org/">NetBSD</a>, <a
|
||
href="https://github.com/netbsd/src">Github</a> - Unix-like operating
|
||
system based on the BSD</li>
|
||
<li><a href="https://www.openbsd.org/">OpenBSD</a>, <a
|
||
href="https://github.com/openbsd/src">Github</a> - Unix-like operating
|
||
system based on the BSD</li>
|
||
<li><a href="http://9p.io/plan9/">Plan 9 from Bell Labs</a> - 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.</li>
|
||
<li><a href="https://reactos.org/">ReactOS</a>, <a
|
||
href="https://github.com/reactos/reactos">Github</a> - A free
|
||
Windows-compatible Operating System</li>
|
||
<li><a
|
||
href="https://archive.org/details/ATTUNIXSystemVRelease4Version2">SystemV</a>
|
||
- AT&T UNIX System V Source Code</li>
|
||
</ul>
|
||
<h2 id="books-and-guides">Books and Guides</h2>
|
||
<h3 id="online-books">Online books</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System">How
|
||
to Make a Computer Operating System</a> - in C++</li>
|
||
<li><a href="https://intermezzos.github.io/book/">Intermezzos</a> - A
|
||
follow along book to build IntermezzosOS in Rust</li>
|
||
<li><a href="http://www.kroah.com/lkn/">Linux Kernel in a Nutshell</a> -
|
||
Covers the entire range of kernel tasks, available as chapters or one
|
||
PDF</li>
|
||
<li><a href="http://littleosbook.github.io/">The little book about OS
|
||
development</a> by <em>Erik Helin</em> and <em>Adam Renberg</em></li>
|
||
<li><a href="http://greenteapress.com/thinkos/">Think OS</a> - A Brief
|
||
Introduction to Operating Systems by <em>Allen B. Downey</em></li>
|
||
<li><a
|
||
href="http://www.brokenthorn.com/Resources/OSDevIndex.html">Operating
|
||
System Development Series</a> - OS from the ground up in C</li>
|
||
<li><a href="http://pages.cs.wisc.edu/~remzi/OSTEP/">Operating Systems:
|
||
Three Easy Pieces</a> - Easy to read book covering virtualization,
|
||
concurrency and persistence</li>
|
||
<li><a
|
||
href="https://pdos.csail.mit.edu/6.828/2019/xv6/book-riscv-rev0.pdf">xv6:
|
||
a simple, Unix-like teaching operating system</a> - Book for Xv6</li>
|
||
<li><a href="https://tuhdo.github.io/os01/">Operating Systems: From 0 to
|
||
1</a> - Bootstrap yourself to write an OS from scratch by <em>Do Hoang
|
||
Tu</em></li>
|
||
<li><a href="https://github.com/dreamos82/Osdev-Notes">Osdev Notes</a> -
|
||
How to write an operating system from scratch by <em>Ivan G.</em> and
|
||
<em>Dean T.</em></li>
|
||
</ul>
|
||
<h3 id="tutorials">Tutorials</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html">Baking
|
||
Pi – Operating Systems Development</a> by University of Cambridge</li>
|
||
<li><a href="https://github.com/jserv/mini-arm-os">Build a minimal
|
||
multi-tasking OS kernel for ARM from scratch</a> by Jim Huang</li>
|
||
<li><a href="http://www.osdever.net/bkerndev/Docs/title.htm">Bran’s
|
||
Kernel Development</a> by Brandon Friesen</li>
|
||
<li><a href="https://github.com/gregkh/kernel-tutorial">How to write a
|
||
Linux kernel patch and submit it</a> by Greg Kroah-Hartman</li>
|
||
<li><a href="https://github.com/gregkh/kernel-development">Presentation
|
||
on how the Linux kernel is developed</a> by Greg Kroah-Hartman</li>
|
||
<li><a href="https://github.com/cfenollosa/os-tutorial">os-tutorial -
|
||
How to create an OS from scratch</a> by Carlos Fenollosa</li>
|
||
<li><a href="http://jamesmolloy.co.uk/tutorial_html/">Roll your own toy
|
||
UNIX-clone OS</a> by James Molloy</li>
|
||
<li><a href="https://os.phil-opp.com/">Writing an OS in Rust</a> by
|
||
Philipp Oppermann</li>
|
||
<li><a href="http://osblog.stephenmarz.com/">Making a RISC-V Operating
|
||
System using Rust</a> by Stephen Marz</li>
|
||
<li><a
|
||
href="https://medium.com/@lduck11007/operating-systems-development-for-dummies-3d4d786e8ac">Operating
|
||
systems development for Dummies</a> by Leo Whitehead</li>
|
||
<li><a
|
||
href="https://arjunsreedharan.org/post/82710718100/kernels-101-lets-write-a-kernel">Kernels
|
||
101 – Let’s write a Kernel</a> by Arjun Sreedharan</li>
|
||
<li><a
|
||
href="https://arjunsreedharan.org/post/99370248137/kernels-201-lets-write-a-kernel-with-keyboard">Kernels
|
||
201 - Let’s write a Kernel with keyboard and screen support</a> by Arjun
|
||
Sreedharan</li>
|
||
<li><a
|
||
href="https://www.joe-bergeron.com/posts/Writing%20a%20Tiny%20x86%20Bootloader/">Writing
|
||
a Tiny x86 Bootloader</a> by Joe Bergeron</li>
|
||
<li><a
|
||
href="http://3zanders.co.uk/2017/10/13/writing-a-bootloader/">Writing a
|
||
Bootloader</a> by Alex Parker</li>
|
||
<li><a href="https://github.com/s-matyukevich/raspberry-pi-os">Learning
|
||
operating system development using Linux kernel and Raspberry
|
||
Pi</a></li>
|
||
<li><a href="https://github.com/flydeoo/mya">mya</a> a fun project to
|
||
create OS from scratch by Erfan</li>
|
||
</ul>
|
||
<h3 id="websites">Websites</h3>
|
||
<ul>
|
||
<li><a href="https://genodians.org/">Genodians</a> - Stories around the
|
||
Genode Operating System</li>
|
||
<li><a href="http://wiki.osdev.org/Main_Page">os-dev</a> - Wiki with
|
||
everything you need to know</li>
|
||
<li><a href="http://www.lowlevel.eu/wiki/Hauptseite">Lowlevel</a> - A
|
||
wiki about creating an OS from scratch. In German</li>
|
||
<li><a
|
||
href="https://pubs.opengroup.org/onlinepubs/9699919799/">POSIX</a> -
|
||
Standards for maintaining compatibility between operating systems</li>
|
||
<li><a href="https://rust-osdev.com/">Rust OSDev</a> - Newsletter about
|
||
OS development in Rust</li>
|
||
<li><a href="https://www.osrtos.com/">OSRTOS</a> - List of open source
|
||
real-time operating systems</li>
|
||
<li><a href="https://www.multicians.org/">Multicians</a> - The
|
||
Multicians web site presents the story of the Multics operating system
|
||
for people interested in the system’s history</li>
|
||
</ul>
|
||
<h3 id="papers">Papers</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.usenix.org/conference/osdi18/presentation/cutler">The
|
||
benefits and costs of writing a POSIX kernel in a high-level
|
||
language</a> by Cody Cutler, M. Frans Kaashoek, and Robert T. Morris,
|
||
MIT CSAIL</li>
|
||
<li><a
|
||
href="https://icfp20.sigplan.org/details/scheme-2020-papers/3/Running-Scheme-On-Bare-Metal-Experience-Report-">Running
|
||
Scheme On Bare Metal</a> by Samuel Yvon, Marc Feeley, Scheme 2020</li>
|
||
<li><a
|
||
href="https://dl.acm.org/doi/pdf/10.1145/3447786.3456248">Unikraft:
|
||
Fast, Specialized Unikernels the Easy Way</a> by Kuenzer et al., EuroSys
|
||
2021</li>
|
||
</ul>
|
||
<h3 id="video-tutorials">Video Tutorials</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M">Write
|
||
your own Operating System</a></li>
|
||
<li><a
|
||
href="https://www.youtube.com/channel/UCSPIuWADJIMIf9Erf--XAsA">Nanobyte</a></li>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=HNIg3TXfdX8&list=PLrGN1Qi7t67V-9uXzj4VSQCffntfvn42v">Kernel
|
||
dev from scratch by Dragon Zap Education</a></li>
|
||
<li><a
|
||
href="https://youtube.com/playlist?list=PL5p37LtXzjqOoEl369i0nlTSaU1O3L-BN">OSDev
|
||
Lecture Series by AptRock327</a></li>
|
||
</ul>
|
||
<h2 id="linux-specific">Linux specific</h2>
|
||
<ul>
|
||
<li><p><a
|
||
href="https://training.linuxfoundation.org/training/a-beginners-guide-to-linux-kernel-development-lfd103">A
|
||
Beginner’s Guide to Linux Kernel Development (LFD103)</a></p></li>
|
||
<li><p><a href="https://sysprog21.github.io/lkmpg/">The Linux Kernel
|
||
Module Programming Guide</a></p></li>
|
||
<li><p><a href="https://www.kernel.org/doc/html/latest/">The Linux
|
||
Kernel documentation</a></p></li>
|
||
<li><p><a href="https://www.kernel.org/doc/html/latest/process/">Working
|
||
with the kernel development community</a></p></li>
|
||
<li><p><a
|
||
href="https://linux-kernel-labs.github.io/refs/heads/master">Linux
|
||
Kernel Teaching</a></p></li>
|
||
<li><p><a
|
||
href="https://0xax.gitbooks.io/linux-insides/content/">linux-insides</a></p></li>
|
||
<li><p><a href="https://lkw.readthedocs.io/en/latest/index.html">Linux
|
||
Kernel Workbook</a></p></li>
|
||
<li><p><a
|
||
href="https://linux-kernel-labs.github.io/refs/heads/master/">Linux
|
||
Kernel Teaching</a></p></li>
|
||
<li><p><a href="https://makelinux.github.io/kernel/map/">bootlins
|
||
interactive Linux kernel map</a></p></li>
|
||
<li><p><a
|
||
href="https://marcin.juszkiewicz.com.pl/download/tables/syscalls.html">Linux
|
||
kernel system call table for all archs</a> by Marcin
|
||
Juszkiewicz</p></li>
|
||
<li><p><a href="http://www.oldlinux.org/">OldLinux</a> - A Heavily
|
||
Commented Linux kernel source and more</p></li>
|
||
<li><p><a href="https://github.com/sam4k/linux-kernel-resources">sam4ks
|
||
Linux Kernel Resources</a></p></li>
|
||
<li><p><a
|
||
href="https://github.com/xairy/linux-kernel-exploitation">xairys Linux
|
||
Kernel Exploitation</a></p></li>
|
||
<li><p><a href="https://github.com/sysprog21/fibdrv">fibdrv Linux kernel
|
||
module that calculates Fibonacci numbers</a></p></li>
|
||
<li><p><a
|
||
href="https://github.com/bsauce/kernel-security-learning">kernel-security-learning</a></p></li>
|
||
<li><p><a href="https://syzkaller.appspot.com/upstream">syzbot</a>
|
||
bugs</p></li>
|
||
<li><p><a href="https://github.com/google/syzkaller">syzkaller</a>
|
||
kernel fuzzer</p></li>
|
||
<li><p><a href="https://www.youtube.com/watch?v=wTpQYM08_Yg">Doing more
|
||
with lore and b4</a>, <a
|
||
href="https://lpc.events/event/11/contributions/983/attachments/759/1421/Doing%20more%20with%20lore%20and%20b4.pdf">slides</a></p></li>
|
||
<li><p><a
|
||
href="https://media.ccc.de/v/clt23-193-der-linux-kernel-entwicklungs-workflow">Der
|
||
Linux Kernel Entwicklungs-Workflow</a> (2023, German) by Rouven
|
||
Czerwinski</p></li>
|
||
</ul>
|
||
<h3 id="tools">Tools</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/mricon/b4">b4</a>, <a
|
||
href="https://b4.docs.kernel.org/en/latest/">docu</a>, a tool to help
|
||
with email-based patch workflows</li>
|
||
<li><a href="https://github.com/SUSE/clang-extract">clang-extract</a> a
|
||
tool to extract code content from source files using the clang and LLVM
|
||
infrastructure.</li>
|
||
<li><a href="https://github.com/sjp38/hackermail">hackermail</a> a mails
|
||
management tool for hackers who collaborate using mailing lists</li>
|
||
<li><a href="https://github.com/kworkflow/kworkflow">kworkflow</a> -
|
||
reduce the overhead with infrastructure setup for Linux development</li>
|
||
<li><a href="https://github.com/arighi/virtme-ng">virtme-ng</a> -
|
||
quickly build and run kernels inside a virtualized snapshot of your live
|
||
system</li>
|
||
</ul>
|
||
<h3 id="blogposts">Blogposts</h3>
|
||
<ul>
|
||
<li><p><a href="https://planet.kernel.org/">Planet Kernel</a></p></li>
|
||
<li><p><a
|
||
href="https://javiercarrascocruz.github.io/kernel-contributor-1">Become
|
||
a Linux kernel contributor - Part 1</a> by Javier Carrasco</p></li>
|
||
<li><p><a
|
||
href="https://javiercarrascocruz.github.io/kernel-contributor-2">Become
|
||
a Linux kernel contributor - Part 2</a> by Javier Carrasco</p></li>
|
||
<li><p><a
|
||
href="https://javiercarrascocruz.github.io/kernel-contributor-3">Become
|
||
a Linux kernel contributor - Part 3</a> by Javier Carrasco</p></li>
|
||
<li><p><a href="https://javiercarrascocruz.github.io/syzbot">Fixing bugs
|
||
in the Linux kernel with Syzbot, Qemu and GDB</a> by Javier
|
||
Carrasco</p></li>
|
||
<li><p><a
|
||
href="https://javiercarrascocruz.github.io/b4-for-kernel-contributors">b4
|
||
for Linux kernel contributors</a> by Javier Carrasco</p></li>
|
||
<li><p><a
|
||
href="https://www.marcusfolkesson.se/blog/use-b4-for-kernel-contributions/">Use
|
||
b4 for kernel contributions</a> by Marcus Folkesson</p></li>
|
||
<li><p><a
|
||
href="https://josefbacik.github.io/kernel/2021/10/18/lei-and-b4.html">Using
|
||
lei, b4, and mutt to do kernel development</a> by Josef Bacik</p></li>
|
||
<li><p><a href="https://people.kernel.org/kuba/netdev-in-2023">netdev in
|
||
2023</a> by Jakub Kicinski</p></li>
|
||
<li><p><a
|
||
href="https://mpdesouza.com/blog/five-commands-to-crash-the-kernel/">Five
|
||
commands to crash the kernel</a> by Marcos Paulo de Souza</p></li>
|
||
<li><p><a
|
||
href="https://jvns.ca/blog/2014/09/18/you-can-be-a-kernel-hacker/">You
|
||
can be a kernel hacker!</a> by Julia Evans</p></li>
|
||
<li><p><a
|
||
href="https://jvns.ca/blog/2014/01/04/4-paths-to-being-a-kernel-hacker/">4
|
||
paths to being a kernel hacker</a> by Julia Evans</p></li>
|
||
<li><p><a
|
||
href="https://jvns.ca/blog/2016/01/18/guessing-linux-kernel-registers/">Guessing
|
||
Linux kernel registers</a> by Julia Evans</p></li>
|
||
<li><p><a
|
||
href="https://ariel-miculas.github.io/How-I-got-robbed-of-my-first-kernel-contribution/">How
|
||
I got robbed of my first kernel contribution</a> by Ariel
|
||
Miculas</p></li>
|
||
<li><p><a
|
||
href="https://adam.younglogic.com/2022/10/apply-linux-kernel-patches-from-lkml/">Apply
|
||
Linux Kernel Patches from LKML</a> by Adam Young (before he got aware of
|
||
b4)</p></li>
|
||
<li><p><a
|
||
href="https://josefbacik.github.io/kernel/2021/10/19/patch-review.html">My
|
||
patch review workflow</a> by Josef Bacik</p></li>
|
||
<li><p><a
|
||
href="https://gist.github.com/Scott31393/2a8296fe0a04648838117b8ebb21ed40">Linux
|
||
Kernel Develop Workflow</a> by Tommaso Merciai</p></li>
|
||
<li><p><a href="https://vimeo.com/8200182">Apply a Linux kernel patch to
|
||
the stable tree</a> (2009) by Greg Kroah-Hartman</p></li>
|
||
<li><p><a
|
||
href="http://www.kroah.com/log/blog/2019/08/14/patch-workflow-with-mutt-2019/">Patch
|
||
Workflow With Mutt 2019</a> by Greg Kroah-Hartman</p></li>
|
||
<li><p><a
|
||
href="https://www.marcusfolkesson.se/blog/debug-kernel-with-kgdb/">Debug
|
||
kernel with KGDB</a> by Marcus Folkesson</p></li>
|
||
<li><p><a
|
||
href="https://cs4118.github.io/dev-guides/kernel-debugging.html">Linux
|
||
Kernel Debugging</a></p></li>
|
||
<li><p><a
|
||
href="https://nasamuffin.github.io/git/open-source/email/code-review/2019/05/22/how-i-learned-to-love-email-patches.html">How
|
||
I Learned to Love the Email Patch Developer Workflow</a> by Emily
|
||
Shaffer</p></li>
|
||
</ul>
|
||
<h3 id="debugging">Debugging</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.kernel.org/doc/html/latest/admin-guide/bug-hunting.html">Bug
|
||
hunting</a></li>
|
||
<li><a
|
||
href="https://www.kernel.org/doc/html/latest/admin-guide/bug-bisect.html">Bisecting
|
||
a bug</a></li>
|
||
<li><a
|
||
href="https://www.kernel.org/doc/html/latest/admin-guide/bug-bisect.html">Dynamic
|
||
Debug</a></li>
|
||
<li><a
|
||
href="http://www.gonehiking.org/ShuahLinuxBlogs/blog/2018/10/18/who-made-that-change-and-when-using-cregit-for-debugging/">Who
|
||
Made That Change and When: Using Cregit for Debugging</a> by Shuah
|
||
Khan</li>
|
||
<li><a href="https://lwn.net/Articles/592724/">Make stack dump output
|
||
useful again</a></li>
|
||
<li><a
|
||
href="https://sanjeev1sharma.wordpress.com/tag/debug-kernel-panics/">Debugging
|
||
Analysis of Kernel panics and Kernel oopses using System Map</a> by
|
||
Sanjeev Sharma</li>
|
||
<li><a
|
||
href="https://www.opensourceforu.com/2011/01/understanding-a-kernel-oops/">Understanding
|
||
a Kernel Oops!</a> by Surya Prabhakar</li>
|
||
</ul>
|
||
<h3 id="email">Email</h3>
|
||
<ul>
|
||
<li><p>Learn how to use git+email: <a
|
||
href="https://git-send-email.io/">git-send-email</a></p></li>
|
||
<li><p>Learn how to review patches over email: <a
|
||
href="https://git-am.io/">git-am</a></p></li>
|
||
<li><p>Use <a href="https://useplaintext.email">plaintext</a>
|
||
emails</p></li>
|
||
<li><p><a
|
||
href="https://drewdevault.com/2018/07/02/Email-driven-git.html">The
|
||
advantages of an email-driven git workflow</a> by Drew DeVault</p></li>
|
||
<li><p><a
|
||
href="https://drewdevault.com/2022/07/25/Code-review-with-aerc.html">Code
|
||
review at the speed of email</a> by Drew DeVault</p></li>
|
||
</ul>
|
||
<h2 id="conferences-presentations">Conferences / Presentations</h2>
|
||
<ul>
|
||
<li><a href="https://lpc.events/">Linux Plumbers</a>, <a
|
||
href="https://www.youtube.com/c/LinuxPlumbersConference">YT</a></li>
|
||
<li><a href="https://www.youtube.com/@LinuxfoundationOrg">The Linux
|
||
Foundation</a></li>
|
||
</ul>
|
||
<p><a href="https://github.com/jubalh/awesome-os">os.md Github</a></p>
|