blog_os README

The project's README from github.com/phil-opp/blog_os. As one markdown file: README.md.

Blog OS

This repository contains the source code for the Writing an OS in Rust series at os.phil-opp.com.

If you have questions, open an issue or chat with us on Gitter.

Where is the code?

The code for each post lives in a separate git branch. This makes it possible to see the intermediate state after each post.

The code for the latest post is available here.

You can find the branch for each post by following the (source code) link in the post list below. The branches are named post-XX where XX is the post number, for example post-03 for the VGA Text Mode post or post-07 for the Hardware Interrupts post. For build instructions, see the Readme of the respective branch.

You can check out a branch in a subdirectory using git worktree:

git worktree add code post-10

The above command creates a subdirectory named code that contains the code for the 10th post ("Heap Allocation").

Posts

The goal of this project is to provide step-by-step tutorials in individual blog posts. We currently have the following set of posts:

Bare Bones:

Interrupts:

Memory Management:

Multitasking:

First Edition Posts

The current version of the blog is already the second edition. The first edition is outdated and no longer maintained, but might still be useful. The posts of the first edition are:

Click to expand

Bare Bones:

Memory Management:

Exceptions:

Additional Resources:

License

This project, with exception of the blog/content folder, is licensed under either of

at your option.

For licensing of the blog/content folder, see the blog/content/README.md.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

blog_os (phil-opp/blog_os)

Searching Database…

17.8K ·GitHub
What is this?Source code for the 'Writing an OS in Rust' blog series at os.phil-opp.com - step-by-step posts that build a small x86-64 operating system kernel in Rust.
Is it just a blog, or do I get runnable code too?Both: every post on the site comes with its own working code, stored in a separate git branch of this repo, so you can run the exact code state described in that post.
How do I get the code for a specific post?Follow the (source code) link next to a post, or check out its branch directly - branches are named post-XX (post-03 is VGA Text Mode, post-07 is Hardware Interrupts). Build instructions are in each branch's own README.
Is the series finished?It is still a work in progress: the second edition has 12 posts and currently ends with Async/Await in the Multitasking section. The older first edition is no longer maintained.
Do I need to know Rust before starting?The posts are step-by-step, but you write Rust from the very first one ('A Freestanding Rust Binary'), so basic Rust knowledge is effectively required. OS-development concepts themselves are taught from zero.
Where does the resulting OS actually run?The kernel targets x86-64 bare metal - it runs directly on hardware or in an emulator like QEMU, not inside an existing OS like Linux or Windows.
Can I reuse the code in my own projects?Yes - the code is dual-licensed under Apache-2.0 and MIT, so you can pick either. The blog/content folder is licensed separately (see blog/content/README.md).
What topics do the posts cover?Four sections: Bare Bones (freestanding binary, minimal kernel, VGA text mode, testing), Interrupts (CPU exceptions, double faults, hardware interrupts), Memory Management (paging, heap allocation, allocator designs) and Multitasking (async/await).
Where should a beginner start?At the first Bare Bones post, 'A Freestanding Rust Binary'. Posts build on each other in order, and each one has a matching post-XX branch in this repo with its code.
Can I keep several posts' code side by side without switching branches?Yes - the README suggests git worktree, which checks a branch out into a subdirectory; the example command puts the code for post-10 (Heap Allocation) into a folder named code.
Why does GitHub list the language as HTML if this is a Rust OS?The repo root hosts the blog site itself; the actual Rust kernel code lives in the per-post branches, so the main page shows the website rather than the kernel sources.
Creator
phil-opp
Size
21.4 MB
Stars
17.8K
Updated
CommitAug 07
Age
11y
Commits · 90 Days