Beaglebone Black still going strong
The last few weeks I saw some traffic on the Fediverse mentioning the Beaglebone Black boards. As I am very happy with my old-but-still-running Beaglebone Black boards, it seemed a nice subject for a blog post.
At the time I bought the Beaglebone Black (around 2013~2014), it was marketed as a "Rapsberry Pi killer", mostly because it came with 512 Mb RAM memory, while --at that time-- the Rapsberry Pi came with 256 Mb.
Not much later I bought a second one. Around 2015 I wrote an article about the Beaglebone Black that was published in the Dutch Linux Magazine.
Beaglebone Black and OpenBSD
The Beaglebone Black supported running OpenBSD right from the start, this was not the case with the Raspberry Pi. Fortunately, today it is easier to install OpenBSD on it than in the time of the linked article from Ted Unangst.
OpenBSD's brilliant MFS mount option
Boards like the Beaglebone Black and the Raspberry Pi typically use a MicroSD card for the root file system. To prevent early and unnecessary wear of the MicroSD card, the admin has to make sure to keep the number of write actions to a minimum. One of the options to do this is to set up memory file systems (a.k.a. RAM-disk) for some directories.
OpenBSD offers the brilliant option to mount a memory file system with
a so called prototype,
mount -P=<path to prototype>.
First, you set up a directory with the prototype. I use sub directories under
/proto for this, like
Populate this directory with the desired files, like the dotfiles for
in the user's home-directory, or
/proto/var/log for the
files and directories to be mounted in the
You can even use a file tree (so, with one or more sub directories and
also populated with files) for this, like e.g. a
.w3m sub directory
nested in a
Now, add a line to
/etc/fstab, like this:
swap /home/<user> mfs rw,nosuid,noexec,-P=/proto/home/<user>,-s=8192 0 0
At boot time, the memory file system is created and populated with the files from the specific proto directory.
This works wonderful!
Both the Beaglebone Black boards are still running in my local home network. They have been running OpenBSD rock solid for years.
One Beaglebone Black is the workhorse in my network. It sits in my DMZ and runs the following services:
- OpenBSD relayd: redirects web traffic for my Pleroma server to another board.
- OpenBSD httpd: web server that runs this website and my awkiakwi peronal wiki.
- Prosody XMMP jabber server (private Jabber server for small group of friends)
- Gophernicus Gopher server
- vger Gemini server
- Gitolite Git server (private, for small group of friends)
- Taskd Taskwarrior synchronisation server (no longer in use since my retirement May 1st 2022)
The OpenBSD relayd server is running since I started my Pleroma server (about July 2021), and my Vger instance is only a few weeks up. The other services have been running for many years.
OpenBSD is a great OS for the Beaglebone Black. It is nice light weight, even on this board it usually shows a low load average somewhere between 0.00 and 0.10.
DHCP and DNS server
The other Beaglebone Black is not so packed with services.
It runs the following services:
- OpenBSD dhcpd: provides IP-addresses to the local network
- OpenBSD unbound: provides an ad blocking DNS server
In the past, the second Beaglebone Black has functioned for years as my headless OpenBSD shell server. Several TUI applications (text mode applications) ran on this machine, which I used over SSH and Tmux, like the mcabber Jabber client with PGP and OTR support, the irssi IRC client, the Lynx and w3m TUI web browsers, and so on.
Having a shell server is a great solution. You can remote log in over SSH from any machine, attach to Tmux and you are right in your old faithful work environment. I use several laptops so from any of those I can reach my working environment.
Currently I use a FreeBSD jail as a shell server.
The Beaglebone Black is a great board that has stand the test of time. It's design dates back to 2013, but the board is still useful today.
I hope and trust that my boards will keep running for several years.