_._
e/` '\,.eo-__. lin0 (linux zero) is a
'/.' .|_/e--. '\e super minimal source
,;-o-.'|` //e e\ |` based linux meta
./' ,e0\o //-o.__. ,. \' distribution, aimed
./` /' -/e e\o_/___. \|' at power users or
e|`/`,o-o\ /v-/e_. '\. \. minimalism enthusiasts
'/ ._e._, \ // \` \e |'
'|'"/ \.V | `|' `|'|` it was born from
`|e`|' | # / `|. |`|` exercises in how
e|` ` /\- ,\ e|' '\` minimal a linux system
'` _/ / / \ ` `|' can get.
.,wW'^^^//;^-^;^;w_
lin0 (linux zero) is a super minimal source-based Linux meta-distribution, aimed at power users or minimalism enthusiasts. It was born from exercises in seeing just how minimal a Linux system can get.
The distro features a barebones system built from scratch:
- Linux kernel (no initrd)
musl
libcmksh
(Myr Korn Shell)tcc
(Tiny C Compiler)toybox
- Simple shell-script-based init system
v0.0.2
- Improved compiler toolchain
v0.0.1
- Initial release
- Adjust kernel build:
- Build HP EliteDesk with firmware built-in
- Make system compile itself
- Improve RPi 3B+ rootfs
- Support mod loading and daemons in init script
- Improve issue file or add a login program like
ly
- Create man pages
- Support RPi Zero W
- Support RPi Compute Module 5
- Add lin0 to
fetch
et al. commands
We provide system images in multiple formats so you can get started without building everything from scratch.
These are platform-targeted rootfs tarballs (no kernel):
v0.0.2
x86_64
(3.3 MB)
v0.0.1
arm64
(3.0 MB)
HP EliteDesk 800 G1
(13 MB)Pinebook Pro
(13 MB)Raspberry Pi 3B+
(26 MB)
We also provide Docker images for quick testing or compiling with musl and tcc:
π bleemayer/lin0
on Docker Hub
docker pull bleemayer/lin0:latest
Supported architectures match the tarballs.
Clone this repo:
git clone https://terminal.pink/lin0
Then follow these steps:
-
Copy your kernel config file to:
configs/MODEL-linux.config
-
Build the root filesystem with:
platform=PLATFORM ./make.sh
Replace
PLATFORM
with the name of your target system (see configs/ folder). -
Copy the generated rootfs to your target system.
Extra packages in the pkg/
folder will be copied to /home/root/
on the target.
If you downloaded one of the tarballs, you can install lin0 as follows:
-
Extract the root filesystem to your destination partition:
tar -xf rootfs-ARCH.tar.xz -C /mnt/your-root
Replace
ARCH
with the appropriate architecture (e.g., x86_64, arm64). -
Copy your kernel to the boot folder:
cp path/to/your/kernel /mnt/your-root/boot/
(This could be a bzImage, Image, or zImage, depending on your platform.)
After successfully booting lin0, you'll be greeted with a login prompt.
- Username:
root
- Password:
lin0
lin0 provides a minimal base system β to make it usable, you'll need to do a few things manually:
Create a simple /etc/resolv.conf
:
echo "nameserver 1.1.1.1" > /etc/resolv.conf
Replace 1.1.1.1 with your preferred DNS server if needed.
You can add users manually (note: toybox may provide a limited adduser):
adduser myuser
passwd myuser
But I recommend editing the shells file and creating the home folder.
passwd
Install extra software as required β for example, to connect to Wi-Fi install wpa_supplicant and its dependencies.
lin0 does not come with systemd or other init frameworks β it uses a basic shell scriptβbased init.
You are expected to customize your system configuration.
Think of lin0 as a starting point: it's minimal by design.
Welcome to lin0 β now you build the rest.
Email the mailing list:
lin0 AT terminal DOT pink
Wiki coming soon.
This project is licensed under the BSD 2-Clause License. (C) 2023-2025 Brian Mayer