The Full Roadmap¶
This page is the handbook's complete syllabus. It shows every tier, level, and chapter, plus the concepts each chapter teaches. Use it to see where you are, what's next, and how the pieces fit together.
flowchart LR
subgraph B["🌱 Beginner"]
L0["Level 0<br/>First steps"] --> L1["Level 1<br/>Command line"] --> L2["Level 2<br/>Scripting"]
end
subgraph I["🔧 Intermediate"]
L3["Level 3<br/>How Linux works"] --> L4["Level 4<br/>System administration"]
end
subgraph E["🚀 Expert"]
L5["Level 5<br/>Building for Linux"] --> L6["Level 6<br/>Expert topics"]
end
L2 --> L3
L4 --> L5
| Tier | Levels | You go from… | …to | Time (est.) |
|---|---|---|---|---|
| 🌱 Beginner | 0–2 | Never having opened a terminal | Fluent on the command line, writing solid bash scripts | 6–10 weeks |
| 🔧 Intermediate | 3–4 | Using Linux | Understanding how it works and running real servers | 8–12 weeks |
| 🚀 Expert | 5–6 | Running servers | Building software for Linux, containers from scratch, performance, security, and automation | 10–16 weeks |
The time estimates assume about 45–60 minutes a day, most days. Go slower if you need to: understanding beats speed.
The one rule
Every level ends with a capstone. Don't move on until you can finish it without notes. The capstone proves you can use the skills, not just recognize them.
🌱 Beginner tier¶
Goal: Fluency. Get comfortable at the command line, fast at everyday tasks, and able to automate them with scripts.
At the end of this tier you can: move around any Linux system and find any file, config, or log; read and fix permissions; slice through gigabytes of logs with pipelines; edit files in vim over SSH; and write robust, shellcheck-clean bash scripts with options, logging, and error handling.
Level 0: First steps¶
| Chapter | Key concepts |
|---|---|
| What is Linux? | Kernel vs operating system · GNU · distributions and the Debian → Ubuntu → Mint family tree · desktop environments · open source licensing · where Linux runs |
| The terminal, shell, and prompt | Terminal emulator vs shell vs TTY · bash · anatomy of the prompt and of a command · how the shell finds commands (PATH, builtins, type) · exit status |
| Your first commands | pwd, ls, cd, echo, clear · absolute vs relative paths · ., .., ~, - · tab completion |
| Getting help | man (sections, synopsis notation, searching) · --help · apropos · help for builtins · info · tldr |
| The filesystem layout | The FHS · "everything is a file" · /etc, /var, /usr, /home, /tmp, /dev, /proc, /sys, /boot, /opt, /run · dotfiles |
| Users, groups, and sudo | UIDs and GIDs · /etc/passwd, /etc/group, /etc/shadow · root · sudo vs su · least privilege |
Capstone: Navigate confidently, and explain where config, logs, programs, and personal files live
Level 1: Command-line fluency¶
| Chapter | Key concepts |
|---|---|
| Working with files | cp, mv, rm, mkdir, touch · timestamps (atime/mtime/ctime) · cat, less, head, tail -f · file, stat, wc |
| Globbing and expansion | *, ?, [...] · brace expansion · tilde expansion · the order of shell expansions · globstar, nullglob, dotglob |
| Permissions | Reading ls -l · r/w/x on files vs directories · chmod (symbolic and octal) · chown · umask · setuid, setgid, and the sticky bit |
| Pipes and redirection | stdin/stdout/stderr · >, >>, 2>&1 · /dev/null · pipes · tee · here-docs · process substitution |
| Text processing | Regular expressions · grep, cut, sort, uniq, tr · sed · awk · xargs · paste, column, comm, diff |
| Finding files | find (tests, actions, -exec, -print0) · locate · which, whereis, type · fd |
| Shell productivity | History and ++ctrl+r++ · readline shortcuts · aliases and functions · .bashrc vs .profile · environment variables · PS1 |
| Archives and compression | tar in depth · gzip, bzip2, xz, zstd · zip · checksums with sha256sum · streaming tar over SSH |
| Vim essentials | Modes · motions · the operator + motion grammar · text objects · search and replace · .vimrc · nano as a fallback |
| tmux | Sessions, windows, panes · detach and reattach · surviving SSH disconnects · .tmux.conf |
Capstone: Answer real questions about a log file using only pipelines
Level 2: Shell scripting¶
| Chapter | Key concepts |
|---|---|
| Your first script | The shebang · chmod +x · ./script vs bash script vs source · ~/.local/bin · printf · read · shellcheck |
| Variables, quoting, and arrays | Quoting rules and word splitting · "$@" · parameter expansion · command substitution · arithmetic · indexed and associative arrays |
| Conditionals, loops, and functions | Exit codes · [ vs [[ · case · for/while/until · reading files line by line · functions and local |
| Error handling | set -euo pipefail and its gotchas · trap · mktemp · logging to stderr · debugging with set -x |
| Arguments and getopts | Positional parameters · shift · getopts · long options · usage messages and validation |
| Bash or Python? | Where bash stops being the right tool · the same task in both · calling the shell safely from Python |
Capstone: A backup script with options, logging, rotation, and dry-run mode that passes shellcheck
🔧 Intermediate tier¶
Goal: Understanding, then operations. Learn what Linux is doing underneath, and use that knowledge to run real servers.
At the end of this tier you can: explain the boot process and what happens when you run a command; read top, free, and df like a professional; manage packages, services, users, logs, disks, and firewalls; set up SSH, nginx, and TLS; and troubleshoot a broken server methodically.
Level 3: How Linux works¶
| Chapter | Key concepts |
|---|---|
| The boot process | UEFI/BIOS · GRUB · kernel and initramfs · systemd as PID 1 · targets · systemd-analyze |
| Processes and signals | fork + exec · process states · zombies and orphans · ps, top, htop · load average · signals · kill · job control · nice |
| Memory | Virtual memory · pages and the MMU · the page cache · free and "available" · swap · the OOM killer · RSS vs VSZ |
| Filesystems, inodes, and links | ext4, xfs, btrfs, tmpfs · the VFS · inodes · hard vs symbolic links · mounting and fstab · df vs du |
| Devices, /proc, and /sys | Block vs character devices · major/minor numbers · udev · /proc/PID/* · /sys · lspci, lsusb, lshw |
| Installing software | dpkg vs apt · repositories and signing keys · PPAs · snap, flatpak, AppImage · building from source · pip and venvs |
Capstone: Explain power-on to login screen, and keypress to ls output, naming every component
Level 4: System administration¶
| Chapter | Key concepts |
|---|---|
| systemd and journalctl | Units and unit types · systemctl · writing service units · drop-in overrides · dependencies · user services · journald |
| Scheduling tasks | cron syntax and pitfalls · anacron · at · systemd timers and OnCalendar · cron vs timers |
| Networking basics | TCP/IP layers · IPv4/CIDR · IPv6 · routing and NAT · TCP vs UDP · ports · DNS and systemd-resolved · ip, ss, dig, curl |
| Firewalls with ufw | netfilter → nftables → ufw · stateful filtering · default policies · rules · not locking yourself out |
| SSH | Host keys and TOFU · key authentication · ssh-agent · ~/.ssh/config · sshd hardening · scp/rsync · tunnels |
| Disks and backups | MBR vs GPT · partitioning · mkfs · mounting by UUID · SMART · the 3-2-1 rule · rsync, Timeshift, restic/borg |
| Troubleshooting | The USE method · runbooks: disk full, high CPU, out of memory, failing service, network unreachable, slow system |
| User management and PAM | useradd/usermod/userdel · password aging · /etc/shadow fields · visudo · PAM stacks · NSS and getent |
| Logging and logrotate | Kernel log, journald, rsyslog · facilities and severities · /var/log tour · logrotate · centralized logging |
| LVM and RAID | PV → VG → LV · growing filesystems online · snapshots · RAID levels · mdadm · RAID is not a backup |
| Web servers and TLS | HTTP · nginx server blocks · reverse proxying · TLS and certificates · openssl · Let's Encrypt |
Capstone: Build a secured server from scratch: SSH, firewall, a web app as a service, and nightly backups
🚀 Expert tier¶
Goal: Building. Write software that works with Linux, and master the technologies that run modern infrastructure.
At the end of this tier you can: trace any program's system calls; write servers that handle signals and run as hardened systemd services; build, link, package, and debug native code; build a container from raw kernel features; find performance bottlenecks with perf and eBPF; harden a system; and automate whole fleets with Ansible.
Level 5: Building for Linux¶
| Chapter | Key concepts |
|---|---|
| System calls and strace | User space vs kernel space · how a syscall happens · errno · the vDSO · strace for debugging |
| File descriptors in code | The fd table, open file descriptions, and inodes · open flags · buffering · dup2 · atomic writes · file locking |
| Processes and signals in code | fork/exec/wait in Python · a mini shell · subprocess done right · signal handlers · graceful shutdown |
| Pipes and sockets | IPC options · pipes and FIFOs · Unix and TCP sockets · handling many clients (threads, selectors, asyncio) · framing |
| Your program as a service | Service users · unit files · logging to journald · sd_notify · socket activation · sandboxing directives |
| Building software | Compile → link · ELF · static vs shared libraries · ld.so and ldd · make · cmake · building a .deb |
| Debugging | gdb · segfaults · core dumps and coredumpctl · pdb and py-spy · valgrind · AddressSanitizer |
Capstone: A multi-client network server with clean signal handling, running as a systemd service
Level 6: Expert topics¶
| Chapter | Key concepts |
|---|---|
| Containers from scratch | Namespaces · unshare/nsenter · pivot_root · cgroups v2 · overlayfs · how Docker, containerd, and runc map onto these |
| Performance analysis | USE and RED methods · the 60-second checklist · sar, iostat, pidstat · perf · flame graphs · eBPF with bcc and bpftrace |
| Security | Threat models · capabilities · AppArmor · seccomp · auditd · unattended upgrades · a hardening checklist |
| Kernel basics | Kernel subsystems · modules · sysctl · dmesg · taint · writing a hello-world kernel module |
| Advanced networking | A packet's path through the kernel · tcpdump · TCP states · network namespaces · nftables · policy routing · WireGuard |
| Virtualization | Hypervisors · KVM/QEMU/libvirt · virsh · cloud images and cloud-init · qcow2 · virtual networks |
| Docker and Podman | Images and layers · Dockerfiles · volumes · networks · compose · rootless Podman and Quadlet · image security |
| Automation with Ansible | Idempotency · inventories · playbooks · modules · templates · roles · vault · rebuilding the Level 4 server as code |
Capstone: Build a minimal container with unshare and cgroups, or build Linux From Scratch
Alongside every level¶
- Cheat sheets: one-page references to keep open while you practice.
- Glossary: every term defined in one place.
- Progress checklist: tick off chapters and capstones as you go.
- A "mistakes I made" log: write down every mistake and what it taught you. Rereading it is surprisingly effective.