Wave Linux
Minimal Linux distribution built from torvalds/linux + uutils/coreutils. Build script fetches the kernel, compiles BusyBox and ~100 Rust coreutils with musl static linking, and packages a bootable image.
By Aditya Singh Khichi, Full Stack Engineer, New Delhi, India.
Tech stack: Rust, Linux Kernel, BusyBox, musl, uutils, Shell.
Rust coreutils statically linked: 100+
Problem
'Build your own minimal Linux' tutorials skip the actually-hard parts: how do you pin a kernel version, fetch the source, configure it for x86_64-musl, and link a Rust-rewritten coreutils into a bootable image without inheriting a distro's assumptions? The knowledge is scattered across 17 stale blog posts. There wasn't a single repo that does it end-to-end.
Approach
One Python build script (build-minimal.py) drives the whole pipeline: download a specific Linux kernel tarball, extract it, configure for x86_64, compile. Same for BusyBox. Then drive cargo to build ~100 Rust uutils crates against x86_64-unknown-linux-musl with --release. Musl static linking avoids the 'glibc isn't on the target system' trap. The output is a kernel image plus a userland that runs on top of it with zero host-system dependencies.
Outcome
A reproducible build that takes a fresh Ubuntu host and produces a bootable minimal Linux with Rust coreutils. The repo doubles as a teaching artifact: it makes concrete what's actually inside the Linux you're running, without the abstraction blanket of a distro's package manager. Useful for anyone who wants to understand the boundary between kernel and userland from first principles.
Live link: https://github.com/Raghav-45/wave-linux