Join WhatsApp
Join Now
Join Telegram
Join Now

Using UnitedKernel to Bootstrap a Minimal Linux System from Scratch

Avatar for Noman Mohammad

By Noman Mohammad

Published on:

Your rating ?

Build a Tiny Linux That Boots in 2 Seconds

I still remember the first time I deleted a desktop environment and watched half my system vanish.
The package manager yelled “removing 1,432 dependencies.”
My Wi-Fi died, my fonts disappeared, and the machine never booted again.
That day taught me a lesson: most Linux installs carry around more baggage than a cross-country flight.

This post shows how I fixed that.
We’ll build a Linux system from zero—no systemd, no snap, no 50-font packages—just the parts you actually need.
Think of it as making your own sandwich instead of buying the deli’s triple-decker with everything on it.

Why Go Minimal?

Big distros are like moving vans: roomy, but they guzzle gas.
A minimal system is the motorcycle: small engine, still gets you there, and you feel every turn.

  • Faster boots. My last build went from GRUB to shell in 1.8 seconds on a cheap laptop.
  • Smaller attack surface. Fewer packages, fewer bugs.
  • Absolute control. You choose each component. No mystery daemons.

What You Need

Nothing fancy—just a normal Linux box with basic build tools.

  • gcc, make, wget
  • about 2 GB of free disk space
  • 30 minutes of patience

Ready? Let’s cook.

Step 1 – Grab the Ingredients

mkdir ~/tiny && cd ~/tiny
wget https://kernel.org/pub/linux/kernel/v6.x/linux-6.10.tar.xz
wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2

Step 2 – Build the Kernel

tar -xf linux-6.10.tar.xz
cd linux-6.10
make defconfig
make menuconfig

In the blue menu:

  • turn off everything you don’t need (Bluetooth, sound cards, exotic filesystems)
  • turn on initramfs support so we can boot from RAM
make -j$(nproc)

Go grab coffee; this takes 5–10 minutes.

Step 3 – Build BusyBox (Your Userland)

cd ../
tar -xjf busybox-1.36.1.tar.bz2
cd busybox-1.36.1
make defconfig
make menuconfig
# Check “Build static binary”
make -j$(nproc)
make install

BusyBox drops everything into _install. That’s our tiny root folder.

Step 4 – Make a Root Filesystem

cd _install
mkdir -p proc sys dev etc
echo 'root::0:0:root:/root:/bin/sh' > etc/passwd
cat > etc/inittab <

We need two fake devices:

sudo mknod dev/console c 5 1
sudo mknod dev/null c 1 3

Step 5 – Wrap It into an Initramfs

find . | cpio -H newc -o | gzip > ../initramfs.cpio.gz

Step 6 – Boot with QEMU (Safe Test Drive)

cd ../
qemu-system-x86_64 \
  -kernel linux-6.10/arch/x86/boot/bzImage \
  -initrd initramfs.cpio.gz \
  -append "console=ttyS0" \
  -nographic

See the shell prompt? That’s your baby.
Type ls. Notice how ls itself is BusyBox.
The whole rootfs is about 2.1 MB.

Customize Later

Once you’re happy:

  • Add dropbear for SSH (tiny SSH server)
  • Compile musl for static C programs
  • Try ARM by installing arm-linux-gnueabihf-gcc

Common Questions

“Will it break?”
If you boot with QEMU, nothing on your real machine changes. Rebooting the host brings back the old system—no harm done.

“Can I install packages later?”
Yes. Static binaries work anywhere. For dynamic ones, build musl and add apk or compile what you need.

“Is this 2025-proof?”
Kernel 6.10 already has new security hooks and better power saving. Re-build once a year and you’re golden.

That’s it. You just built a Linux that boots faster than most televisions turn on.
Once you taste that speed, bulky distros feel like dial-up internet.
Enjoy the ride—and maybe delete a few old ISOs while you’re at it.

Leave a Comment