The FreeBSD system uses a program known as cvsup to keep itself up-to-date. Once you create a 'sup-file', cvsup compares what is locally on your system, and what is on the cvsup server and downloads any file that has changed since the last time it was run. You can use it to keep your ports tree and your local copy of the FreeBSD source code current and up-to-date. Unlike Linux, which normally only the kernel is downloaded and compiled on a semi-regularly basis, you can easily download the source for the entire OS using cvsup. The main reason for doing this is that it makes updating FreeBSD from one version to the next extraordinary simple. After cvsup'ing the newest source, you compile a new kernel, then you compile the 'rest' of the OS using one simple command: 'make buildworld'. you then drop into single user mode and install it with 'make installworld'. It's just that easy.

The way that partitions are handled is also very different. Linux sees a hard drive as being divided up into different partitions. Of those partitions, some of them can have logical partitions inside of them. What we commonly think of as 'partitions', FreeBSD sees as slices. Within each slice are one or more 'BSD partitions'. These BSD partitions are what shows up in the /etc/fstab.

Perhaps the next biggest difference between Linux and FreeBSD is the philosophy behind how the OSes are designed. Linux tends to have newer features and drivers (such as the closed source nVidia graphics card drivers) well before FreeBSD. The FreeBSD developers have taken a much more conservative approach to things. They prefer tried and tested code over flashy new features, preferring to wait until the major bugs have been worked out. For FreeBSD on the desktop this can be a problem if you want the latest and greatest drivers or the newest *cool* new feature. But in the server room, you want tried and tested code. Besides, how many of you put a $200 video card on your headless server?

Another difference is in what is installed by default. If you go with the default install options in SuSE, you'll wind up with at least a gigabyte of installed software. FreeBSD on the other hand, installs just the basics. (Please note: I know that you can tell SuSE to only install the 'basics', but notice that I am talking about the 'default' install.) It gives you only the essentials, which you can use to install any of the 4000 applications in the ports tree. Almost all of the programs that run on Linux are already ported and running on FreeBSD, the only difference is that with Linux they are either installed by default, or unless you use Debian you have to go manually download them. With FreeBSD they are optional, and it is for the most part automated. Another difference in terms of what gets installed is that in Linux, the default shell is bash, however in FreeBSD it is tcsh.

For commercial programs such as Oracle or HP Openmail, FreeBSD offers a "Linux compatibility" layer. In simple terms this layer allows FreeBSD to run Linux binaries at almost native speed. Depending on the application it can run at full native speed under FreeBSD, just as it would under "Linux". This compatibility layer is a step above emulation. The required Linux libraries are installed on the BSD system in binary form. When you try to run the Linux application, FreeBSD realizes that it is a Linux binary and simply points it to the Linux libraries that it depends on. There is also support for emulating commercial BSD, NetBSD, OpenBSD, and SCO binaries. Each respective OS is in different stages of support, with the best support for commercial BSD, NetBSD, and OpenBSD.

Although the BSD developers are more concerned with quality than quantity, that doesn't mean that FreeBSD is lacking in features. FreeBSD 5.0, due in Novemeber of 2002 will feature fine grained process control, which will enable it to scale effectively up to 32 processors. Version 5.0 will also feature a full DEVDFS device filesystem. Although this has been available in Linux for quite a while, you don't hear much about it. It basically allows for the dev file system to be dynamically changed. For example, if you add a USB keyboard, it would 'magically' be added to the /dev directory. As for journaling file systems, the stable version, 4.4 has a feature known as 'soft updates'. While it is technically not a journaled file system, depending on who you ask it is better than a journaled filesystem.

Throughout the big dotcom boom of '98-'99 Linux was THE buzzword. Computer users everywhere were hearing about a *free* operating system that was challenging Microsoft in the server room as well as the desktop. Even today, the userbase of Linux is growing strongly. However most people are just beginning to hear about FreeBSD. Hopefully this article will help you evaluate FreeBSD as a possible solution to your needs. In the end though they are both free, so why not try them both and pick the one that best suits your needs?

About the Author:Nathan Mace is currently a senior enrolled at the University of Charleston, West Virginia, majoring in Computer Information Systems. He is interested in all types of operating systems, expecially Unix-type OSes such as Linux, *BSD's, and commercial Unices. Nathan can be reached at mace_nathan@uchaswv.edu