home Page History

Last edited by Brett Neumeier

Free Server Appliance: transforming a headless single-purpose device into a general-purpose computer.

This project is the git repository for our FreeSA work in progress. There are a variety of starting points for this wiki!

For some time, this project has largely been quiescent, as we turned our main focus to Cross-Built Linux (also hosted on this site) -- instructions for creating a full general-purpose GNU/Linux system from source code, starting from a computer with a different CPU architecture than the target computer, written in such a way that they can be turned into scripts that execute the full process in an as-close-as-possible-fully automated way, or into a book that can be read and hopefully understood. This is the bulk of what the FreeSA project was always intended to do; CBL is simply not focused on building server appliances.

We're now starting to revive the FreeSA project per se as we are close to completing an initial version of CBL.

Our goal is to have a completely free GNU/Linux operating system installed on small, inexpensive hardware, allowing us to use it not only as a fully customizable firewall, wireless access point and server appliance (capable of Advanced Routing & Traffic Control), but also as a general purpose computer.

We would like to set up the distribution so that it allows you to have a simple, easy-to-transport server appliance that provides firewall, DNS, email (SMTP and IMAP), DHCP, VoIP, Jabber, and whatever other services you need; so that when you are in a hotel room somewhere you can still rely on the server infrastructure that you're comfortable with. And you shouldn't have to stop downloading files just because you want to make a quick VoIP call. And maybe you would like to share your wireless with your neighbors but have all of your traffic go first? Why not?

We would like to be able to host all necessary development tools on this system, so that we can bootstrap a new complete linux distribution from it rather than needing to use a cross-toolchain.

When we started the FreeSA project, the Asus WL-700gE seemed to have the most features for price and size on the market. So our initial efforts focused on that hardware. Since that product was end-of-lifed some time ago, we are now no longer certain of what hardware platform we should focus on.

All of the software in our server appliance is built from source code, so that we can be completely confident that everything is built in a way that we approve of.

We would like to provide instructions on how to do this to anyone who is interested, so that anyone else with $240 (or so) can roll their own custom GNU/Linux distribution for a WL-700gE (or whatever similar hardware becomes available in the future).

We would like to set up the flash memory of the box so that it only contains a boot loader, implemented in Linux. We would like this boot loader to be approximately as flexible as the Netwinder's "Nettrom" BIOS: we would like the boot loader to present options (perhaps using a serial console or telnet over one of the network ports) that permit the runtime kernel to be loaded from a disk partition or over TFTP; and permit the root filesystem to be mounted from an (internal or USB-external) disk partition, or from an NFS server. (This could be considered similar to LinuxBIOS as well.) See LinuxBootLoader for notes about this.

With just a bootloader in flash, one can easily experiment with new kernel versions without worrying about re-flashing the box, or potentially bricking it. In fact we would probably never have to write to the flash at all, except perhaps to write new default boot options to NVRAM.

As of late 2017, there is a new device that we're starting to use as a FreeSA target: the GnuBee Personal Cloud. Unfortunately, the PC1 doesn't suit the original FreeSA vision, since it has no case, can't easily be packed into a suitcase, and doesn't have wireless built-in. But it will work really well as a firewall, application server, and/or storage server.


Last edited by Brett Neumeier