Fair warning, this post may get a bit long, maybe skip to the TL;DR
A brief history
It was the late 90’s, early 2000’s that I first got a taste for *nix. At that time it came in the form of two distributions of Linux. One of them was a version of Mandrake titled “Linux4Win” that basically allowed you to dual-boot with a Windows system, without actually having to re-partition your disk. The second was a live CD version of SUSE.
Neither were incredibly remarkable, as some important hardware (i.e. my PCI DSL modem) didn’t seem to work with it. That made these systems fun to play around with, but ultimately mostly useless for me.
Around the 2003/2004 time frame, I was introduced to FreeBSD. I should note that I was aware of it for at least a few years before that, however I didn’t actually get a chance to use it in person until later. So it was in this window, the 03/04 window, that I started using FreeBSD on a Compaq Presario, with a Pentium II processor, 64MB of RAM and 200MB hard drive. It was very under-powered even by the standards of the day, but none the less it was a great learning experience.
Around that same time, I had many other server systems I acquired through my job at the time (I was a hardware engineer at a data center) that I was running various versions of Linux on, including Debian, Gentoo, and Fedora.
In 2007 I bought my first Mac, a black MacBook (back when the black model was $200 more than the white, for no other reason than it was a different color). Technically, Mac OS X is a certified UNIX, so I was still working in a *nix environment.
In 2008, I bought a Sun Microsystems 1U rack mount server, which I originally wanted to run Solaris 10 on. However, for one reason or another, I couldn’t get Solaris working just right (I seem to remember there being issues with the fact that the Intel Xeon processors on board were 32 bit, though I don’t know why exactly that would have caused problems). So I went back to FreeBSD, operating this server until 2011. I even bought a used Dell desktop PC and had FreeBSD running on it.
In 2019 I decided I would buy a refurbished Lenovo T420 on eBay with the express purpose of using it as a Linux machine. I started with Xubuntu, the version of Ubuntu that comes pre-installed with the XFCE. After a few frustrating experiences, I moved to Manjaro, a “easy Arch” install. Manjaro was overall a good distribution, but the delayed updates became frustrating, especially if you were using packages from the AUR that required something in the base system to be updated first.
After some looking, I played around with doing a from scratch Arch install on a spare system, and while it worked, it required far more customization than I wanted to spend the time doing (it felt a lot like Gentoo in this regard, without the constant compiling). At the end of the day, I wanted to get up and running ASAP and make small tweaks as needed. After some more looking I settled on EndeavourOS, which is Arch with a few extras, and a convenient GUI installer. This distribution has served me well since.
But what about the BSDs?
I’ve never forgotten the BSDs. FreeBSD was where I really cut my teeth on *nix and learned a ton in the process. I recall installing NetBSD on a system at some point, but don’t remember exactly when (I believe it was in the 04/05 time frame). I do recall that it didn’t live long on the system though. It just “felt” slower than both FreeBSD, and Linux. That was very subjective of course, but I had an infinite amount of time to play around with these things at that point, so if it didn’t catch my fancy, it was on to bigger and better things. I never got around to installing OpenBSD, and I don’t really have a good reason for that, other than I was content with what I was already using.
Well, here we are. It’s 2021. Suddenly, I have the urge to revisit the BSDs again. Only this time, I want to focus on NetBSD and OpenBSD, because I haven’t spent much time with either. I installed both in VirtualBox, messed around a couple days, and then finally last night I decided to install OpenBSD on an old Lenovo Flex 3-1120. And, color me surprised, everything mostly just worked. Yes, I’ve had to tweak a few things (I use two finger scrolling on the trackpad regularly, and that required some tuning to get working right). Aside from that, I’ve been quite impressed.
Comparing siblings – How does NetBSD compare to OpenBSD?
Keep in mind that this is all based on my personal feeling and as such is very subjective. In other words, don’t take any of this for gospel.
In 1995, OpenBSD was forked from NetBSD by Theo de Raadt, some time after he was asked to leave the NetBSD team. To make a long story short, it was decided that the primary focus for OpenBSD was going to be security, and documentation. Now, despite being in the tech field for the better part of my life, I don’t think I’m qualified to speak on the merits of their approach to security; that said, I can say their man pages sure seem to be on point. Additionally, their website has a wealth of information in the FAQ and guide. And due to the popularity of OpenBSD, finding information on a web search is usually fruitful.
Now, don’t get me wrong. FreeBSD has amazing documentation in their online handbook (which is also an optionally installed component when you install the operating system) and I’m sure their man pages are just fine (it’s been years since I’ve looked up a man page on FreeBSD). But OpenBSD is rumored to be quite militant about having good documentation along with your code.
NetBSD is famous for its portability. The official motto is “Of course it runs NetBSD!” It even runs on a toaster. The team focuses on clean and portable code. Device drivers are separated into machine dependent and machine independent parts, which in theory makes porting easier (I say in theory because I have no idea how difficult it is to port an entire operating system to another platform, however it seems as though the NetBSD team is proving this in practice).
One thing about this experience I will say, is that it feels like OpenBSD is just a bit easier to get up and running.
First, the installer. OpenBSD uses a very simple shell script, which asks you questions that require simple answers. In fact, you can pretty much get away with hitting enter the entire way through the install, except at the point where it asks you to set a root password. The most daunting part of the entire installation is when it comes time to partition your disk. Very typically I set up two partitions; a large root (/) file system, and a swap partition that is 100-200% the size of the physical memory the machine has (depending on how much that is). We can argue the merits of having multiple partitions for different areas of your filesystem, and the efficacy of having a swap partition on modern hardware, but I digress. I don’t know that anyone can point to an objective right or wrong answer here, other than to say there are technical reasons why multiple partitions made sense on spinning disk drives and less so on SSDs. With all of that said, OpenBSD automatically gives you a layout with about half a dozen different partitions. You can modify them how you see fit, but OpenBSD actually recommends you maintain the separate partitions how they are in the installer, because each partition will have slightly different settings when it is mounted (which are supposed to aid in the overall security of the operating system).
NetBSD uses a curses-based installer (think of it as an old DOS style of graphical interface, a blue background with gray dialog boxes, all on the console). Now don’t get me wrong, I’m not knocking it by any means. It’s somewhat similar to FreeBSD’s curses-based installer, but a bit simpler, which is a good thing in my mind. That said, it presents a large amount of options at you that I could easily see being daunting to inexperienced users. Again, not knocking it, but pointing how how it felt while doing it.
The other aspect is post-install. Both needed some work after you finished the install to get you to a working desktop (though both include one, it may not be the one you want). However, OpenBSD seems to be a bit easier in this regard as well. It felt like NetBSD required more steps to get going, and to top it all off, I still don’t have a working login from xdm to xfce on my NetBSD installation (I log in to xdm, and am immediately dropped back to xdm). However, if I startx from the console, xfce loads correctly.
I’m just getting started!
If you’ve gotten to this point in the article, you may feel like I’m slanted against NetBSD. I can assure you, that is not the case. On the surface, it’s my opinion that OpenBSD is a bit easier to get set up to a “full working” state. Again, this is only my opinion. It’s very clear to me that NetBSD is going to have a bit of a steeper learning curve for me. But I’m not giving up on it. In fact, I’ve been trolling eBay looking for more refurbished ThinkPads to be able to throw NetBSD on bare metal.
I’m not quite ready to part with EndeavourOS on my existing T420 just yet, especially because I believe there are things I still won’t be able to do on the BSDs that I need to do. It’s also quite an adjustment, going from an Arch-based system which has daily updates (often times multiple times a day) to a more stable BSD system which has far less frequent updates to the packages (FreeBSD’s ports system notwithstanding). But I am enjoying being back ~ (the tilde represents your $HOME directory on a *nix system).
Some additional resources
Here are some links to things that helped me get started getting NetBSD and OpenBSD up and running.