10 Jan 2016, 11:32

Freebsd on Raspberry Pi 2 and Golang


FreeBSD is now fully supported on the Raspberry Pi2, makes it a fun small computer to experiment with BSD.

If you have a Raspberry Pi 1, you can simply install 10.2-RELEASE image.

For Raspberry Pi 2, you need 11.0-CURRENT which is the development branch, images can be found here.

dd the image as usual to a SD card, it will be auto resized at first boot. (See growfs_enable="YES") in rc.conf.

CPU frequency

To enable on demand cpu overclocking (ranging from 600 to 1000MHz), enable powerd by adding this to rc.conf.

powerd_flags="-a hadp"

Production speed

FreeBSD CURRENT is the development version, some debugging tools may slow down your system.

As stated in UPDATING if you are running CURRENT:

ln -s 'abort:false,junk:false' /etc/malloc.conf


Depending on your wifi dongle this may be different, for RealTek devices add an entry to /etc/wpa_supplicant.conf:


And this to /etc/rc.conf:

ifconfig_wlan0="WPA SYNCDHCP"

And this to /boot/loader.conf


And type service netif restart.

Installing the ports

The ports are a long list of third parties software you can install on your system, first synchronize the ports tree:

portsnap fetch
portsnap extract

It’s highly recommend you install portmaster to keep your ports updated:

cd /usr/ports/ports-mgmt/portmaster/
make install clean

To later update your ports tree and ports:

portsnap fetch update
portmaster -a

To compile and install a port simply go to its directory and run make install clean.

Keeping the sources updated (optional)

All the FreeBSD sources are available and can be used to recompile the whole system.

Subversion needs some space in /tmp to complete this task, edit /etc/fstab to grow tmpfs to at least 70M the reboot:

tmpfs /tmp tmpfs rw,mode=1777,size=70m 0 0
cd /usr/ports/security/ca_root_nss
make install clean
svnlite checkout https://svn.FreeBSD.org/base/head /usr/src

To keep it in sync later, just type:

cd /usr/src
svnlite update

Keeping your FreeBSD updated can be achieved by recompiling the system aka make world, note that this could take a long time on a Raspberry Pi but still doable (remember to use make -j 4 on RPi2).

Installing Go (optional)

If you are into Go and need a recent version, first you need to compile Go 1.4 as a bootstraper (note that you also need to install git):

cd /usr/ports/lang/go14
make install clean

Then you can compile a more recent Go, for example using /usr/local/go:

cd /usr/local
git clone https://go.googlesource.com/go
cd go/src
env TMPDIR=/var/tmp GOARM=7 GOROOT_BOOTSTRAP=/usr/local/go14 ./all.bash

Add /usr/local/go/bin to your PATH.