smolBSD logo

smolBSD

build your own minimal BSD UNIX system

GitHub Get Started

About

smolBSD is a meta-operating system built on top of NetBSD. It lets you compose your own UNIX environment — from a single-purpose microservice system to a fully-custom OS image — in just a few minutes.

The smolBSD environment uses the netbsd-MICROVM kernel as its foundation, leveraging the same portable, reliable codebase that powers NetBSD itself. You decide what to include — sshd, httpd, or your own service — and smolBSD builds a coherent, minimal, bootable image ready to run anywhere.

$ bmake SERVICE=bozohttpd build
➡️   starting the builder microvm
➡️   host filesystem mounted on /mnt
➡️   fetching sets
➡️   creating root filesystem (512M)
done ✅ image ready: bozohttpd-amd64.img
    

Why smolBSD

Build BSD systems like you build software — fast, reproducible, and minimal.

🧩 Composable

Pick only the components you need — from kernel to services.

⚙️ Reproducible

Every build is deterministic, portable, and easy to version-control.

🚀 Instant Boot

Powered by netbsd-MICROVM — boot to service in milliseconds.

💻 Universal

Runs anywhere QEMU or Firecracker runs — cloud, CI, edge, or laptop.

Quick Start

Build and boot your own BSD system in seconds:

$ git clone https://github.com/NetBSDfr/smolBSD
$ cd smolBSD
$ bmake SERVICE=sshd build
➡️   starting the builder microvm
➡️   fetching sets
➡️   creating root filesystem (512M)
done ✅ image ready: sshd-amd64.img
➡️   killing the builder microvm

$ ./startnb.sh -f etc/sshd.conf 
[   1.0092096] kernel boot time: 14ms
Starting sshd.
Server listening on :: port 22.
Server listening on 0.0.0.0 port 22.
    
Download

Examples

bozohttpd

A complete static web server in a few megabytes. smolBSD builds a minimal system with bozohttpd preconfigured and ready to serve content immediately on boot.

$ bmake SERVICE=bozohttpd build
➡️   starting the builder microvm
➡️   fetching sets
➡️   creating root filesystem (512M)
done ✅ image ready: bozohttpd-amd64.img

$ ./startnb.sh -f etc/bozohttpd.conf
[   1.001231] kernel boot time: 10ms
Starting bozohttpd on :80
listening on 0.0.0.0:80
      

nbakery

A lightweight build and image creation service based entirely on NetBSD tools. The nbakery image gives you a taste of a preconfigured NetBSD environment with all the well known tools.

$ bmake SERVICE=nbakery build
➡️   starting the builder microvm
➡️   fetching sets
➡️   creating root filesystem (512M)
done ✅ image ready: nbakery-amd64.img

$ ./startnb.sh -f etc/nbakery.conf
[   1.008374] kernel boot time: 11ms

Welcome to the (n)bakery! 🧁

💪 doas  to run command as root
📦 pkgin to manage packages
🚪 exit to cleanly shutdown, ^a-x to exit qemu
🪟 you are inside a tmux with prefix ^q
      

nitrosshd

A minimal secure shell server started with nitro, designed to launch instantly and provide remote access with zero unnecessary services. Ideal for an SSH bouncer.

$ bmake SERVICE=nitrosshd build
➡️   starting the builder microvm
➡️   fetching sets
➡️   creating root filesystem (512M)
done ✅ image ready: nitrosshd-amd64.img

$ ./startnb.sh -f etc/sshd.conf
[   1.011598] kernel boot time: 12ms
Created tmpfs /dev (1835008 byte, 3552 inodes)
Starting sshd.
Server listening on :: port 22.
Server listening on 0.0.0.0 port 22.
      

Community

smolBSD is an independent project built on top of NetBSD. Join us, share your micro-systems, or contribute new services and build recipes.

GitHub Mastodon Email