This section is for people who are new to FreeBSD. If you're already familiar with it, you may want to skip down to the next section.
Originally developed from the Unix-based Berkeley Software Distribution, FreeBSD is among the oldest extant Unix derivatives. It is currently maintained and improved by a large team of programmers, and supported monetarily by individual and corporate donors.
From FreeBSD you can generally expect a modern, Unix-like operating system, heavily armed with network services and tools. It is relatively easy to install, configure, and administer FreeBSD on servers or desktop machines. FreeBSD is scalable up to at least 12 CPUs (this is as many parallel CPUs as it has been officially tested with), which includes SMP support for Hyper-Threading and multiple cores.
Aside from the programs included in the base system, FreeBSD offers extra software via pre-compiled binary packages; and a Ports system, which functions much like a less automatic version of Gentoo's Portage software management framework. From Ports you can automatically download, compile, and install more than 13,000 programs. There are few applications in the free software canon that are not available in the FreeBSD Ports tree. There is also an available Linux binary compatibility layer which is efficient enough to say that there is no noticeable performance difference between Linux binaries and FreeBSD binaries running on the same system.
A common misconception about FreeBSD is that Apple OS X is based on it. While some of the FreeBSD userland programs are used in Darwin (which is the operating system that forms the basis for OS X), the OS X kernel is based on Mach, not FreeBSD, so OS X is not "based on" or "developed from" FreeBSD in the traditional sense (such as the way OpenBSD was forked from NetBSD in 1995).
The majority of the FreeBSD base system is licensed under the free software BSD license, although some included programs are governed by the GNU GPL and similar free software licenses.
What's new in 6.1
Perhaps the FreeBSD team took a page from the OpenBSD playbook, and chose to make a lot of small modifications for 6.1-RELEASE. That's in stark contrast to many of the preceding releases, which introduced revolutionary code changes that, while great on paper, ended up causing more trouble than they were worth.
- Improved keyboard support
- Improved sound drivers
- A number of base system components have been made multi-processor safe
- IPv6 support in ipfw
- Various network driver bug fixes and enhancements
- Improved package tools, including Portsnap
- A firmware subsystem that allows loading binary blobs into the kernel
Putting it to the test
FreeBSD 6.0 was a positive note in what had been a negative trend with the buggy and unstable FreeBSD-5 series. I used to rely on FreeBSD as my desktop operating system a few years ago, but had to switch to GNU/Linux when my system became too unstable to use.
FreeBSD 6.1 is best described as a refinement of 6.0, but it's nowhere near perfect yet. The good news is, the AMD64 version of FreeBSD 6.1 is better than ever, though the credit for this success is half due to many third-party software packages in the Ports tree that are now fully 64-bit clean.
Despite all of the improvements in the network drivers, I had a little trouble with the Nvidia
nve driver -- I got intermittent device timeouts in the AMD64 edition of FreeBSD. It's possible the problem also occurs in the i386 version, but I didn't see it happen there, and the error was rare to begin with.
I also ran into keyboard problems during installation. The installer either locked up or killed the keyboard connection the first two times I ran it; the third time through I had garbled keyboard output; and I never did get the mouse working. The devices in question were part of the Microsoft Wireless Laser Desktop 6000, which is a fairly new peripheral package. Still, there were no problems with these devices in OpenBSD 3.9 or Gentoo Linux. Part (or all) of the mouse problem was that
moused would not recognize the uhid0 device node as the USB mouse.
The good news is, the major stability problems seem to be gone for good -- 6.0 was not a fluke. The package problems that I had with the 6.0 installation CDs (asking you to switch discs dozens of times) also seems to have also been fixed in 6.1.
This is the first time I've used Portsnap for updating my Ports tree. Usually I do it the old fashioned way, via cvsup. Although it would really take a few weeks of daily updates to properly test a framework like this, I found it to work as advertised during my test period. Portsnap requires a lot of initialization -- you have to download a snapshot, then rebuild the Ports tree before you can do anything with it. Portsnap kind of reminded me of Gentoo's Portage system, although a bit more primitive. Anyone who is already familiar with cvsup, portupgrade, and the Ports tree won't find anything new and wonderful about Portsnap, but newcomers will probably find this to be a much simpler way to update their installed programs.
Conclusions and developer recommendations
Overall I found FreeBSD 6.1 to be another step in the right direction, and I think it's encouraging that there weren't any revolutionary base system changes in this release. Sometimes big changes are unavoidable, but historically the FreeBSD team has bungled such leaps as the switch to the ULE scheduler, the introduction of SMP, and the liberation of the base system from the big giant lock. Sometimes you have to stop and make sure that what you presently have is working properly, and it looks like now is that time for FreeBSD. I applaud their efforts with 6.1 and look forward to testing 6.2. In fact, I may even try to switch my workstation back to FreeBSD in light of its newfound stability and networking enhancements.
Here's what I'd like to see in FreeBSD in the future:
- More refactoring. It looks like the FreeBSD team is on the right track, but it's worth reiterating the fact that the best progress happens in small steps. In every single FreeBSD release I have used back to 5.0, I've found at least one indication (and often many) in the form of error messages and crashes that something isn't working right. That shouldn't happen.
- Installation of default config files. After installation, FreeBSD is left with no real make.conf or rc.conf, although there are example files in /usr/share/examples. Every time I install FreeBSD, I find myself copying over these files (and cvsup supfiles) to /etc and customizing them myself. I don't see why the examples can't be installed into /etc by default.
- AMD64 Java binaries. FreeBSD now has a license to distribute JDK and JRE binaries from Sun, but only on the i386 architecture. A 64-bit version would be nice.
- Better organization of the Ports tree. Although I think that the Ports tree in general could do with a standard naming convention for categories and programs, a bigger complaint of mine is that every non-English language has to have its own directory. I'd like it if everything in /usr/ports could comfortably display on one screen after an
lscommand. If all of the foreign language ports were moved to a single directory (or a metadirectory to house the current dirs), that would free up a lot of screen space, which makes finding categories and programs much easier. I also think that the science directory could include the biology and astro categories; and I strongly question the need for an "x11-clocks" software category.
|Manufacturer||The FreeBSD project|
|Architectures||x86, AMD64/EM64T, SPARC64, PC98, Alpha, PPC, IA64|
|License||BSD, although some parts of the base system are under the GPL or other free software licenses|
|Market||Web, email, and other network services servers; also useful as a desktop OS|
|Price (retail)||Free to download, or $35 for a CD set|
|Previous version||FreeBSD 6.0|
|Product website||Click here|