FreeBSD vs Linux – A home user’s perspective

Short version: If you’d like more control over your software (compiled and binaries), try FreeBSD. It’s got the latest apps, and is a lot more predictable than Linux.

Damn, that’s a tall order, don’t you think? Well, I’m not a kernel hacker, but that’s my opinion after trying a bunch of Linux distributions* and FreeBSD.

Package availability

There are two falsehoods that seem to come up when discussing FreeBSD: There are few available programs, and those few are old. Wrong on both counts – FreeBSD 6.2 has KDE 3.5.6, GNOME 2.18, Firefox 1.5, 2.0, and 3.0a, OpenOffice.org 2.2, GAIM 1.5 and 2.0b6, Skype, Thunderbird, KeePassX, and over 16,000 others. I’ve found all my favorites, plus a few surprises like Quake 3.

Package management

This is where FreeBSD really leaves Linux behind. Of all the *nix documentation I’ve read, the FreeBSD handbook‘s section on installing software must be one of the most lucid and immediately useful. It concisely explains how to install from source and binaries, check for security problems, search for software, update everything, and update the software collection with a handful commands.

Directory structure

Personally, I can’t stand the way *nix file systems are organized. Where do I find the Firefox icon, after KDE “loses” it? Where should the different pieces of Apache go? I’ve used a bunch of tutorials for how to set up Apache on Linux, and they never seem to agree. Somebody should ax FHS and get us some directory names people can understand.

Now, FreeBSD uses the same old mess. But, the structure is stable, documented, and (seemingly) followed by the installation programs. So there’s a single place to get the authoritative answer, and a single place where the file should go. If you’re wondering where a single file went, you can use
pkg_info -L package
to find out.

Hardware compatibility

FreeBSD works fine with all the hardware on my Dell Latitude D610 laptop, which was a surprise after hearing several persons bashing FreeBSD for its hardware support. You might wanna have a look at the hardware notes for the version you’re installing, just to make sure (e.g., 6.2-RELEASE on i386).

Help availability

Another great thing about FreeBSD is how rare major redesigns are. At least, I guess that’s the reason why I’ve been able to use 8-10 year old tutorials and howtos successfully with the newest FreeBSD release. Try that with Mandriva (then Mandrake), Ubuntu (didn’t exist), Fedora Core (ditto), or any other Linux distro, except perhaps Debian.

* Ubuntu, Mandrake, Mandriva, SuSE (before Novell), SLED, SLC, and Fedora Core.

Advertisements

5 thoughts on “FreeBSD vs Linux – A home user’s perspective

  1. >Short version: If you’d like more control over your software
    >(compiled and binaries), try FreeBSD. It’s got the latest apps, and is
    >a lot more predictable than Linux.
    Gentoo also has the latest apps, and I would definitely argue portage gives you more control over your packages. Further, with Gentoo everything’s a package. I’m not fond of managing the FreeBSD base system and ports separately.

    Regarding packages, while Gentoo does seem to offer a larger selection, I agree FreeBSD is adequate for many people. However, where GNU/Linux distributions really shine is the configuration. A simple example from a home user’s perspective: Under FreeBSD’s GNOME (which I’m typing this post in), I can right click on my clock and select “Adjust Date & Time”. The result: “The configuration could not be loaded. You are not allowed to access the system configuration”. I’m in the wheel and operator groups, have sudo access, but GNOME still won’t let me adjust the clock. This is because GNOME uses DBUS, and a DBUS policy needs to be configured to enable this. Further, FreeBSD doesn’t start X as a parameter to ssh-agent. As such, the ssh-agent doesn’t automatically run when I launch GNOME. The Ubuntu developers have GNOME up-to-date, and have also taken the time to solve all of these problems, and more. The end result is that Ubuntu saves me hours in lost productivity as “it just works”.

    I can never understand why people get so up tight about *NIX directory structures. As long as you have a good package management system, you can find any file in seconds. Unfortunately for FreeBSD, there is no standard way of managing ports (apart from using make files directly). Even the handbook mentions portmanager and portupgrade, even though they largely overlap in functionality. Debian uses “dpkg -L ” to do the same thing as “pkg_info -L “. You can also point dpkg to a file on your system, use -S and it will tell you which package a file belongs to. To obtain this same functionality on FreeBSD, you need to install the pkg_which port, which of course means another command to remember.

    And then for some strange reason FreeBSD requires you to specify the exact package version number as well as the package name. Who the heck remembers version numbers? I first have to run pkg_version and wait a minute to look up my package version. Alternatively (if my ports tree hasn’t been updated) I can run “find /usr/ports -depth 2 -iname ‘*package*'”, wait a few minutes, skim through the Makefile and find out that way. Seems crazy putting FreeBSD users through this torture!

    Even more frustrating is the fact that FreeBSD names device nodes, network interfaces, etc based on the type of device. It’s not enough to say “network card 1” – you must actually refer to it by a name that may vaguely resemble the chipset type, manufacturer brand or something else. This means that when you replace your network card, you must update /etc/rc.conf, /usr/local/etc/dhcpd.conf, /usr/local/etc/smb.conf, etc. until all references use the same name. Ridiculous! GNU/Linux users can name their interfaces with UDEV or the nameif command, but generally defaults to eth0, eth1, etc. so it’s obvious what to expect.

    Hardware compatibility is worse under FreeBSD than any operating system I have tried to date. You would probably have an easier time finding drivers for DOS. When I wanted to try out FreeBSD on my home machine, I quickly discovered that it wasn’t compatible with my network card. It wasn’t compatible with any of my USB to Ethernet dongles either. I printed out a 10 page list of compatible network cards, went out specially to buy one, the third store I went to had a compatible card, came back home to install it and it still didn’t work! SSH timeouts and all sorts of nasties would occur after a few minutes of network activity. It turns out that older versions of FreeBSD worked with the same hardware without fail, but they didn’t do the regression testing when they brought out a new release! I had to compile my kernel with upstream patches to get it working. There goes my ability to freebsd-update the kernel!

    Sound has also been a nightmare. While the documentation states that the card I have is supported, S/PDIF isn’t available! That’s as good as unsupported because my surround sound system connects to my PC via S/PDIF. Useless. Further, my new 8800GT video card is unsupported by nVidia at this stage, and even if there were drivers available it’s only supported when using the i386 version. I’ve got 4Gb of RAM so I used the amd64. Should I spend another few days recompiling everything to 32-bit binaries?

    Every single device I have in this computer, including USB to Ethernet dongles, etc. work perfectly under Ubuntu without any manual configuration. When I run FreeBSD, I feel like I’ve been sent back in time to the dark ages when the Linux kernel had the same problems. Maybe in 10 years FreeBSD will get better, but from what I’ve seen it has an incredibly long way to go. Don’t even get me started on the hardware issues I have with a FreeBSD machine at work (again, with FreeBSD “supported” hardware that actually works perfectly under Ubuntu). Telling people to read the release notes “to make sure” probably could be worded better.

    Your comparison to Mandriva, Ubuntu and Fedora Core is unfair. You are comparing “for-profit” distributions (at least to a degree) to a real community-driven project. That’s why you said Debian is an exception – because it also is community driven. I haven’t tried Gentoo in a few years, but I’d be willing to bet that they too are sticking to the same way of doing things. Despite the huge community and frequent application updates they’re still on release CD 2007.0!

    The one single useful thing FreeBSD has (even superior to what Linux has, perhaps) is the UFS snapshot capability. It’s very easy to use, and is handy when using dump and restore on a mounted filesystem. On the other hand, GNU/Linux distributions have LVM2 snapshots to compensate.

    Finally, I use virtualization a *lot*. FreeBSD is not officially supported by any product (open-source or otherwise) as a host OS. In this day and age where new PCs commonly have 64-bit quad core CPUs with VT extensions (and the Linux kernel has KVM built in to take advantage of this), FreeBSD’s usefulness is often limited to mainstream server tasks such as running CIFS, HTTP, DNS, DHCP, IMAP/POP, SMTP, SFTP, etc.

    Seriously, 10 years ago, I would waste heaps of time tinkering with open source (GNU/Linux) software and trying to get things working. These days, I just don’t have the time, so Ubuntu is the more attractive solution for me.

    Sort version: Use Ubuntu if you want things to “just work”, or Gentoo if you want to have maximum control over your OS and your have a fast box and lots of time to waste. I see no clear reason to use FreeBSD other than just for kicks (in which case, the GNU system running the Hurd might also interest you).

  2. Pingback: Jenny & Adam’s Blog » What I really think of FreeBSD

  3. Yep, FreeBSD is definitely a bad choice for a desktop OS, and on modern hardware. But I used it mainly on old hardware for a SSH and Subversion server, so that was no problem.

    S/PDIF (aka. IEC958) is badly supported on *nix, and only recently did I manage to get it working on Ubuntu.

    Another huge problem with FreeBSD is the online help system: The whole thing is a giant WTF! This comment would spiral out of control if I explained all the technical and usability problems encountered when submitting a handful bugs. Conversely, this is one of the great strengths of Ubuntu.

  4. Was just looking for something, and stumbled on this glacial-speed discussion. As one posting is rather much of an anti-BSD rant, I thought I’d add my note.

    First interface names. I find BSD’s default of naming interfaces so that you know which hardware is underneath a great benefit. I do a lot of testing and evaluation of hardware, and it’s a great benefit to easily see which interface you’re working on. If, however, you want to change the name, you can; there’s no separate command for it, it’s just part of ifconfig:
    [sd3:/usr/src/tools/tools/nanobsd]# ifconfig -a
    bge0: flags=8843 metric 0 mtu 1500
    options=9b
    ether 00:e0:81:2d:6f:f2
    inet 10.20.30.1 netmask 0xffffff00 broadcast 10.20.30.255
    media: Ethernet autoselect (none)
    status: no carrier
    bge1: flags=8843 metric 0 mtu 1500
    options=9b
    ether 00:e0:81:2d:6f:f3
    inet 10.11.12.8 netmask 0xffffff00 broadcast 10.11.12.255
    media: Ethernet autoselect (1000baseTX )
    status: active
    lo0: flags=8049 metric 0 mtu 16384
    inet 127.0.0.1 netmask 0xff000000
    [sd3:/usr/src/tools/tools/nanobsd]# ifconfig bge0 name eth0
    [sd3:/usr/src/tools/tools/nanobsd]# ifconfig -a
    eth0: flags=8843 metric 0 mtu 1500
    options=9b
    ether 00:e0:81:2d:6f:f2
    inet 10.20.30.1 netmask 0xffffff00 broadcast 10.20.30.255
    media: Ethernet autoselect (none)
    status: no carrier
    bge1: flags=8843 metric 0 mtu 1500
    options=9b
    ether 00:e0:81:2d:6f:f3
    inet 10.11.12.8 netmask 0xffffff00 broadcast 10.11.12.255
    media: Ethernet autoselect (1000baseTX )
    status: active
    lo0: flags=8049 metric 0 mtu 16384
    inet 127.0.0.1 netmask 0xff000000
    [sd3:/usr/src/tools/tools/nanobsd]#

    To do this automatically at boot time, just hack a script based on output from “ifconfig -a” and number them sequentially.

    As for much of the rest, arguably Linux tends to have better support for the latest gizmos and gadgets, but I invariably find that most things require an amount of fiddling before they will work. As a server O/S OTOH, FreeBSD is totally superior; it is infinitely easier to work with, has many highly valuable tuning options and alternatives (eg google for “nanobsd”), and has exemplary stability. While it doesn’t have hardware virtualization, using “jail” technology you can virtualize any number of FreeBSD instances.

    Horses for courses, I guess, but my company dropped Linux in favour of FreeBSD mainly because Linux has too many cooks that do too many things their own way, and in my personal experience I feel the reliability, predictability, and “workability” of Linux has been falling in the past year or two.

    — Greg

  5. Hello everybody, I need some help

    I would like someone to explain to me that when I come on FreeBSD with the GNOME desktop as root, and I want to change or configure the network, or modify any user, or create a shared folder, and I may not see a ensage that says

    THE CONFIGURATION COULD NOT BE LOADED YOU ARE NOT ALLOWED ACCESS TO THE SYSTEM CONFIGURATION.

    Thanks very for your help

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s