# GoBox
solo · mar 2026
Go, Linux namespaces, cgroups v2, OverlayFS, CRIU
A container runtime written from scratch in Go, as an extra project for my OS class.
## what i built
- PID, UTS, mount and network namespaces; cgroups v2 limits; overlayfs layers; veth networking.
- Image pulls straight from Docker Hub, port forwarding, CRIU checkpoint/restore.
- run, ps, stop, rm, logs, exec and cp.
## what was hard
/proc. I mounted /proc without a mount namespace and overwrote the host's /proc. A dumb mistake: I was running on two hours of sleep.
CRIU. Checkpoint/restore needed five separate fixes, ending with building CRIU from source.
## what i learned
How much of "a container" is plain Linux: the /proc/self/exe re-exec trick, veth pairs, OCI digests.
## what happened
- 30 commits in 9 days, written by hand, with a day-by-day diary.
# this site is a shell: open it here