Learn systems
by building them.
Go below the abstractions. Build a container runtime, follow a packet, and write code that talks to hardware.
Real code. A real Linux machine.
Right here in your browser.
Containerfile
FROM minimal-rootfs COPY hello /hello CMD ["/hello"]
An image is a filesystem.
/
├── bin/ the tools
│ └── busybox
├── hello your program
└── proc/ the kernel’s view
root@lab:/work# chroot rootfs /hello
Hello from the other side.Lesson preview
Hello from the other side.Lesson preview
Inspect the primitive. Then build the abstraction.
Choose a system to build
Small exercises. Visible consequences.
Containers
Start hereBuild a container runtime from Linux primitives.
Root filesystems → namespaces → isolationTCP & networking
Build a protocol. Watch every packet.
Raw bytes → packet parsing → controlled networksLinux drivers
Program hardware that lives in your browser.
MMIO registers → device control → instrumentationA disposable machine.
A lasting understanding.
Start a small RISC-V machine, boot Linux, and get root access. Your code runs in the browser’s sandbox. Restart the machine whenever you need a clean slate.
Look inside the environment- Your browserEditor · terminal · instruments
- WebAssembly machineTinyEMU · RISC-V 64-bit
- Linux + your codeReal processes · real syscalls