finds.dev← search

// the find

cfenollosa/os-tutorial

★ 30,745 · C · BSD-3-Clause · updated Feb 2026

How to create an OS from scratch

A step-by-step tutorial for building a toy x86 operating system, from a 512-byte boot sector through protected mode, a C kernel, interrupts, a timer, a keyboard driver, a small libc, and a shell. It is for programmers comfortable with C and assembly who want to see the boot path without reading Linux source. The author marks it as abandoned, so treat it as a learning path rather than a reference.

Each lesson is a self-contained folder that builds on the last, so diffing lesson 19 against lesson 20 shows exactly what the timer and keyboard code adds. The path covers the parts many hobby tutorials hand-wave: the GDT and the switch into 32-bit mode, IDT setup with PIC remapping, and IRQ dispatch. The screen and keyboard drivers talk to VGA memory and the CRT and PS/2 ports directly, with no emulator-specific abstraction in the way. Lesson 11 spells out the cross-compiler toolchain explicitly, which is where most OS tutorials lose readers.

The author says the project is abandoned, and the linked issue #269 lists technical and design problems, so do not assume the code is current or correct. Memory management, the filesystem, user mode, and multitasking from the strategy list are not done, so the tutorial stops well short of a usable system. Everything targets 16-bit BIOS boot and 32-bit x86, with no paging, no 64-bit, and no UEFI, so the knowledge does not carry directly to a modern kernel. The README deliberately skips theory, which leaves the reasoning behind segmentation and interrupt setup to outside sources, and there is no test harness, so you verify each step by hand in an emulator.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →