About this project

This repository hosts the code for the “Writing an OS in Rust” series at os.phil-opp.com. The tutorial is organized as a sequence of posts, with each post's intermediate implementation stored in a separate Git branch named post-XX. The latest post code is on the post-12 branch, and each post links directly to its corresponding source branch. The second-edition series is grouped into Bare Bones, Interrupts, Memory Management, and Multitasking. Covered topics include creating a freestanding Rust binary, building a minimal kernel, VGA text-mode output, kernel testing, CPU exceptions, double faults, hardware interrupts, paging introduction and implementation, heap allocation, allocator designs, and async/await support. Build instructions are provided in the README of each post-specific branch. Developers can use git worktree to check out a post branch into its own subdirectory, for example checking out post-10 to examine the heap-allocation stage. The repository also retains branches for the outdated, unmaintained first edition, which covers earlier x86 kernel, long mode, frame allocation, page-table remapping, kernel heap, and exception material. Questions can be raised through GitHub issues or the project's Gitter chat. Except for the blog/content folder, the project is dual-licensed under the Apache License 2.0 and MIT licenses; the blog/content directory has its own licensing terms.