5 years or so, before the current popularity of micro computers inspired by the Raspberry Pi project, I purchased the first version Soekris net4051 intending to setup a replacement router running FreeBSD and IPTables.

Soekris net4051

The net4051 has 3 10/100 NICS, a 100 Mhz AMD Elan processor, 48 MB SDRAM, a mini-pci socket for expansion boards, and a CompactFlash socket which it uses for storage, a serial port and came with the caveat that there was no support provided for anything besides the hardware, so you should know what your doing.

There is a lot more information online and Soekris has a list of resources to help you get started, but at the time I had to piece together what to do from a couple different write ups various people did. These were for other versions of the board so it took me a while to get mine going.

You can use a null modem cable to connect to the serial port on the Soekris and a program like minicom or putty since there is no video output. The boot offers a few basic configuration options for things like the uploading firmware and configuring the serial port speed.

There are two options for getting an OS installed. The first, if one is available, is to use dd to write the image of a working install or use PXE to install over the network.

I setup the DHCP with the PXE tie in on an old, retired desktop. The tricky part was setting the right options when compiling the kernel. Most of my initial when the FreeBSD installer handed off to the install on my CompactFlash card. Some of the options were pretty straightforward, like the CPU type and enabling vga through serial, but there were a lot of options that worked with other boards but not mine that I had to do a lot of trial and error before I finally got FreeBSD installed.

Later I ended up ditching the IPtables idea and using m0n0wall which conveniently had an image for the net4501. This worked great for years until the speed of my Internet connection got upgraded and the Elan processor couldn't keep up and I switched pfSense on a faster microatx mini pc.

I decided to install FreeBSD on my net4051 and use it as a ntp server, since its low power and virtual machines having issue with clock drift.

Another installation option that wasn't available to me before is a set of scripts called NanoBSD to build an image that can be written CompactFlash cards and USB drives and is used in some popular FreeBSD based projects like pfSense and FreeNAS.

NanoBSD has a few paticularly nice features. First the image has the OS installed on two seperate partitions, in case an upgrade goes bad, you can always boot to the unchanged partition. Secondly, since CompactFlash cards are rated for a limited number of erase/write cycles for any block to reduce the number of writes the parition is mounted Read Only and the image includes some scripts for changing some common settings.

You still need another box with FreeBSD to compile the kernel and run the script which includes your customized kernel in the image. Since at the time I didn't see any examples for FreeBSD 10 I put my script config and kernel config files on github..

I still ran into a few issues getting the script and a working kernel. For instance, somewhat counter intuitively you still need device vga in the kernel.

NET4501 is the kernel config file and myconfig.nano is the configuration for the NanoBSD script. Also if anyone with a net4501 wants I can post the CompactFlash card image.