In order to cut down on repeats of very simple questions, please read this post first to determine if your question can easily be answered by existing resources.
You're highly encouraged to read the supplemental documentation for whatever BSD you're using before
posting a question. Most questions will be answered by the documentation on the respective BSD's website. Unlike some Linux distributions, all
BSDs are very well documented with meaningful examples. Trust me, read the docs first.
BSD project official homesites & documentation
Q: Is BSD Linux?/Does BSD use Linux?/What's the difference between BSD and Linux?
A: BSD for Linux Users
Q: What are the differences between the major *BSDs?
The long answer my be found at Daemon News: The BSD Family Tree
My answer would break down like this:
The open source versions of Mac OS X (sans the Auqua interface). Obviously they're for the PPC architecture.
Focuses on massive scalability and being a logical continuation of the FreeBSD 4.x
tree. More information on their goals may be found on their website
Focuses on being a mainstream server platform and also supporting as much i386 hardware as possible. This means that it often supports more rare or new x86 hardware than the other *BSDs.
Focuses on being able to run and cross-compile on any device capable of being bootstrapped. They also are very concerned with correctness and code auditing, and it's widely believed that NetBSD
has the fastest TCP/IP stack.
Focuses on correctness and security. People think that OpenBSD
is completely focused on security, but that's not quite right. The developers are more concerned with correct coding techniques and security is a byproduct of that (less bugs). Also having a very secure default configuration lends a lot to the reputation for security.
You should really read for yourself. Each of the *BSDs generally has a website with an address of www.
<name of bsd>.org, and on that website there is a "goals" link. Read the goals of each OS and make up your own mind whether it fits what you're looking for.
You could also read this article at ServerWatch "Differentiating among BSD Distros"
Note that the article isn't exactly accurate, as it wrongly calls BSD operating systems "distros", claims that BSD has less software available than Linux (FreeBSD has over 10,000 ports), and attributes the TCP/IP speed record to FreeBSD (actually NetBSD currently holds the record).
Q: How are the different *BSDs related?
are derived from 4.4BSD Lite
is a fork of NetBSD
, and DragonflyBSD
is a fork of FreeBSD
is the underlying OS to Mac OS X
, which is built on a Mach
microkernel, that is itself derived from 4.2BSD
. Userland in OS X
comes mostly from FreeBSD
, so basically OS X
is a big BSD melding pot.
Q: Should I edit my kernel configuration?/Should I build a custom kernel?
Almost certainly, NO
. All the BSDs are built to have completely usable kernels by default and should have the correct options for 99% of all situations. Note that hacking your kernel config to remove device drivers will not increase performance at all, it just makes the kernel smaller (and only by a few hundred KB at that, i.e. not worth it). On FreeBSD
need to edit the configuration to add your sound devices (although it's usually possible to enable sound via a loadable module), and on OpenBSD
you will need to add some options if you're setting up RAIDFrame (don't do it unless you acctually are
setting up RAIDFrame, though).
In general kernel config hacking on BSD is discouraged. It puts your kernel out of sync with what the developers are using and means that every time new devices or options are added to the default kernel, you'll have to hand-merge those changes into your own kernel config. On OpenBSD, as long as you're only adding
options you can actually create a tiny config file with just your changes and have it include the GENERIC kernel config.
The bottom line is that you shouldn't change your kernel config unless you have a very good
reason to. BSD veterans won't consider you "l33+" if you hack your kernel config, they'll consider you an amateur. Developers and mailing list members are extremely unlikely to help you if they find that you're using a custom kernel, and may well ridicule you (particularly on the OpenBSD
Q: Will customizing my kernel increase performance?
In most cases, NO
. The one exception is the FreeBSD
development tree, that has a substantial amount of debugging code in it (5.0-5.2.x). On the other BSDs (including FreeBSD
4.x) all you can really remove from the kernel is device drivers and removing those only shrinks your kernel a tiny bit and possibly decreases your bootup time by a few seconds.
Unless the difference of a few hundred KB on disk or in RAM is some how a huge issue to you, you shouldn't be removing device drivers. Some device drivers rely on each other in ways that might not immediately be obvious, for instance USB mass storage relies on SCSI drivers, so even if you don't have a SCSI device in your machine, you almost certainly want to keep those drivers in so you could use a USB thumbdrive or USB-attached digital camera.
Trust me, it's really not worth it given all the interesting ways that you could break things and the fact that customizing will make it dificult if not impossible for people to help you with weird problems you might encounter.
I'll be adding more useful links here as time permits.
Please e-mail me if you have any suggestions, corrections, or additions to the BSD FAQ.