00 Intro

Posted: 2025 Mar 11

Let’s write an OS! Or not…

So you want to write an operating system? Tough luck, you probably won’t. Just to shatter your dreams early I need to emphasize that an operating system (OS) is a very complicated web/pile of software. To be able to write it, you need to be well versed in a bunch of different standards and programming concepts. So you probably won’t write an entire OS by yourself.

BUT DON’T GET TOO DISCOURAGED! There might be a way to scratch that itch of wanting to write something like that. Writing a simple kernel by yourself can be doable. But that still depends on what you consider a “kernel”. You might picture it replacing Linux, you might want to use it on a simple embedded platform. It completely depends. Linux was written by a single person in its early days, but nowadays there are countless people working on it.

The purpose of this article is just to help you bring yourself back down to Earth and lower your expectations. But even if you probably won’t write a new UNIX, there is still so much to learn. OS development is a DEEP rabbit hole so if you have addictive tendencies, know what you’re getting into.

What is this blog about?

This blog won’t most likely be a comprehensive guide on OS development. There is already a place for that called the OSDev wiki. This will most likely be my scream into the endless void of the Internet not for help, but just to make myself feel better. I will upload my milestones in my learning process that maybe someday will be useful to someone but me. By the way, I will be writing my kernel in Rust because I am modern and progressive like that.

Where to start?

As I am still a newbie in OS development, I wouldn’t advise you to copy off my work. I will however link some good resources to start learning. A very important suggestion is that don’t skip stuff. Best case scenario is that it just doesn’t work. But the worst case scenario is that it works in the beginning, but breaks at a completely arbitrary time leaving you to debug it without knowing about anything (because you skipped a part of the learning process). A second suggestion is to take it slow. Writing a hello world in a normal programming language on a pre-existing OS might be kind of bland, but writing a hello world in assembly on bare metal is something else.


Links

Next Post
01 Abstract
Osdev