FreeBSD - The Unix I Always Wanted

Posted on 11/24/2015 by Brian Carey

Since the beginning of my days using a computer for something other than playing games I've been using a Unix based OS in some fashion.  I'm mostly self taught, though I did have some help becoming comfortable with it at an enterprise level from State Farm right out of college managing their PeopleSoft servers on an AIX platform.  Personally, I've always been a fan of the RedHat-like systems since they seem more server friendly.  My desktop system of choice used to be SuSe.  Then as I started focusing more on being productive than tinkering I realized Linux on the Desktop was a waste of my time with XP being a stable choice.  Since that time, I've been a happy camper and focused mostly above the OS on things that matter to a business.  I manage A LOT of Linux servers in some fashion, though all I need to do that with in terms of my desktop system is Putty or such.

Enter Systemd being forced down our throats.  Honestly its not so much the technology, but instead that point about forcing it down our throats that really didn't sit well with me.  I don't have a choice to turn it off and Linux is supposed to be about choice.  Instead I must accept that the Linux boot process built on simple scripts has been deemed uncool and I must now do it their hip new way.  Its like my Linux servers are being turned into Windows in many ways for reasons that to me are non issues on a server in the name of being more accessible on the desktop.  I know, I know, I'm supposed to constantly want to learn new things and follow the trends.  But I don't, at least not when what we currently have is not broken and doesn't need fixed.  I've always wanted to try FreeBSD but never seemed to get around to it.  Sadly one of the first things I learned is that it was a weekend I wish I had spent years ago.

The first thing that I immediately found refreshing...the simplicity of the installer.  When I build a server I want bare minimal.  Not groups of packages and all the dependencies that come with them.  I'm impressed with the fact that I only need to put in my host name and other network info and select from a few options to install SSH, NTP, and the ports tree.  About 10 minutes later I'm booted to my new install (it would have been much less if I didn't choose to read through all the options just to see what all was there).

During the install, I realized that I had totally forgot that FreeBSD supports ZFS.  ZFS is a truly awesome file system.  Some years ago I had the pleasure of managing Solaris for a company that I worked for.  The main reason that was a pleasure was because of ZFS.  So rather than the default of UFS I now have a shiny new FreeBSD installed on ZFS.  I clean up some of the ZFS partitions created by the installer that I don't see a need for and move on.

So it was on to working through my list of requirements I need for my home server.  For the most part I don't need anything out of the ordinary but I did expect to run into some issues with my media serving needs.  To my surprise, I found everything I needed was provided as a binary package without even needing to use the ports tree.  FreeBSD actually beat out Linux in this aspect, even Plex Media Server for Plexpass users is available as a package.  The one and only requirement that needed to be built from the Ports tree was ffmpeg with MP3 support, though it was still a simple task.

After only a few hours, I had successfully built a FreeBSD test server to replace my primary home server running CentOS linux.  The process was painless and surprisingly enjoyable.

The Pros

A few aspects of FreeBSD that I think shine in comparison to the current Linux landscape would be:

  • Everything has a proper place.  All of the core system components are installed with a prefix of /.  I know that if I'm in /etc, I'm configuring a component from the core OS.  Likewise, I know that any non-core applications that I've installed are in /usr/local and their configurations are placed in /usr/local/etc.  Very similar to Linux's use of /etc however I have yet to find something that has broke the rule like there are cases in Linux.
  • Starting of services is controlled by a SINGLE text file, /etc/rc.conf.  Furthermore, installing a new service does not automatically enable itself to start on boot, I must tell it to.  Even better is most of the time when you install a service it will output a message when finished telling you what you need to add which was helpful as a beginner.
  • The documentation for FreeBSD is great.  Its very consistent.  I even purchased the book series to have a hard copy handy.
  • ZFS.  I've already mentioned it above but i'll do it again.  Especially for systems with any storage needs outside of just an installed OS.  Linux has it but its an add-on module and by no means something i'd consider running on a production server.

The Con

Honestly, I haven't found anything where I said to myself Really, why did you do this.  I feel its only fair to have one complaint and that is that Bash, out of the box, is not as friendly to those using Putty for instance.  So certain keys that I was used to working on a Linux system would not work out of the box on FreeBSD after installing Bash.  Easily fixed mind you with some extra configuration but this is the one issue I've had.

Conclusion

This took place several months ago, and I honestly haven't looked back.  I have switched over both my primary and test servers running at home, my AWS instance I use for Off-site needs, as well as my local development VM running in Virtual Box.  I have also been using FreeBSD for client servers whenever possible.  Thank you my little BSD Daemon, you are the Unix based OS I've always wanted!