FreeBSD was developed with server use in mind. It’s rock solid and ultra stable, and therefore perfectly suited to be used where reliability is required. Since FreeBSD is a flexible operating system, it can be easily adapted for other uses as well; one of which is the use on embedded systems or systems requiring a stable but small-footprint OS.
There are three such small bare-bones versions of FreeBSD (as far as i’m aware): TinyBSD, NanoBSD and miniBSD.
TinyBSD is a set of tools and shell scripts, part of the FreeBSD base system (/usr/src/tools/tools), designed to make the development of embedded systems based on FreeBSD as easy as possible. The TinyBSD script can be used on FreeBSD 5.x, 6.x and 7.x and 8-CURRENT to created a mini FreeBSD version.
The installed FreeBSD generates an embedded system image which is about 20MB in size and is a very generic approach. It comes with support for a number of wired NIC support and also the most popular wireless support, divert, bridge, dummynet, firewall, etc; and CPU_ELAN (for soekris devices). If the “generic” system gets tightened up the final result can be as low as an 8MB embedded system.
The process (though not graphical) can in a way be compared to nLite, a freeware application that lets users customise and remove components from their Windows installation CD and create a new customised, slimmed down ISO.
- Developers: Jean Milanez Melo and Patrick Tracanelli
- Website: http://www.tinybsd.org
NanoBSD is a tool that creates a fully working FreeBSD system image for embedded applications, suitable for use on a Compact Flash card (or other mass storage media). The objective is to get a FreeBSD-like environment running on a CF-card with no extras by stripping down and customising FreeBSD.
NanoBSD is created by compiling it from the FreeBSD source tree (/usr/src/tools/tools/nanobsd) and it works with FreeBSD 6.x, 7.x and 8.0-CURRENT releases.
NanoBSD can be used to build specialised install images, designed for easy installation and maintenance of systems commonly called “computer appliances”. Computer appliances, e.g. routers and firewalls, have their hardware and software bundled in the product, which means all applications are pre-installed. The appliance is plugged into an existing network and can begin working (almost) immediately.
One of the advantages of NanoBSD is that it’s part of the FreeBSD base system and it is easy to create, customise and use.
The features of NanoBSD include:
- Ports and packages work as in FreeBSD. Every single application can be installed and used in a NanoBSD image, the same way as in FreeBSD.
- No missing functionality. If it is possible to do something with FreeBSD, it is possible to do the same thing with NanoBSD, unless the specific feature or features were explicitly removed from the NanoBSD image when it was created.
- Everything is read-only at run-time
- Easy to build and customise. Making use of just one shell script and one configuration file it is possible to build reduced and customized images satisfying any arbitrary set of requirements.
- Developer: Poul-Henning Kamp
- Backround information: PDF presentation
- Website: http://www.freebsd.org/doc/en_US.ISO8859-1/articles/nanobsd/article.html
miniBSD is a project developping a set of scripts that shrinks a running FreeBSD system to a small sized distribution suited for mass storage media, such as USB memory sticks and CF cards.
The size of the distribution is generally about 12-15Mb and contains everything one needs to run a FreeBSD system comfortably.
The scripts collect the necessary binaries, libraries, configuration files on a running FreeBSD system (4.x, 5.x and 6.x) and creates a disk image that can be saved on a CF card or USB memory stick.
The project started with the goal to create a FreeBSD system that could be fitted on a small compact flash without loosing too much of a full FreeBSD system. miniBSD is in a way half way between TinyBSD and NanoBSD.
Being small and fully featured makes miniBSD an optimal choice to develop routers, bridges, firewalls and vpn gateways.