Capstones¶
Each level ends with a capstone: a larger, realistic project that pulls together everything the level taught. Chapter exercises check that you understood one idea. A capstone checks that you can combine ideas to solve a problem nobody has broken down into steps for you.
The capstone philosophy¶
- It proves skill, not recognition. Reading a chapter and nodding along feels like learning. Building something from a blank terminal shows whether it actually is.
- It's realistic on purpose. Capstones look like work you'd really do: digging through a log file, writing a backup tool, building a server. The messiness is part of the lesson.
- Struggle is the point. Getting stuck, reading a man page, and getting unstuck is the skill you're building. A capstone you finish without effort was too easy, and you should skip ahead.
- "Works without notes" is the bar. When you're done, close everything
except
man,--help, and a terminal, and rebuild it. If you can, you're ready for the next level. If you can't, find the chapter you needed and try again in a few days.
Attempt it before you open the solution
The solutions are on separate pages, under Capstones → Solutions in the navigation, so you don't see them by accident. Open a solution only after you have a working result, to compare approaches. If you're truly stuck, reread the relevant chapter first, then sleep on it. Looking at the solution too early turns a capstone into a reading exercise.
All seven capstones¶
| Level | Capstone | What you do | Time (est.) |
|---|---|---|---|
| 0 | Find your way around | Move around the filesystem confidently, explain where config, logs, programs, and personal files live, and find any command's documentation without a browser. | 1–2 hours |
| 1 | Log file detective | Answer real questions about a web server log using only pipelines: most frequent entries, errors per hour, and the top 10 of anything. | 2–4 hours |
| 2 | A real backup script | Write a backup script with options, logging, old-backup cleanup, and a dry-run mode that passes shellcheck with no warnings. |
4–8 hours |
| 3 | Explain the machine | Explain, in writing, what happens from power-on to the login screen and from typing ls to seeing output, naming every component involved. |
3–6 hours |
| 4 | Server from scratch | On a fresh VM, set up hardened SSH, a firewall, a small web app running as a systemd service, and nightly backups on a timer. | 6–12 hours |
| 5 | A network server in Python | Write a server that handles several clients at once, shuts down cleanly on signals, and runs as a systemd service. | 8–15 hours |
| 6 | Container or Linux From Scratch | Pick one: build a minimal container with unshare and cgroups, or build a Linux system from source with Linux From Scratch. |
Container: 8–15 hours. LFS: several days |
The time estimates are for focused work, spread over several sessions. Taking longer is normal and fine. Taking much less probably means the level was review for you.
⚠️ VM only
The Level 4, 5, and 6 capstones change system services, firewall rules, users, and kernel features. Do them in your practice VM, and take a snapshot before you start. See Set up your practice lab.
How to work on a capstone¶
- Read the whole brief first. Note every requirement in your own words.
- Plan before typing. Sketch the steps in your notes. Which chapters cover each part?
- Build in small pieces. Get one part working, test it, then add the next. Commit each working step to git.
- Test the edge cases. What happens with an empty file, a missing directory, a full disk, a client that disconnects? The briefs list specific checks.
- Record your mistakes in your "mistakes I made" log as you go.
- Compare with the solution once yours works. Note anything the solution does better.
- Rebuild without notes a few days later. Only then tick it off in your progress checklist.
Solutions¶
Open these only after attempting the capstone.