November 10, 2004

My workstation OS: FreeBSD

Author: Jem Matzan

When you have to get work done (especially if you're self-employed) it's important to choose the right tools to enhance your productivity. If your work has something to do with a computer, the operating system is especially important. Of all of the OSes that I have used and reviewed over the years -- and I still have all of them available -- I prefer FreeBSD's "new technology release" as my main workstation operating system. Why? Because I can get more work done with it.

I originally moved to FreeBSD 5.1-RELEASE shortly after it hit the download servers in June of 2003. I came from Gentoo Linux, which was giving me a lot of trouble as far as updating the system through Portage. I'd read that Gentoo was originally designed by a former FreeBSD hacker, and that Portage was a supposedly improved version of FreeBSD's Ports software management system.

Switching from GNU/Linux to FreeBSD is not as easy as one might like. FreeBSD (likewise OpenBSD and NetBSD) does not have a fancy graphical installer like many GNU/Linux distros, and a number of commands in the BSD userland are similar to but different from their GNU counterparts. BSD was developed from the original AT&T Unix and is therefore a bit more Unix-like than GNU/Linux is. Someone once said something along the lines of: BSD was designed by Unix hackers to be Unix, and Linux was designed by a PC hacker to be like Unix.

So in general, things are just a little bit different. The default shell, for instance, is TCSH for root and SH for users -- no Bash, although you can install it from Ports and make it the default if you like. Many BSD hackers are notoriously anti-GPL, so you won't see much in the way of GNU utilities in the base system, with the obvious exception of GCC. Other little differences exist, like the atacontrol and tunefs commands, which effectively replace and supersede GNU's hdparm utility. FreeBSD's useradd script uses prompts to ask you what options you want, whereas by default, GNU's useradd requires you to type out all of the switches and options in the command line. Once I got used to FreeBSD, I came to greatly prefer its way of doing things over any GNU userland I'd seen.

What makes my work easiest is Ports. If I need to accomplish something I can't manage with my currently installed programs, I just change directory to/usr/ports/ and look in the appropriate category for programs that do what I require. I found manual navigation through the Ports directory tree much preferable to Gentoo's Portage or Debian's APT systems because I wasn't inundated with scrolling pages of mostly worthless results, and I could sort by category much more easily. Every program installed from Ports is compiled from source, so I can use specific optimizations in my make.conf file as well. And speaking of configuration files, since FreeBSD doesn't have runlevels like GNU/Linux does, the/etc directory is considerably cleaner and it's much easier to find and modify the proper config files.

All of my favorite GNU/Linux programs are available natively through Ports; if I want a binary instead of installing from source, one is usually available through the FreeBSD package database. If I want to use the Linux version of some program that hasn't made it to BSD yet, FreeBSD has a nice Linux emulation layer that can run Linux binaries with no noticeable loss in performance.

Lastly, FreeBSD works well with all of my hardware -- no trouble at all, and all I had to do to the kernel was add one line for sound support. Later on I also made IPFirewall part of my kernel as well, and took out a lot of driver support that I'd never need.


Around the time I built an Athlon 64 system last year, things began to change in FreeBSD land. While FreeBSD has a reasonably competent AMD64 edition, I've had a lot of problems with it -- crashing, poor software compatibility, and a general reluctance on the part of the development team to commit patches that would add 32-bit support, Linux binary compatibility, and other necessary fixes. I don't like having a hacked-up system; I want to be able to use the default installation, modifying only the configuration files to change the system's functionality -- no "unofficial" patches.

The release of FreeBSD 5.2 was a disaster -- I had problems with DHCP and the ATA driver which prevented me from doing much with the computer. 5.2.1 fixed those problems, but the entire ATA subsystem was only hacked around, not really fixed. I had to switch back to the x86 version of FreeBSD for a long while because of all of the crashes on my AMD64 system (the crashes were even worse with my hyper-threaded Pentium 4 system). Recently I reinstalled the 64-bit version on a separate disk slice, and I've been following the 5.3 release candidates with the hope that the AMD64 port will be usable when 5.3 is released next month.

Jem Matzan is the author of three books, editor in chief of The Jem Report, and a contributing editor for OSTG.

What's your desktop OS of choice? Write an article of
less than 1,000 words telling us what you use and why. If we publish
it, we'll pay you $100.

Click Here!