FreeBSD as a Workstation for UNIX Newbies

Linux, the BeOS, Solaris, QNX, AtheOS… the list of “alternative OSes” seems ever-growing, and an increasing amount of computer users want to keep their options open. Meanwhile, sitting quieting on millions of servers –very likely on your ISP’s servers– is FreeBSD, originally developed at University of California Berkley, based on the same core as the new MacOS X, currently at version 4.4. FreeBSD is a complete, free, stable, multi-user, Unix-based Operating System available for download at freebsd.org. While FreeBSD has come a long way of late, it’s far from ready for the average user, however, as it matures, it has great promise in becoming a serious player in the OS market next to Linux.

Chuck, the FreeBSD mascot
I know that for me personally, Windows has outlived its welcome. While Windows XP is probably the best, most complete OS I’ve ever used, it’s too much for me. It eats up my bandwidth, it monitors my actions and reports home, it’s very tighly integrated with Passport, another Microsoft tracking system, and it costs hundreds of dollars. With so many other OSes available, about two years ago, when the decision was between Windows 98 or 2000, I began testing out new OSes. Considering FreeBSD was not an immediate decision – I had to warm up to it. And necessarily so. Though FreeBSD is often logical, even advanced and adventurous Windows users will face a fairly steep learning curve.


I am going to assume, for the purposes of reaching a reasonable conclusion, that if you are reading this, you’ve already either installed a non-Windows OS, used a non-Windows OS, or are a glutton for pain and suffering. Either way, I will take a few seconds in each section to explain the basics, so bear with me.


FreeBSD is not the only OS based on the original BSD design.


In a nearly offensive slimming of their worth, I’d sum up the *BSDs as follows:
* FreeBSD is an all-puprose mainstream OS for the masses.
* NetBSD is designed to run on more platforms than any other BSD – at the time of this writing, 46 platforms are supported.
* OpenBSD is designed to be the most secure OS, out of the box, in existence. Because of this, a lot of the OS is disabled by default, which makes this not the best choice for Unix novices.
* Darwin is another option. According to the website, “What is Darwin? Darwin is the core of Mac OS X. The Darwin kernel is based on FreeBSD and Mach 3.0 technologies and provides protected memory and pre-emptive multitasking. Darwin runs on PowerPC-based Macintosh computers and a version is also available for x86-compatible computers.”


For more on this subject, visit jocose.org.
The BSD license is also fairly unique. For more on the license, visit freebsd.org or click here.

There are infinite ways to get tangled in a FreeBSD installation. But for anyone who used Linux before version 7 of most distributions, it won’t seem too alien. There are many methods of installation: CDROM, floppy disk, tape drive, a DOS partition, over a network, or if you have a high speed connection, FTP or HTTP. The install menu seems to suggest that one day, there will be a single DVD install that includes all ports. I am anxiously awaiting that release, but in the meantime, all of these options are easy to execute and self-explanatory. Having downloaded the iso images, I chose a CD install and it successfully copied over an install image to the hard drive. The FTP option failed from my house, but my firewall is pretty tightly configured. A friend has reported success – and even preference – with the FTP method.


Like most OSes still in their youth, you must partition the hard drive. With FreeBSD you partition the hard drive and then create slices within the partition. By partitioning the disk, you can designate which sections of your hard drive are for use with FreeBSD and which aren’t. You can, of course, specify the entire disk, or, if you have blank space on your hard drive, you can use just a part of a drive that already has data on it. Using the auto-partitioner is a must if you don’t already have an idea of reasonable sizes for your slices, but if you insist on doing it all yourself, you can. FreeBSD uses a file system called UFS and can employ SoftUpdates, arguably comparable to journaled file systems in that they efficiently use metadata, but possibly better, depending on your point of view.


While this part is still fairly easy, selecting packages to install is a daunting task even for a seasoned user, and having installed the software over 10 times, I was still choked up at this step. Unfortunately, there are no pre-selected installation options, as you find in most prominent Linux distributions – something needed in future releases to speed up this process. You must manually select the packages you wish to install. For a first timer, it’s pretty confusing. Having installed the last three versions of FreeBSD, I can tell you it’s changed very little. You’ll want to make sure you install the bash shell, Gnome, and KDE at a minimum, but unless you have serious space constraints, you’re better off installing too much than too little. The biggest plus of FreeBSD – and truthfully, the only reason it’s not extinct – is its Linux Binary Compatibility, which is essential to using FreeBSD as a workstation. By adding this package, you can use almost any application that can properly compile in Linux.

The underpinnings of the Graphical User Interface come in the form of XFree86, an open source implementation of the X Windows System. Truth be told, this is the step that most frequently scares away new users, as configuring X is undoubtedly the toughest part of the FreeBSD install. Moving the mouse too early can cause errors. Specifying the wrong horizontal and veritical sync range on your monitor can freeze the install. Pressing “OK” before you’ve got the proper settings specified can send you on a goose chase that might leave you stuck at 800 x 600 for days while you attempt to reconfigure without reinstalling. With my Linux tested Belkin Omni switchbox, even on my most recent install, I had serious troubles getting the mouse daemon to work, and I’m told I’m not alone in this. However, for the average user, using a single PC, this shouldn’t be an issue. My hardware, mainstream but not cutting edge, has never caused a problem other than this. However, I have more than once found myself with an X server out of alignment with my monitor. When you get the X server configured, you’ll find there is an X tuner included as well. While these tools are meant to maximize your video capabilities, my experience has been that the X tuner causes more problems than it solves. Use them carefully, quickly, and sparingly. My new method of dealing with X configuration is “Once it’s good enough, I move on.”


I was unable, after poking around for about 5 minutes, to get the OS to default to the GUI on boot, which most workstations should. It turns out it wasn’t that inconvenient to login and #startx to launch the X server. There are ports of just about anything you need – offices applications, browsers, audio applications, servers, and thousands of other apps of which you will likely use about 6 regularly, but having them there is of comfort to me, and will be to you. Unlike Windows, when you start up FreeBSD and launch into the GUI, you will be greeted by a confusing start menu that, strangely, is less intimidating than encouraging. Linux users will recognize it as it’s a port of the same software. For those new to a non-Windows OS, there are quite a few changes, but most of the action in the GUI is fairly intuitive. Right clicking the desktop will bring you menus that are logical and highly used. Clicking the icon in the lower left will bring you to all purpose menus. Window navigation is comparable to Windows Explorer. FreeBSD, however, can utilize the third button on a mouse (it can emulate the third with a “both-click” if your mouse only has two buttons).

In order to truly understand Unix and Linux, you have to understand the structure. Bear in mind – this is drastically simplified and basic. Picture concentric circles, with hardware at the center. The kernel wraps around that circle; it is the center of an OS that communicates directly with the hardware. A shell translates user input into commands the kernel can accept. Lastly, the GUI sends commands to the shell destined for the kernel. These OSes usually include the source code for the kernel, which allows a user to “recompile” or reconfigure and optimize the kernel for a specific hardware platform or a specific purpose. Nowadays, the kernel is more than suitable, so someone new to FreeBSD won’t have to configure or reconfigure the kernel – for now, it’s fine as is. FreeBSD also includes ports of many shells (like bash, the Bourne again shell, and zsh, the z-shell, explained here) and both KDE and GNOME desktop environments.


As a newbie to *nix, you’ll find yourself typing DOS commands like dir and rename quite a bit at the command line, but the bash shell is flexible and not incredibly hard to learn. In reality, the Unix commands make much more sense: ls, like dir, *lists* the contents of a folder, mv, like rename *moves* a file into a new file. This is logical – everything in Unix is treated as a file. For example, You might copy an audio file to the soundcard to hear it play. The structure might be confusing at first, but again, these systems are designed to be logical, and in time, will make sense as there are fewer global exceptions. Don’t be turned off by this – the CLI is what scares away many new Unix users. It will be your friend as you get to use it more frequently. Soon you will be able to use the filesystem itself in your applications and web sites. Try that on an NT box.


Another important distinction between *nix and Windows is the lack of a Registry. The Registry, which is the center of Windows, acts as a large database that contains information about virtually everything in your PC. By tampering with the Registry, you can effectively destroy a Windows installation in about 5 clicks if you know which registry keys to alter. FreeBSD, like all *nices, use flat text files. In order to alter the actions at boot, you’ll need to alter a text file. To change the properties of your shell – a text file. To configure the many servers bound within FreeBSD, text files. Fortunately, hunting cautiously, you can find graphical front ends that can help you configure your system. For the time being, almost everything you need is pre-configured in a fashion I’d call “useable.”

In writing an introduction, I wanted to explore the benefits of FreeBSD, mostly notably those that separate it from Linux. Among those most touted are uptime and stability. As a workstation, it’s unlikely you’ll leave your computer on for endless hours and rare you’ll use the myriad available servers except as a convenience while logged in. For demonstration purposes, I purposely launched as many apps as I could to try to crash it. I crashed it very quickly – or so it seemed. I actually only bombed out the X session. In fact, crashing FreeBSD is just about impossible as a sole local user. I was able to crash 4 simultaneous X sessions; each time, all I had to do to restore my system was log out, log back in, and relaunch the GUI. As for uptime, I had the system up for three days without interruption when I decided I wanted to move it. Then I checked out Netcraft’s statistics, and at the time of this writing, of the longest running web servers they track, the top 13 are all running some form of BSD – only 8 of the top 50 are not running a BSD based OS. At that point, I concluded that it wasn’t going down anytime soon. Sure, most servers are doing something simple like IP routing, admittedly not the hardest task, but many of the servers tracked in that graph are running complex databases. At home, my Linux PC has hiccuped from time to time. In fact, my firewall, which only does IP masquerading, serves DHCP, and runs a small firewall script, needs a reboot every week or it suddenly forgets what to do. My FreeBSD test box was up the entire time I had it. So I’m leaving it at this: uptime and stability for FreeBSD – check plus.


The other, much larger benefit of FreeBSD is the non-forked development. With Linux, which is actually just a kernel, there is no standardization. Anyone with a single course in programming can alter the system and release it, thanks to the GPL. There are hundreds, if not thousands, of distributions. Anyone with a single course in programming can alter the system and release it, thanks to Linux’s licensing. FreeBSD, conversely, is maintained by a small group of programmers. Don’t think of this is restrictive, though, think of it as being able to preserve the quality of the OS by making all code pass a final inspection. While all Linux distributions are subject to random editing and changes, FreeBSD is a constant across all computers everywhere it runs.


One small downside for me was that the device naming convention is different for BSD than for Linux. Don’t look for names that you just “know;” they aren’t necessarily there. However, you will find your typical directories. This is useful for downloading and installing new programs as well as searching for items. The bash shell, which most Linux users are using, is much more capable than DOS and, unfortunately, in order to effectively use FreeBSD, you’ll need to learn to use it. I soon learned, though, that compiling your own applications isn’t so tough. In fact, using the command line became almost fun for me. It allowed control that I have not felt in most GUIs.

Chuck, the FreeBSD mascot
The way I see it, a capable workstation needs at least one of each of the standard apps: a capable browser, an office suite, an e-mail client, games, an FTP utility, audio apps, and a compression tool. All are included for free by default in a FreeBSD CD set. There are options for browsers, with Netscape and Mozilla being the most common. My experience with Mozilla was excellent. I wouldn’t need another option. For productivity, there is the ever present and rapidly-advancing StarOffice suite. The source code of Star Office 6 is available for download at openoffice.org and works extremely well as an office suite. For e-mail, if you haven’t begun using a web-based e-mail yet, look no further than Evolution from Ximian. Again, you can obtain the source code from ftp.ximian.com. There are more games than you can shake a stick at included in Gnome and KDE, and gFTP is a great FTP client that looks exactly like my WS_FTP on Windows. XMMS is an excellent audio player comparable to WinAmp that worked like a charm. Though I neglected to rip a CD, I know that grip is included in most distributions of GNOME. If that isn’t enough, compression is built right into the system! In a nutshell, not once in the time that I played with FreeBSD did I find myself at a loss for an application.


Overall


FreeBSD was an experience I don’t regret. If you’re a Windows user and you’re interested in trying something new, I’d have to recommend a standard distribution of Linux first. But if you’re a Linux user not sure of which distribution to use, consider FreeBSD as an alternative. Its stability alone is noticeable over Linux, as well as the way it handles tough loads on the system resources. Another benefit is the extremely detailed online handbook that serves as complete documentation of the OS. Although I feel strangely compelled to use FreeBSD, I think I’ll feel more strongly in a year or two with the next major release, version 5. FreeBSD, in my estimation, though entirely useable, is better suited as a workstation for a moderate to experienced Unix user who knows how to truly employ the benefits it offers, a high end graphics development center or some other super-stressed computer, or as a server OS – which is truly what it was intended to be. In the meantime, though, I’m keeping my options open.


About the Author
Adam Scheinberg is a Systems Administrator for the US Naval Sea Systems Command. He uses Windows XP, Red Hat Linux 7.2, and the BeOS at home, and Windows NT/2000 and Novell NetWare 5.1 at work. Adam can be reached on [email protected]

33 Comments

  1. 2001-12-10 6:48 pm
  2. 2001-12-10 7:19 pm
  3. 2001-12-10 8:00 pm
  4. 2001-12-10 8:11 pm
  5. 2001-12-10 9:05 pm
  6. 2001-12-10 9:28 pm
  7. 2001-12-10 10:28 pm
  8. 2001-12-10 11:03 pm
  9. 2001-12-10 11:34 pm
  10. 2001-12-11 12:23 am
  11. 2001-12-11 2:26 am
  12. 2001-12-11 5:04 am
  13. 2001-12-11 9:04 am
  14. 2001-12-11 9:44 am
  15. 2001-12-11 4:38 pm
  16. 2001-12-11 8:26 pm
  17. 2001-12-11 8:33 pm
  18. 2001-12-12 6:04 am
  19. 2001-12-12 3:30 pm
  20. 2001-12-12 4:23 pm
  21. 2001-12-13 12:54 am
  22. 2001-12-13 5:54 pm
  23. 2001-12-16 8:50 pm
  24. 2001-12-24 2:14 am
  25. 2001-12-25 1:41 pm
  26. 2002-01-01 1:30 pm
  27. 2002-01-05 11:34 am
  28. 2002-01-11 7:00 pm
  29. 2002-01-17 7:11 am
  30. 2002-01-18 9:22 am
  31. 2002-01-18 6:03 pm
  32. 2002-01-18 7:52 pm
  33. 2002-01-26 4:55 am