Project 1: The First Boot
A fully functional SerenityOS development environment where you can compile the entire OS from source and boot it in the QEMU emulator.
Quick Reference
| Attribute | Value |
|---|---|
| Primary Language | Shell (for setup) |
| Alternative Languages | N/A |
| Difficulty | Level 1: Beginner |
| Time Estimate | A few hours |
| Knowledge Area | Build Systems / Toolchains |
| Tooling | CMake, QEMU, GCC/Clang |
| Prerequisites | Familiarity with the command line, basic understanding of what a compiler is. |
What You Will Build
A fully functional SerenityOS development environment where you can compile the entire OS from source and boot it in the QEMU emulator.
Why It Matters
This project builds core skills that appear repeatedly in real-world systems and tooling.
Core Challenges
- Installing the correct dependencies → maps to understanding the toolchain
- Running the build script → maps to learning the SerenityOS build process
- Booting in QEMU → maps to virtualization and system emulation
- Troubleshooting build failures → maps to learning to read compiler and linker errors
Key Concepts
- Toolchain Setup: SerenityOS Build Instructions
- CMake Basics: Official CMake Tutorial
- QEMU Emulation: QEMU User Documentation
Real-World Outcome
Deliver a working demo with observable output that proves the feature is correct.
Implementation Guide
- Reproduce the simplest happy-path scenario.
- Build the smallest working version of the core feature.
- Add input validation and error handling.
- Add instrumentation/logging to confirm behavior.
- Refactor into clean modules with tests.
Milestones
- Milestone 1: Minimal working program that runs end-to-end.
- Milestone 2: Correct outputs for typical inputs.
- Milestone 3: Robust handling of edge cases.
- Milestone 4: Clean structure and documented usage.
Validation Checklist
- Output matches the real-world outcome example
- Handles invalid inputs safely
- Provides clear errors and exit codes
- Repeatable results across runs
References
- Main guide:
LEARN_SERENITYOS_DEEP_DIVE.md - The SerenityOS
README.mdand build documentation.