FreeBSD
FreeBSD is one of the most popular branches of the BSD project, and one of the oldest open-source branches. It emphasizes security through design and offers a featureful packaging toolchain.
Contents
Installation
Grab an image from the official repositories. You likely will want either the -memstick.img or the mini-memstick.img images. The former is larger, the latter requires an internet conection during installation.
While ARM's aarch64 (a.k.a. armv8) is not a Tier 1 supported platform, pre-built images are available for all major versions of the Raspberry Pi. Just keep in mind that it isn't possible to upgrade the release in-place.
dd the image onto your device, and the rest will explain itself.
Administration
Packages
Binary packages are managed with the pkg(8) package manager.
To update installed packages, use pkg update && pkg upgrade.
To add a package such as HAProxy, use pkg install haproxy.
Ports
The ports project maintains a hierarchy of Makefiles to compile a much larger variety of software on FreeBSD.
Portsnap
The portsnap(8) exists to aid in maintaining ports. First, run portsnap fetch && portsnap extract. This downloads the hierarchy locally to /usr/ports.
To update the hierarchy, run portsnap fetch && portsnap update.
Git
Alternatively, clone the git(1) repository of the project.
pkg install git git clone https://git.FreeBSD.org/ports.git /usr/ports # or, clone a quarterly release git clone https://git.FreeBSD.org/ports.git -b 2020Q3 /usr/ports
Subsequently, to update the repository, run:
# if using a quarterly branch, switch to the updated one git -C /usr/ports switch 2020Q4 git -C /usr/ports pull
Subversion
Historically the project used a svn(1) repository. The process was:
pkg install subversion svn checkout https://svn.FreeBSD.org/ports/head /usr/ports
Querying Software
Use pkg version -l "<" to list software that is out of date.
Use pkg query --all '%o %n-%v %R' | grep -e 'unknown-repository' to list software that was installed via the ports project.
Services
FreeBSD uses BSD init for services. To enable SSH, edit /etc/rc.conf with:
sshd_enable="YES"
This enables the service. To start it immediately, run service sshd start.