For a project for learning OS internals by building one, the first results are tuhdo/os01 (This is a comprehensive educational book that guides you through building an OS from scratch, covering x86 architecture, bootloading, protected mode, paging, interrupt handling, and more—exactly the kind of in-depth tutorial you are looking for), yourtion/30daymakeos and cirosantilli/x86-bare-metal-examples. cfenollosa/os-tutorial and phil-opp/blog_os round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
Explore open-source projects and educational resources for developing custom operating system kernels from scratch.
This project is an educational resource and technical reference for building operating systems from scratch. It provides a comprehensive guide to mastering x86 architecture and implementing core kernel components by writing code that executes directly on hardware without the support of standard libraries or operating system abstractions. The materials focus on low-level systems engineering, teaching users how to interpret technical datasheets to manage hardware resources. It covers the fundamental mechanics of bare-metal programming, including the use of assembly language to define execution
This is a comprehensive educational book that guides you through building an OS from scratch, covering x86 architecture, bootloading, protected mode, paging, interrupt handling, and more—exactly the kind of in-depth tutorial you are looking for.
30dayMakeOS is an educational hobby operating system project designed for the x86 architecture. It implements a monolithic kernel and a custom bootloader that transitions the CPU from real mode to 32-bit protected mode to enable flat memory addressing. The project focuses on low-level system development, featuring a custom graphics driver for direct pixel-buffer rendering and window management without an existing operating system. It includes an x86 bootloader that loads the kernel from disk into memory. The system covers core kernel capabilities including round-robin task scheduling for pro
yourtion/30dayMakeOS is an educational x86 operating system project that implements a monolithic kernel, custom bootloader, real-to-protected-mode transition, task scheduling, and a command-line interface — it serves as a complete reference implementation that covers all the core OS-building concepts the tutorial search is targeting.
This project is a collection of minimal operating systems, bootloaders, and hardware drivers used to demonstrate low-level x86 system programming and hardware interfacing. It serves as a kernel development toolkit and a system programming lab designed for testing architecture concepts and hardware behavior within a system emulator. The repository provides reference implementations for creating bootable disk images and loading kernel stages. It includes guides for implementing protected mode transitions, memory paging, interrupt descriptor tables, and symmetric multiprocessing on x86 hardware.
This repository is a collection of minimal x86 operating systems and hardware drivers that demonstrates low-level system programming concepts such as bootloading, protected mode, paging, and interrupt handling, making it a solid reference for understanding kernel internals, though it is more of a toolkit of examples than a structured step-by-step tutorial and lacks a simple shell.
This project is an educational curriculum designed to teach the fundamentals of operating system development and low-level systems programming. It provides a structured sequence of lessons and code samples that guide users through building a functional kernel and bootloader from scratch, enabling a practical understanding of how software interacts directly with computer hardware. The repository distinguishes itself by focusing on the core mechanics of bare-metal execution. It covers the implementation of essential system components, including assembly-based bootloaders that transition process
This repository is a structured, step-by-step curriculum that teaches OS kernel development from scratch in assembly and C for x86, covering bootloader handling, real-to-protected mode transition, and core low-level mechanics—exactly the comprehensive educational guide you're after.
This project is a freestanding kernel written in Rust that boots on x86 hardware without a standard library. It serves as a low-level system implementation focusing on the creation of a bare metal operating system. The system implements a bootable disk image toolchain that transforms source code into binaries compatible with a bootloader. It features a custom memory allocator for dynamic memory management and an x86 kernel implementation that includes paging, interrupt handling, and VGA text mode. The project covers several core capability areas, including low-level memory management through
This repository provides the code for the "Writing an OS in Rust" blog series, serving as a complete reference implementation for building an x86-64 kernel with paging, interrupt handling, and VGA output, but it uses Rust rather than the typical assembly and C and the tutorial itself is not in the repo.
How to Make a Computer Operating System
This repository is exactly what you are looking for: it provides a complete, step-by-step tutorial that walks through building an x86 operating system kernel from scratch, covering bootloader setup, protected mode, memory paging, interrupt handling, keyboard input, and a simple shell, all in assembly and C.
This project is an educational operating system kernel designed to demonstrate the fundamental architectural principles of memory paging and process management. It is implemented as a minimal kernel that serves as a practical reference for building a functioning system from the ground up. The implementation features a preemptive multitasking kernel that switches execution contexts between threads to share a single CPU. It includes an x86 virtual memory manager that uses paging to map virtual addresses to physical memory and isolate processes. The system covers low-level hardware interfacing
This repository provides a minimal, educational x86 kernel implementation that demonstrates memory paging, multitasking, and low‑level hardware interfacing—making it a practical reference for building a kernel from scratch, though it may not include a detailed step‑by‑step tutorial covering every requested feature like bootloader handling or interactive keyboard input.
This project is an educational resource for developing bare-metal operating systems and kernels from scratch on Raspberry Pi hardware. It provides a structured guide to systems programming using the Rust language, focusing on the implementation of core kernel components that execute directly on ARM-based hardware without the support of an underlying operating system or standard library. The tutorials emphasize a modular architecture that separates hardware-independent kernel logic from processor-specific and board-specific configurations. By utilizing a hardware abstraction layer and distinct
This repository provides a structured bare-metal OS kernel tutorial, but it targets ARM (Raspberry Pi) and uses Rust, not x86 with assembly and C as the visitor is looking for.
This project is a bare-metal operating system developed for ARM64 architecture. It serves as a low-level implementation of kernel engineering, focusing on the fundamental construction of an OS from the hardware level up. The system is distinguished by its comprehensive approach to ARM64 processor control, featuring a red-black tree task scheduler and a hierarchical page table system for virtual memory management. It implements a sophisticated privilege model that handles transitions between kernel and user modes, ensuring process isolation through address space splitting and exception level m
This repository is a detailed educational OS kernel implementation for ARM64 (Raspberry Pi), not the x86 architecture explicitly requested, so it is a neighbouring category rather than the right match.
This project is a collection of technical documentation and guides designed as a computer architecture explainer. It provides educational resources on how processors and operating systems execute programs, focusing on the fetch-execute cycle and the fundamental relationship between hardware and the kernel. The documentation covers a wide range of low-level system operations, including detailed guides on the executable and linkable binary format, virtual memory management, and kernel-level operations. It specifically explores the mechanics of CPU scheduling, preemptive multitasking, and the us
This repository is a collection of computer-architecture explainers and kernel-internals documentation rather than a step-by-step tutorial for building an OS kernel from scratch in assembly and C targeting x86—it covers concepts like scheduling and virtual memory but lacks the hands-on bootloader, mode-switching, and shell-implementation stages you're looking for.
This project is a technical reference and educational guide focused on the internal architecture of the Linux kernel. It serves as a low-level systems programming resource and documentation for operating system internals, detailing the implementation of core mechanisms within the kernel source code. The materials provide a detailed study of the Linux kernel, tracing behavior through actual C source and assembly. It specifically covers the progression from the bootloader and decompression to the final kernel entry point, alongside the management of hardware interrupts and symmetric multiproces
This repository is a deep exploration of the existing Linux kernel's internals, not a step-by-step guide to building your own kernel from scratch — it explains how Linux works rather than teaching you to write your own.
OpenCorePkg is a modular UEFI bootloader designed to initialize hardware and facilitate the loading of modern operating systems on non-standard or unsupported hardware. It functions as a comprehensive firmware emulation environment, providing the necessary runtime services and memory management to bridge the gap between diverse hardware configurations and operating system requirements. The project distinguishes itself through its ability to perform runtime kernel patching and system firmware modification, allowing for the injection of drivers and the manipulation of hardware tables during the
OpenCorePkg is a UEFI bootloader for emulating firmware and loading operating systems on non‑standard hardware, not a step‑by‑step guide or reference implementation for building a kernel from scratch in assembly and C.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| tuhdo/os01 | 13.4K | TeX | — | |
| yourtion/30daymakeos | 6.4K | C | NOASSERTION | |
| cirosantilli/x86-bare-metal-examples |
| 5.3K |
| Assembly |
| NOASSERTION |
| cfenollosa/os-tutorial | 30.6K | C | BSD-3-Clause |
| phil-opp/blog_os | 17.5K | HTML | Apache-2.0 |
| samypesse/how-to-make-a-computer-operating-system | 22.4K | C | Apache-2.0 |
| nuta/operating-system-in-1000-lines | 3.3K | C | other |
| rust-embedded/rust-raspberrypi-os-tutorials | 14.7K | Rust | Apache-2.0 |
| s-matyukevich/raspberry-pi-os | 13.9K | C | MIT |
| hackclub/putting-the-you-in-cpu | 5.5K | MDX | MIT |