Why I Prefer FreeBSD Over Linux
Several features of FreeBSD have contributed to me preferring it over Linux. Each on its own may not be a big deal, but together they create an experience I enjoy. Rather than write one large article, I’ve broken my thoughts into separate articles. Or, if you just want the TL;DR, the points below hit the highlights.
Reasons with Details
- SR-IOV is a First Class Feature - Hardware virtualization is more apparent in FreeBSD. There are dedicated tools for setup, and those tools are well documented and part of the OS.
- ZFS Boot Environments. Every time you update FreeBSD, it snapshots the whole OS. In Linux it’s common to be able to boot to a previous kernel, but in FreeBSD you can revert the entire environment.
- Shutdown & Boot Are Fast. Several minutes difference between FreeBSD and Debian.
- The FreeBSD boot process is cohesive. Linux usually has two or three independent steps during boot that each have their own configuration and are not consistent between distributions. You’ll likely be scouring the internet to figure out how to setup simple things like a Serial-Over-LAN (SOL) console.
- SES-2 Utility. If a disk fails, you want to quickly know the physical location of the device, ideally without shutting down the whole system. FreeBSD has simple support for this in the base OS.
- FreeBSD is quick to install. Twice as fast as Debian.
More Straightforward Reasons
Other stuff that’s cool about FreeBSD, but not enough to warrant a separate article on each:
- Release Cadence - It’s stable like Debian but its quarterly package releases are a bit more recent than what you’ll find in Debian.
- In-system docs (e.g., man pages) are better - Many examples in the points above.
- Option to compile from source - And aside from doing it manually, advanced tools like poudriere(8) make it quite easy to do.
- Service management - init(8), rc(8), and service(8)
are simpler than systemd. systemd is fine for what it is, but I prefer
the orientation toward “do one thing well”. And I like that I can see my
service setup in one place:
/etc/rc.conf - Managing Jails is Simple - Similar to service management, I find
it’s easier to manage jail(8)s than
Docker or LXD/LXC. Those technologies are awesome, but I love having
everything in
/etc/jails.confand not tucked away behind alxc configcommand. - Managing Bhyve VMs is Simple AND PCI passthrough is easier - Tools like vm-bhyve make it dead simple to create and manage VMs. More importantly, passing through a GPU is a trivial one-line config in FreeBSD, but in Linux, you may find yourself adding half a dozen non-obvious kernel parameters to get Linux to leave your GPU alone (which is a prerequisite for passing any PCI through to a VM).
- Separation of OS & User-Installed Packages - It seems trivial,
but having FreeBSD keep its configs in
/etcand me keep my configs in/usr/local/etcmakes things much more clear over time. Mostly it’s clear everything in/usr/local/etcis my fault. - ZFS is Recently Flexible - I like Linux’s Btrfs because of its flexibility. It’s still more flexible than ZFS, but recent versions made that less true by adding the ability to remove vdevs and other things that you might want to do if you’re a lowly home user and not a data center admin.
- I like the logo

My Personal Discovery of FreeBSD
For twenty years I relied solely on Linux for my servers. FreeBSD was never part of my plan. I installed FreeBSD just to check it out. Like Debian, I was aware of its reputation for stability, but I somewhat expected I’d quickly lose interest and flip back to Linux. But as I toyed around and experimented, I kept thinking, “hmm, that’s nice.” After a few weeks, there were lots of these. And after a few months, I migrated my primary server to FreeBSD.
If you’re looking for a server OS, give FreeBSD a try. You might be surprised.