explaingit

francescobbo/nos

Analysis updated 2026-07-14 · repo last pushed 2016-08-11

1AssemblyAudience · developerComplexity · 5/5DormantSetup · hard

TLDR

A custom operating system built from scratch in C++ and Assembly, paired with an online guide that teaches you how computers work at the lowest level by walking through each stage of OS development.

Mindmap

mindmap
  root((repo))
    What it does
      Custom OS from scratch
      Boots CPU and cores
      Runs user programs later
    Tech stack
      C++
      Assembly
      Docker dev image
    Use cases
      Learn OS internals
      Follow along with guide
      Study low-level computing
    Audience
      Hobbyists and students
      Curious engineers
      Embedded systems fans
    Goals
      Linux syscall compatibility
      Run Ruby eventually
      ext2 and FAT32 support
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Learn how an operating system boots and manages memory by following the staged build process.

USE CASE 2

Study how CPUs switch between kernel and user mode to run programs safely.

USE CASE 3

Use the accompanying online guide as a self-taught course on low-level computer systems.

USE CASE 4

Explore how disk access and file systems like ext2 and FAT32 work at the hardware level.

What is it built with?

C++AssemblyDocker

How does it compare?

francescobbo/nosjwasham/assembly-and-cpret/pokered
Stars11884,695
LanguageAssemblyAssemblyAssembly
Last pushed2016-08-11
MaintenanceDormant
Setup difficultyhardhardhard
Complexity5/54/55/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires a Docker environment with a prebuilt cross-compiler toolchain and familiarity with emulators for testing bare-metal code.

No license information is mentioned in the explanation, so the terms of use are unclear.

In plain English

NOS is a personal project to build a custom operating system from scratch, paired with an online guide so others can learn from the process. The "nitrogen-powered" framing is a playful joke, the name references nitrous oxide, but the project is a real, working OS being written primarily in C++ and Assembly. It's an educational endeavor aimed at people curious about how computers actually work at the lowest level. The project is structured in stages. First, it gets the main CPU running, boots secondary cores, and handles basic memory allocation and slow disk access. Later phases add support for running user programs, faster disk operations, and file system drivers like ext2 and FAT32. The ultimate goal is ambitious: implement enough standard system calls that it can run existing Linux software, with the author hoping to eventually run Ruby and possibly even a web framework like Rails on top of it. This isn't meant for everyday users or production systems. The audience is hobbyists, students, and engineers who want to understand what happens when you press a key, write to a disk, or send a network packet, the kind of deep knowledge you only get by building an OS yourself. The author notes that while general-purpose OS development has gotten extremely complex across diverse hardware, custom operating systems are still relevant in embedded systems with strict real-time requirements, like self-driving cars or appliances. A few tradeoffs stand out. The project skips UEFI support (the modern boot standard) because emulator support is poor enough that testing would require constant physical reboots. Instead it uses an older boot approach, though the code is kept clean enough that UEFI support could be added later. Development happens inside a prebuilt Docker image containing the compiler and tools, so you can follow along from any operating system. The accompanying guide is being published on a GitHub Pages site.

Copy-paste prompts

Prompt 1
I'm following the NOS operating system project. Help me understand the boot process for a custom OS written in Assembly and C++, what happens from power-on to the first line of C++ code?
Prompt 2
I'm building a simple OS like the NOS project. Write me an Assembly bootloader stub that switches to 64-bit long mode and jumps to a C++ entry point, and explain each step.
Prompt 3
Explain how to set up a Docker-based cross-compiler environment for OS development so I can compile C++ and Assembly code for a bare-metal target from any operating system.
Prompt 4
I want to add basic memory allocation to my custom OS like NOS does. Show me a simple physical page frame allocator in C++ and explain how it tracks free memory blocks.

Frequently asked questions

What is nos?

A custom operating system built from scratch in C++ and Assembly, paired with an online guide that teaches you how computers work at the lowest level by walking through each stage of OS development.

What language is nos written in?

Mainly Assembly. The stack also includes C++, Assembly, Docker.

Is nos actively maintained?

Dormant — no commits in 2+ years (last push 2016-08-11).

What license does nos use?

No license information is mentioned in the explanation, so the terms of use are unclear.

How hard is nos to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is nos for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.