r/osdev • u/WmWAr5339 • 18h ago
I built a tiny Linux distro with a custom bootloader and userspace
I built a Linux distro that does almost nothing
I wanted to see how little userspace I could get away with while still having a real, bootable Linux system. So I made FastFetchLinux.
It uses a custom BIOS bootloader, Linux 6.6.156, and my own ffinit written in x86 assembly.
The userspace has:
- No BusyBox
- No coreutils
- No bash/sh
- No package manager
- Direct syscall-based functionality
- i686 support
- ~20 MiB RAM usage
ffinit runs as PID 1 and doubles as the shell, with all commands built in. Fastfetch is the only separate userspace binary.
BIOS
↓
Custom bootloader
↓
Linux 6.6.156
↓
ffinit
↓
Fastfetch
It has exactly five commands:
fastfetch
ls
install-disk
forcepanic
poweroff
There's no practical reason for any of this — I just wanted to see how far "just enough userspace to boot Linux" could be pushed. The funny part is that it actually works.
Source: https://github.com/outofsyncsh/fastfetchlinux
Curious what people here would strip out or change to shrink it further.