FreeBSD vs. Gentoo


Introduction

FreeBSD and Gentoo are both acceptable operating systems in my book, but they both have their weak and strong points. They both have excellent speeds, so you're not going to see any tedious graphs of how much faster Gentoo can convert a .gif to .png on this page.


Installation

FreeBSD wins hands down. It's not even a competition. sysinstall on FreeBSD is the easiest thing to setup, and I can get a copy of FreeBSD installed and into command line in under fifteen minutes. Gentoo's suggestion for installation is archaic. They made a livecd that will install Gentoo in a text mode of GUI, but it really does take longer than FreeBSD and it really did screw up a couple times.

I have no clue why, but the Gentoo partitioning step on the livecd wouldn't let me have a FreeBSD partition. It refused to install because it said my FreeBSD partition was "Unknown" and this somehow matters to them. So I deleted the FreeBSD partition since it was only a snapshot, and let Gentoo install. Windows didn't want to boot after that, but that was mostly a grub issue. On my second time through the livecd, I was able to get a Grub setup where Windows and Gentoo stopped fighting and let the other guy boot, but it was pretty inconvenient.

On a later install of x86_64 Gentoo, the livecd failed to work because it would freeze up when it tried to install the perl package, which was beyond my control. It got stuck twice on this part, so I resorted to using the manual installation. This method allowed for customization and optimization that isn't offered on the livecd setup.

The Gentoo install process strives on being minimal and customizable to perfection. In all honesty though, there isn't much more customization to it than what FreeBSD can offer. If you want a minimal setup, FreeBSD has that as an option upon installation. FreeBSD will also take care of things like timezones and network adapters by just asking, instead of making these details be manually set.


Initial Setup

I'm sorry, but FreeBSD again. Five minutes into Gentoo and it's already spitting error messages at me about port overlays, masked packages, updating configuration files for emerge, it just went on and on. All I wanted was 915resolution for my widescreen monitor and it says "Masked package" when I try to install it. Well that's cool, but I need it for X. Why is it even masked in the first place? I never had this problem with FreeBSD, the port worked and everyone was happy. If they knew it wasn't going to work, it wasn't in the ports in the first place.

In order to continue from there, I had to manually edit a file that approved 915resolution so that I could install it. Is a question too difficult? Portage can't just say, "This package is not fully supported, are you sure you want to install it?"

Sound. Alsa blows. Here's my sound setup on FreeBSD.

kldload snd_hda

The sound works perfectly at this point. Multiple programs can play sound at once and I'm happy. On Gentoo, I emerged the alsa-plugin, attempted to setup dmixer, kept screwing around with it until I eventually got sound working. Okay, but now every time I try and play more than one sound, the second program won't play. What is this? My soundcard /dev/dsp is already in use? What should I do now? Setup a ~/.asoundrc? Is it so hard to just make a sound system that can play more than one sound by default? The solution for this problem sucks anyways, I have to type aoss in front of every application that uses sound just so it can share the soundcard when I run them.

FreeBSD's startup applications are easier to set too. Basically if I want Apache2 on startup, I add the line

apache2_enable="YES"

to /etc/rc.conf and everyone is happy. Usually the port tells you to add this to your rc.conf after it is done installing, so there are no problems. The Gentoo alternative is

rc-update add apache2 default

and it doesn't even flow well with how Gentoo is setup. Why the change of heart? Gentoo decided that in order for me to install an application that was masked, I had to manually edit a configuration file. Now if I want to add a program to startup, I don't edit a file, I run a program that does it for me. Well what the hell, either make me edit the files, or have a program that handles it for me.

For licensing reasons beyond my knowledge, installing Java on Gentoo is a lot faster than FreeBSD, because FreeBSD requires a manual sign in to the Sun website to fetch the source, while Gentoo just grabs it for you. That only applies to Java, but it was noticeably faster and less hectic to install Java on Gentoo.


Port System

I hate USE flags. USE flags are probably the worst part of emerge when compared to FreeBSD.

Let's say I want to install PHP. Here's FreeBSD.

whereis php5
php5: /usr/ports/lang/php5
cd /usr/ports/lang/php5
make install clean

Notice how I didn't check the USE flags. Look at this now.

make config

So basically, if I want a feature, I can just check the box and it will configure it in for me. If I prefer this screen to not appear, I can set BATCH=YES and it won't appear anymore, it will just take the defaults. Okay let's compare to portage on Gentoo now.

emerge -pv php
USE Flags

I wanted to install PHP with an Apache module, does it have to be this complicated? Okay, I know, I'll just do this.

USE="apache2" emerge php

Well, it worked. I now have PHP and I now have my Apache module. A week goes by. PHP is updated. So I update portage and run

emerge --update php

Okay, done. Wait a minute, where did my Apache module go? Apparently the USE flags didn't carry over. I was supposed to edit /etc/portage/package.use and add the line

dev-lang/php apache2

No. That's stupid. If I set a USE flag the first time and I run an update, use it again, this shouldn't even be a problem. It's not a bug, it's a feature. The idea of having to edit some file every time I want to configure an application with a USE flag for fear that it won't use it again if I ever update is stupid. I don't even know what half of those USE flags mean, FreeBSD would have at least a description on what they do when I install. Also, sweet yellow color choice for new flags. I love blinding myself everytime Gentoo decides a package needs a new flag.

Upgrading ports is anyone's game. FreeBSD's portupgrade freaks out on me sometimes, but emerge skips things because they are masked, when I really did want that update, just wasn't aware it was masked.

Then sometimes portage likes to play this game where they'll see how many packages I'm willing to unmask to install something. It was something trivial, but I decided I wanted the latest version of Fluxbox in portage, since their stable version was outdated compared to the stable FreeBSD.

emerge -pv fluxbox
!!! All ebuilds that could satisfy "something/minor" have been masked.
vi /etc/portage/package.unmask
emerge -pv fluxbox
!!! All ebuilds that could satisfy "something/else" have been masked.
...repeat for the rest of your life...

FreeBSD's port system also has one huge advantage over portage. I compiled Ktorrent through Gentoo for about 15 minutes. When it finished, Gentoo gave me a huge warning saying that there was a file collision, and the install will now stop.

Uhh, thanks? The collision was nothing important, but if it was important I guess I wouldn't want Gentoo just overwriting it. So I removed the file, and then Gentoo decided it would start the compile over again.

Well that's fantastic, let me sit here for another 15 minutes to recompile because of a file collision. FreeBSD does not have this problem. When you start compiling on FreeBSD, if you reach an error or cancel the compiling, you can pick up where you left off with "make", or you can start over with "make clean". There's no need to throw compiling progress out the window because of a file collision.


Desktop

I run Fluxbox for my desktop, so no Gnome or KDE on this end. Gentoo, will win this round. I would use FreeBSD in a heartbeat, just... I can't. Flash 9 is only supported on Linux. Yeah, Flash 9 can be run on an emulated version of Firefox for FreeBSD, but it crashes and can't play sound because it needs Alsa to run, which FreeBSD thankfully doesn't have. Flash 7 works perfect on Firefox for FreeBSD, but sites tend to require Flash 9 for basically everything, so it really doesn't cut it.

Wine. FreeBSD can't do Wine. It just doesn't work well at all. Gentoo Wine is just better, and I need the art program Flash MX to draw things(Gimp just doesn't cut it in some cases), so I need a Wine that actually works. The day FreeBSD gets native Flash 9 and somehow fixes the Wine issue, it will be my desktop. For now, FreeBSD will run my servers without X, but Gentoo will have to be my desktop.

Gentoo and Linux in general just has more supported desktop applications. Parted, QTParted, Gparted, and Virtual Box will not work in FreeBSD, I've been hacking away at their MakeFiles and configure scripts with no luck at all. Basically, I've been forced to use Gentoo as a desktop, because FreeBSD doesn't support all the applications I want. Besides that, Gentoo was easier to use with K3B cd burning right away, and I was able to configure FUSE faster, so I was able to write to my NTFS partition within Gentoo.


Updating

I dread FreeBSD updates. They usually add more features that are actually noticeable when they make an update, but FreeBSD updating could be better. They have a tool freebsd-update on newer versions of FreeBSD, but Gentoo is a lot easier. Basically on Gentoo, I emerge --sync once a day, and if they release a new kernel, all I have to do is use my old configuration and genkernel and the update is done within ten minutes. I can't say the same about FreeBSD, especially when they release a whole new number. Updating FreeBSD 5 to 6 is a scary thought, to the point where I would just backup anything important and do a fresh install. This is the guide to updating FreeBSD 5.4 to 6. You know, sysinstall only takes ten minutes to install FreeBSD, and that way I can just start clean, so for me it really doesn't matter.

But I could never do that for Gentoo. There were just way too many things that had to be fixed on Gentoo to the point where I just may never format because I don't want to go through that ordeal again. Running off of the Linux kernel is very easy to update thankfully and I can always revert back to my old kernel if something fails in the new update. Generally, I've never had to rebuild my FreeBSD kernel that often, but if I did, it was just as safe too.


Conclusion

FreeBSD is awesome for servers that don't need desktop applications, Gentoo gets the job done for desktops. Although BSD and Linux are two separate types of operating systems, these two are the best of both for me.