Will's avatar

⬅️ See more posts

Taking FreeBSD for a spin

29 October 2021 (5 minute read)

🔮 This post is also available via Gemini.

100daystooffload technology

💯 100 Days to Offload

This article is one of a series of posts I have written for the 100 Days to Offload challenge. Disclaimer: The challenge focuses on writing frequency rather than quality, and so posts may not always be fully planned out!

View other posts in this series.

Background

I’ve recently noticed (and read) more and more posts discussing *BSD systems. Creations like the new (and excellent) OpenBSD Webzine and blogs (such as Rubenerd’s and Solene’s) do a great job in raising awareness of the family of operating systems.

I’m pretty familiar and comfortable with Linux, having spent many years using it as a daily driver (I am back on macOS full-time right now). Whilst UNIX systems share a lot of similarities, I’ve never properly used a BSD system before.

Research

My interest was piqued, and I wanted to try one out for a few days. I did some research for good jumping-off points.

From what I read, FreeBSD seemed the best for someone coming from the outside world for the first time, due to its (generally) wider compatibility with known software. NetBSD is designed to work well on a wide range of architectures and platforms, and OpenBSD has a strong focus on “correctness” and security. It’s also worth checking out the other BSD operating systems for a wider understanding too.

Installation

I thought I’d get going by installing FreeBSD and trying it out for a few days. Unfortunately I did not have any suitable hardware to hand for the installation, as I currently only have a MacBook Pro.

In the end I opted to just use VirtualBox - it wouldn’t give the “baremetal” experience, but it’d be close enough to get the feel! I downloaded an image from the download page and it ran without problems.

During initial experimentation I ran out of storage space on the primary volume quite quickly, and so I recommend extending the virtual disk’s size (which can be done from within VirtualBox).

Impressions

Once installed, my initial impressions were great. The system was super easy to set-up and configure. Everything is logically organised and the documentation is fantastic.

I was able to easily setup a graphical envivonment by installing X, display managers and desktop environments. These all worked without a hitch and with simple edits to /etc/rc.conf to get things starting properly at boot-time.

I could install Firefox without problems, and sound (e.g. from YouTube videos) seemed to work out of the box. Development tools, such as Node, were also a simple pkg install away.

Hats off to the FreeBSD community for creating such a rich set of available packages and for all of the hard work in porting these from other platforms. The overall set-up and usage was simpler, better documented, and more logical than comparative Linux systems, such as Arch (which is still my go-to Linux distro).

The entire system almost feels like a pleasure to use and administer, and I look forward to learning and trying more.

Pitfalls

This may be more related to VirtualBox limitations than FreeBSD itself, but I was unable to route USB devices (such as microphone and webcam) through to applications on FreeBSD. For example, in order to use Google Meet or the Zoom web client. I’d like to try these again on a non-virtualised system when I get the chance.

Docker is a known missing-entity on FreeBSD, and so I would not be able to build images and run containers directly. However, the concept of jails seem super interesting and I would like to investigate these further.

Aside from these minor things, there is no reason why FreeBSD couldn’t become an excellent daily driver for my work in particular.

Worth noting

A few other bits worth mentioning are below.

Documentation

As I’ve already alluded to, the documentation for FreeBSD (and the equivalent for other BSD operating systems too) is fantastic.

The handbook contained all of the answers I needed when spending my week with the system, and it also makes generally interesting reading too!

There are also very well-attended forums, on which your answer is probably already available without needing to ask the community an additional question.

Distribution

Unlike Linux distributions, which typically ship with a separate kernel and a number of independent packages, FreeBSD (and other BSD systems) is installed as a base system containing kernel, build tools and related software all together. This makes updates and maintenance less fragile and more predictable.

Ports system

FreeBSD offers two (primary) ways to get new software installed on your system - ports and packages.

The FreeBSD Ports Collection provides the files and resources required to build the software from source (thus allowing pre-compilation tweaks, if this is of interest) and packages allow the user to directly install pre-built binaries.

Since larger pieces of softare can take a long time to build, many new users - myself included - opt for installing packages directly. Advanced users and organisations may even set up their own server and ports collection to automatically pre-compile packages to their own specification.

General

Seasoned FreeBSD users often describe their systems as “unsurprising” - in a good way. Things are just logical, they don’t unexpectedly break, the package manager doesn’t introduce conflicts, and everything is stored where you expect it to be.

One of the principles followed by FreeBSD developers is the Principle of Least Astonishment (POLA), defined as the following:

As FreeBSD evolves, changes visible to the user should be kept as unsurprising as possible. For example, arbitrarily rearranging system startup variables in /etc/defaults/rc.conf violates POLA. Developers consider POLA when contemplating user-visible system changes.

  • FreeBSD Handbook Glossary

Going forward

My next steps are to get hold of some older/cheaper (but well-supported) hardware to properly try out FreeBSD on a more permanent basis. I may also spin up a VPS in the cloud running FreeBSD (Digital Ocean offers these) to try running a couple of my lower-impact services through jails.

I also noticed that FreeBSD offers PINE64 images on their downloads page - I’m intrugued to see what my Pinephone thinks about the system too.

Beyond this, I’d like to also try OpenBSD, and to more fully understand the differences. The Why OpenBSD Rocks website has some interesting concepts I’d like to read through.

✉️ You can reply to this post via email.

📲 Subscribe to updates

If you would like to read more posts like this, then you can subscribe via RSS.