It’s Time for FreeBSD!

For the last couple of weeks I have been delving deeper into the arcane arts of FreeBSD, paying extra attention to containers (jails), local/remote package distribution (poudriere) and storage utilities (ZFS RAID, mirrors). Truth be told, with every ounce of practical knowledge I was increasingly impressed by this Unix-like operating system. It’s nothing short of amazing, really! The irony lies in the fact that FreeBSD is an underdog in the Unix world (less than OpenBSD or Illumos, but still), despite the fact that it excels as a server environment and established many technologies currently in focus (process isolation, efficient networking and firewalls, data storage, etc.) years ago already. GNU/Linux is picking up pace, but it still has a long way to go.

I feel traditional Unices got the “base system + additional applications” separation properly. One might think it’s just a matter of personal taste – the “order vs chaos” debate going on for ages. The truth is that this separation is not only reasonable, but also extremely useful when one begins to treat the operating system as more than a mere Internet browser or music player. Order is paramount to organizing and securing data from ill-intent or hardware failure. I really appreciate the use of /usr/local, /var/db, /var/cache and other typical Unix volumes on FreeBSD, as it makes the system more predictable, and therefore hustle-free. When we have a multitude of systems to care about, hustle-free becomes a necessity. With the new container technologies like Docker it’s a realistic scenario – 1 host system serving N guest systems. One doesn’t need to run a server farm to get a taste of that.

This is basically where (and when) FreeBSD comes in. It’s a neatly organized Unix-like system with great storage capabilities (ZFS), process isolation for guest systems (jails and bhyve), network routing (ipfw, pf, etc.) and package distribution (synth, poudriere, etc.). And everything is fully integrated! The “pkg” package manager knows what jails are and do, and can easily install programs to them. Poudriere coordinates building new packages, using jail containers so that the host system is not compromised. These packages can later be distributed via HTTP/HTTPS/FTP remotely or locally via the file protocol. Such low-level integration is somewhat foreign to the GNU/Linux world, though among server distributions like OpenSUSE, CentOS or Ubuntu Server it is constantly improving.

Still, whenever I think about the divide between BSD and GNU/Linux, I see a tall brick wall that both sides are struggling to tear down. FreeBSD wants to become more desktop-oriented, while GNU/Linux is trying to reinforce its server roots. Difficult to tell whether this is good or bad. The BSDs do indeed excel as server systems, as recently highlighted in a NASA study. GNU/Linux is more suited for heavy computation and leisure. The brick wall has plenty of nicks, yet it stands strong. Maybe there is a “third option”? Why not let each do the job they do best? What I mean to say is that FreeBSD has its place in the world and the time is ripe to truly begin to appreciate it!


7 thoughts on “It’s Time for FreeBSD!

  1. Pingback: It’s Time for FreeBSD! & FreeBSD-Debian ZFS Migration -
  2. Hi Andy,

    nice article! Would you mind linking to that NASA study? My google-fu failed me 😉



      • Hmmm … this short article states how FreeBSD’s packet switching throughput increased and enabled them to build a 100 G/s firewall. Nothing about FreeBSD as a server OS, and specifically no pros/cons compared to Linux or other systems (other than that it’s faster than CentOS). Your “took the time to compare” lead me to expect an in-depth study of various systems …

        Are you sure this is the correct link?



  3. nice article.
    I am an Arch user. I tried out FreeBSD by installing it on an old machine. it is really nice. I think that I could switch to it or to OpenBSD if Linux gets too commercial (like Ubuntu did) and less open source. The only thing that could bother me (as an arch user) is the old versions of packages on FreeBSD. I don’t know if OpenBSD is a rolling release or not…


    • Packages on FreeBSD aren’t old as long as you follow the “latest” repository, which is the default for the -STABLE and -CURRENT development releases. -RELEASE (the main stable branch) uses a “quarterly” repository branch, which indeed contains older package versions. However, you can always change your preferences :). The main system can be updated via freebsd-update for -RELEASE and through full “world” rebuilds for -STABLE and -CURRENT.

      OpenBSD works somewhat differently and the official docs describe it better than I would:
      -RELEASE gives a stable system base upgradable via syspatch and a package repository, which as far as I know, doesn’t get package updates at all. Updates have to be done by building from sources files in the Ports Collection, unfortunately. -CURRENT gets updates via snapshots (the recommended way) with binary package updates. -STABLE is tricky (for details, check the links).

      Sorry for getting back to you after such a long time, but I just noticed your comment :(.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s