Freedom The Open Source Way Contribute Articles or News to OSForgeOSForge HomeLogout from Forums
Contacting OSForgeOSForge HomeAbout OSForge
  

Root
Contribute News
Learning Corner
Linux Distributions
Linux Common FAQ's
Discussion Forums
Community Gallery
Links Directory
Search OSForge
Networking
Industry Updates
Linux & Open Source
Opinions
Press Release
Programming
Security
Web Development

White Paper
DAKCS Software Systems Introduces Innovative Customer Training Program
Zarafa and ClearCenter Announce ClearOS Integration
Zarafa Brings Browser-Based Enterprise Collaboration Client to CeBIT
Zarafa Catalyses Software Development Collaboration by Launching git.zarafa.com
Zarafa and LPI Partner on Training and Certification Program
Likewise to Grow Seattle-Area Workforce
Likewise CTO: Unleash and Secure Unstructured Data
Likewise Names Leading Open Source Voice as CTO
Launched: Zarafa Collaboration Platform 7.0 and Zarafa Archiver

View More »

FreeBSD Review
By : Accidutzu [www] Find more article by Accidutzu on review
Tuesday the 27th, January 2004 at 06:06 AM (EST)
Send this Story to a Friend Readers TalkBack (0) - 2530 Reads

Printer Friendly Page Printable format
Send this Story to a Friend Foward to Email

FreeBSD is one of the best Free Unix projects in the world; despite the claims of message forum trolls everywhere, BSD is not dead -- it's actually more alive and more popular than it's ever been. But while it's far from dead, it's not without its shortcomings, and this new version isn't much of an improvement over 5.1; read on to find out more about FreeBSD and what's new in 5.2

The License

You'd be hard pressed to find a license less restrictive than the BSD License. Basically it says two things: that anyone redistributing the software must include all copyright notices and the appropriate license agreements, and that the FreeBSD Project and all contributors to the project may not be held liable for the software if problems should arise with it. It places no limitations on what you can do with the code; that means that it's Free Software. You can make unlimited copies of it, install it on any number of machines, give it to all of your friends and family, modify it in any way that you see fit, and even sell it if you want.

Most people are more familiar with the GNU GPL. The primary difference between the GNU General Public License and the BSD License are the restrictions that the GPL imposes on publishers. Where the BSD License allows anyone to take BSD code and turn it into something proprietary and closed-source, the GPL does not. This may seem "more free" than the GPL, but it doesn't protect the rights of end-users the way the GPL does because it does not require the publisher to make the source code available. In this sense the BSD License is seen as friendlier to commercial software companies (and hardware companies that use embedded software); in fact Microsoft at one point took a great deal of BSD code relating to networking to include in early versions of Windows NT.

Overview

There are two main editions of FreeBSD: the development edition (which includes STABLE and CURRENT), and the more stable version with more mature code, called RELEASE. There are two parts to RELEASE: the new technology release (which is, as of this writing, at version 5.2) and the production release (which is, as of this writing, at 4.9). If you have newer hardware (made within the past 18 months) and you're interested in using FreeBSD for experimentation or for regular desktop use, 5.2-RELEASE is likely to be your best choice because of its expanded hardware support. The development team strongly cautions 5.2 users that there could be possibly damaging bugs in the 5.2-CURRENT code, and they're not kidding -- my machine won't even boot a CURRENT build (as of 1/16/04) because of problems with the way ATA drives are handled.

CURRENT is for developers and those who wish to beta test in-progress code, much like using the development or beta version of any other operating system or software package. It may contain debugging features that slow things down, and it may contain broken code that makes your system unbootable or causes data loss. The RELEASE edition is determined by a roadmap designed by the Release Engineering Team; once all of the goals for the next release are accomplished, the code is frozen (in terms of new additions, not bug and security patches) and release candidates are made to perform wider-scale testing. Once the known release-critical bugs are squashed, RELEASE is released.

STABLE is for the production release and it is not what its name implies. The STABLE edition is comprised of mature CURRENT code that is being tested and considered for the next production release. At this point the production release is several versions behind the new technology release because the 5.x code simply isn't old enough yet (meaning mature and tested thoroughly with all planned features fully implemented).

The source tree (kernel + userland) is developed as one functioning unit, not as scattered projects as in the GNU/Linux world. This makes for greater system reliability and cleaner code. Beyond that is the Ports tree, which includes the program source code plus any FreeBSD-specific patches for over ten thousand ported applications. If a GNU/Linux program isn't ported to FreeBSD it can still be used if you have binary emulation enabled, and with regard to that there are hundreds of GNU/Linux programs in the Ports tree that can run flawlessly by using the Linux binary compatibility module.

Clarifications

There are two common misconceptions about FreeBSD that I would like to clarify for readers. To begin with, Apple's OS X is not directly derived from FreeBSD; it's derived from Darwin which was originally based on OpenStep 4.x and 4.4 BSD Lite (the common base for all BSD Unix projects). Later it incorporated some changes to the BSD code made for FreeBSD 3.2, specifically taking some command and library updates from the FreeBSD project. Today's Darwin takes some code from the modern FreeBSD project, but it still uses the Mach kernel, making it binary incompatible with FreeBSD. From all frames of reference, Darwin and FreeBSD are two different operating systems with some common code between them. A new release of FreeBSD means absolutely nothing to OS X development because RELEASE is merely a tested snapshot of CURRENT, but the development of FreeBSD does further the development of Darwin and therefore OS X.

Secondly, the STABLE classification does not mean what it implies. STABLE is actually part of the development branch of FreeBSD. Although I mentioned this in the overview above, I'll restate for the sake of quotability: STABLE is where mature CURRENT code goes before it is accepted as part of the next production release.

Documentation

The FreeBSD Handbook is one of the best Free Unix documentation projects in the industry. It's well-organized, easy to read and understand, and generally up-to-date. Nearly every facet of installation and administration is covered in a simple and concise manner. There are also, of course, the standard Unix manual pages which are accessible from the command line. If you prefer a paper edition of the Handbook, you can buy one for $50 from the BSD Mall.

Installation

The installation procedure isn't any different from the way it was in 5.1 except that serial ATA drives are now recognized on most controllers. I personally tested it out on the VIA integrated controller on the Asus K8V Deluxe motherboard, but the hardware compatibility list has more information on other SATA controllers.

There are two discs to every modern FreeBSD distribution, or alternatively you can use a much smaller third disc (called miniinst) to do a minimum installation with just the base system (no packages). The first one is bootable and contains the base system and precompiled binary packages that were available when that version was released. Disc 2 is also bootable and has tools for assisting with system recovery in the event that your computer is unable to start due to kernel or configuration errors. Also available for download is a boot-only CD, which is exactly what it sounds like.

The FreeBSD installer (called sysinstall)is easy to use and navigate and it didn't have any trouble with any of the hardware I gave it. It's ncurses-based, so the menus are all designed in colored text and render perfectly on any video card and monitor. You can choose to use the CD's files to install your system or you can use the FreeBSD FTP site which will undoubtedly include updated packages and a newer Ports tree, but the FTP route will take longer to install.

The installer is fairly intuitive and informative, and everything works perfectly except for the built-in XFree86 configuration. I don't recommend testing your X Server through sysinstall as it is a sure way to crash the installer, forcing you to restart the entire installation process.

Installation time depends on whether you choose to install any of the packages and if so, how many you install. A typical installation geared toward desktop use will take less than an hour from start to finish, but an experienced FreeBSD user who has a more specialized and specific use for the system (such as for a firewall or server) can have everything up and running in fifteen or twenty minutes.

The FreeBSD bootloader, while simple and unable to be manually configured, is surprisingly useful. It automatically checks the IDE chain at boot time to see if there are any other bootable hard drives and gives you the option of starting from them instead of the FreeBSD disk. In other words it's dynamically configured, unlike GRUB or LILO which have to be manually adjusted in order to work correctly. This is a great advantage because it allows you to keep the boot records of other drives intact, enabling you to more easily create a multi-boot system. If you don't want to use the FreeBSD bootloader you do have the option of installing and using GRUB, or you can choose to not to have a bootloader at all.

Installing programs through the ports system is easy, as mentioned above. But for slower systems that need a lot of time to compile larger programs, it's easier to simply download a precompiled binary package from the package system. FreeBSD has many binary packages which are just as easy to install as they are through Debian's APT program. Precompiled packages and installed-from-source ports can easily work entwined in the same system. You can, for instance, compile XFree86 from source and then install KDE via the pkg_add command. Dependancies are, of course, automatically calculated and installed for you.

Updating

FreeBSD has quite possibly the best updating procedure in the industry. Keeping a FreeBSD system up to date is not simple or automatic (unless of course you write a script to do it for you), but it is easy and efficient and if it breaks it's able to be quickly fixed. The system is divided into two areas: the ports tree (which contains the source code and patch sets for all of the programs ported to FreeBSD) and the source tree (the core OS, including the userland and kernel). The two are updated separately to allow the user to keep their stable base system as it is while allowing installed programs to be updated to newer revisions. If your base system is working well and has all of the functionality you need, it's best to just leave it alone until you have a good reason to update it. Updating a working operating system can have negative consequences, as I've discovered once or twice.

The source and Ports trees are updated through the cvsup program, which connects to the FreeBSD CVS server and downloads updates and changes. Only the parts that have been changed are downloaded, and it shows you which specific ports or parts of the base system have been modified since your last update. This doesn't mean anything to your compiled system though, so if you want the changed source to be implemented you'll have to recompile the kernel and the userland and install them, a process that can take anywhere from one to several hours depending on system speed and other various factors.

Compiling just the kernel is quite easy: you edit the configuration file to your liking (click here to see what a typical kernel configuration file looks like) and then you're four commands away (three of which are often combined in one line) from a compiled and installed kernel.

As mentioned previously, the Ports tree is also updated through cvsup. Alternatively if you have other options set in your /etc/rc.conf configuration file you can run make update in the /usr/ports/ directory and it will do basically the same thing. Again this has no bearing on installed programs until you decide to install the updates by recompiling the updated programs. Usually after you update the ports tree you'll want to update the database that keeps track of your installed programs; this is done with one simple command, and it checks for stale or circular dependancies, changed package names, and stale origins. Next, the portupgrade command takes care of all of the downloading and compiling of updated programs for you. The reason why this is a three-step process is to make the updating procedure more reliable and easier to fix. Having survived the nightmare of Gentoo Linux's always fatally broken and never easily fixed Portage system, I can tell you that "ease of use" means "difficult to fix" because it doesn't allow the user to control the process. I've seen APT and Portage choke on dependancies with no obvious way to fix them, and anyone who has ever tried to use a third-party RPM knows what a disaster that can be. FreeBSD is, if nothing else, a nice respite from the various GNU/Linux package management systems.

There is a binary update utility for FreeBSD currently in development, and a separate utility to perform binary security updates, but it does not yet work with 5.2-RELEASE.

Features

There are few meaningful differences between 5.2 and 5.1, most of them being small changes to various userland commands. A complete listing can be found here in the release notes. The most drastic changes in 5.2 are:

  • Client support for NFS version 4
  • Full tier-1 support for single and multi-CPU AMD64 systems
  • Improved driver support for IDE, SATA, and 802.11a/b/g devices, and significantly better integration with the ACPI power management subsystem
  • Dynamically linked root partition
  • Experimental first-stage support for multithreaded filtering and forwarding of IP traffic.

Client support for NFS version 4 means that FreeBSD now can access NFSv4 shares, which can have stronger security and support traditional file access with file locking and the mount protocol. NFSv4 also supports internationalization, client caching, and compound operations, all of which were not available in previous NFS versions.

Full Tier 1 support for AMD64 means that it is production quality and fully supported by the security officer. This is the first release of FreeBSD to have full Tier 1 support for AMD64. It actually works quite well with AMD64 hardware, but there are some problems: Linux binary compatibility and IA32 binary compatibility don't work yet. That means that the only programs you can install and run are the ones that specifically support the AMD64 architecture. As of 1/21/04 that means no CVSup (although there is a hacked CVSup available which works reasonably well) and no Java support, which also means that programs which require Java will not compile or run. While most of the programs in the Ports tree will work, the ones that don't are pretty important. I've also noticed that mouse support is somewhat limited for some reason -- my Wireless Microsoft Intellimouse Explorer 2.0 and Logitech Cordless MX 700 mice don't work or work very poorly in the AMD64 edition, but in the i386 edition they work just fine.

As previously mentioned, there is now support for SATA hard drives and a wider array of wireless LAN cards. Better ACPI support has been added; the kernel now complies with ACPI 2.0 standards.

The root partition is now dynamically linked, which improves integration with the NSS (Name Service Switch) subsystem and reduces the installed footprint of the base system.

The initial steps have been taken to make the entire network stack fully multithreaded, which would significantly improve its efficiency and performance in SMP systems.

FreeBSD also features a large development team that values good code over expanded features, a cohesive base system that is developed as one unit instead of a separate kernel and userland, a friendly and helpful community, excellent documentation, and over 10,000 ported software applications.

Bugs

Most of my testing was done on the AMD64 edition, but I did install and use the i386 edition as well.

The first thing I noticed when I upgraded to 5.2 was that dhclient, the utility that starts DHCP services, no longer worked correctly. My motherboard has integrated 3Com gigabit LAN using the SysKonnect chip; in 5.1-CURRENT (as of the middle of November) everything worked perfectly... then sometime in December someone changed the CURRENT code somewhere and boot-time DHCP services started less than half the time. With 5.2-RELEASE it doesn't work at all. Changes were made to both the sk driver and dhclient, but I can't figure out which one is at fault. I figured out a long-winded fix for the problem, which is to quit dhclient by using the -r switch, then start tcpdump to send the card into promiscuous mode, then ctrl-c out of it and start the /etc/netstart script to start DHCP. I have to do this every time I boot the machine. I tried some patches that were available but none of them worked; in the end I filed a bug report to ensure that the problem was addressed.

As previously mentioned, the AMD64 edition has trouble with at least two mice. The XFree86 packages don't come with the same video card support that the same programs in the Ports system do. Specifically the precompiled packages didn't have VESA driver support, which is an issue for me because it's the only driver that works for the ATI Radeon 9800 Pro right now.

I ran into a mysterious bug with KUser which deleted my root password... the only solution to this problem was to reinstall the base system from the CD. The problem was addressed in KDE 3.14, and I had installed the KDE package from FTP which was apparently out of date. In fact, package installation was nothing short of disastrous for me. The alternative is of course the Ports system, which I prefer, but it took a while to get the right /etc/make.conf options. Namely, I needed to compile a lot of programs with -fPIC.

It seemed to me that there were far more problems with 5.2-RELEASE than there with 5.1-RELEASE, and actually I was doing much better with my 5.1-CURRENT build from November.

Conclusions

Now that I've patched the right files and found the right compile options and workarounds, I can use FreeBSD again. It's not a pleasant experience to have to use other operating systems once you're used to FreeBSD, and there was a period of about a week that I was unable to use it at all because I couldn't get back to the 5.1-CURRENT build that worked so well for me and I hadn't resolved the DHCP problem. Overall I would say that 5.2-RELEASE should have gone through at least a few more rounds of testing and bugfixing before it was released.

Most disappointingly there was no added support for SoundBlaster Audigy and Audigy2 sound cards even though a working patch (several, actually) has been available for over a year. According to CVS a new and improved Audigy driver was finally committed shortly after 5.2 was released. So here I am still patching just to get my sound card to work, solidifying the suspicion that 5.2 was released too early. I tried to download the changed sound driver files from CVS and compile my kernel with them, but there were errors -- and upgrading to CURRENT caused the system to hang at startup because of the infamous ATA driver problem which was absent from 5.2-RELEASE but has come back for revenge in CURRENT.

Overall 5.2-RELEASE is disappointing from a desktop perspective, but it's still more advanced than any community GNU/Linux distribution that you'll find, especially in the area of AMD64 support. From a networking perspective there have been a lot of improvements (minus the sk/dhclient bug) that can add a lot of functionality and enhance performance. This is, after all, the "new technology release" and as such it is not meant for production servers, but I was expecting more from 5.2. I'm left wondering what the point of this release was, seeing as how there are new bugs and few significant improvements to the base system.

At this point I feel a 5.2.1-RELEASE is in order... if for nothing else, at least to fix the DHCP problems with the sk driver (or is it a problem with dhclient?).

If you're using 5.1 right now and you're happy with it, my advice is not to upgrade to 5.2 unless you're willing to wrestle with it a little and possibly be forced to install the whole operating system again. If you're looking for a free (as in money) operating system with good AMD64 support, FreeBSD is the best you'll find right now. It's missing Java support, Linux and IA32 binary compatibility, but at least two of those three things should be added to CURRENT sometime in the near future. Most of the programs in the Ports system now work well with AMD64.

Copyright 2004 Jem Matzan. Verbatim copying and redistribution of this entire article are permitted without royalty in any medium provided this notice is preserved.


  
Reader Rating from 1-5

 

Poor very 

1

2

3

4

5
 very Excellent

Talkback

Post Your Talkback | View All Talkback (0 Posted)


 Currently there are no Talkback posted on "FreeBSD Review", Click here to be the first to post a talkback.


 
Scroll Up

   About | Term of Use | Privacy | Contact us | Tell a Friend | Advertise  

OSForge News RSS Feed