What are BSD systems? These are systems based on the code the development of which was coordinated by Computer Science Research Group (CSRG) at Berkeley University. Some very long time ago, AT&T (1960-1970) had started developing an operating system we today know as Unix. However, at that time the above company had been prohibited from selling software, so it licensed its code to universities for a small fee in exchange of getting it back but patched (improved). Berkeley is the place where the term BSD (Berkeley Software Distribution) was born.
Presently this term only identifies the family of operating systems with common history, the same way of handling particular tasks (like compilation of a kernel), or the same terminology like, for example, the “base system”, which is an installable BSD-style OS with its kernel and system utilities, not packages. The term “packages” means any additional software not included in the base.
To understand the differences between OpenBSD and FreeBSD, we must also get some brief picture of differences between BSD systems and Linux.
BSD systems, contrary to Linux, are enveloped with myths some people believe are true. A guy in a BSD forum once said that Linux packages intended for one Linux distribution cannot be always easily installed in other Linux distros, which is the same complication as with OpenBSD packages, for example, which you cannot install in FreeBSD, and that it is thus unfair to compare Linux and BSD systems by criticizing bad installability of Linux packages in a Linux these packages are not intended for.
Unlike Linux, FreeBSD and OpenBSD differ in their base system more manifestly – whether it is the kernel or system commands.
FreeBSD vs OpenBSD
FreeBSD: has more applications (packages) available than OpenBSD; the number has exceeded 20,000, which you may confirm at www.freebsd.org/ports website. The FreeBSD ports tree is one of the biggest in the BSD world.
OpenBSD: has fewer packages and newer ones appear with delays; OpenOffice.org was ported some years after it had been already available in FreeBSD.
FreeBSD: is much more user-friendly for newcomers, but some criticism appears that it is too robust and therefore a little less transparent. Some features that users have been accustomed to change more frequently over time, or rather shift away from what this OS looked like before. During the development period of many years, users have come across a number of things that more visibly steered away from the historical FreeBSD coastline – for example, the kernel in older versions of FreeBSD was in the root directory, or the syntax in the kernel compilation file (/sys/i386/conf/GENERIC) has kept changing more dramatically then in OpenBSD over the period of many years.
OpenBSD: is slimmer; if you demand something, you will almost always succeed (fewer problems with unresolved library dependencies). After many years, this OS has remained much the same. If you download a new version of OpenBSD, it will not startle you (that some names of devices changed, for example). Ports will always install successfully. However, OpenBSD may appear a little bit more difficult for people who got accustomed to GUI administration, as users must configure everything manually (for example, by editing scripts in /etc).
FreeBSD: installation takes place in the text graphics with intelligible wizards. Today, FreeBSD also has its installation DVD (a downloadable ISO image), which contains many binary packages such as KDE, GNOME, etc.
OpenBSD: the user will burn the install46.iso CD image that is available on a number of FTP servers (the number “4.6” indicates the current version). Unless you buy the official OpenBSD CD’s or DVD’s, you must always download binary packages separately, or install them over the Internet. Contrary to FreeBSD, the install46.iso image contains only the base system. The installation process is in a pure text (not text graphics). If you want to manipulate your disks, you will have to deal with cylinders – a ghostly approach for most users. OpenBSD will always keep you knowing that you descended deep into the basement of the real Unix.
FreeBSD: partitioning of disks is a straightforward and easy job like a breeze. Easy partitioning is available to you even after you finished installing the system – run the sysinstall command (a text graphic wizard for system administration), and then choose “Do post-install configuration of FreeBSD” from the menu, then “The disk slice (PC-style partition) editor”. That’s it.
OpenBSD: partitioning of disks requires more knowledge. The system does not have any central configuration tool such as sysinstall in FreeBSD. You must do all your system configurations manually by editing the relevant scripts (with vi or any other editor).
FreeBSD: the base system does not include software that underwent paranoic security auditing. If you want to use the Apache Web Server, you must install it from ports (packages). In FreeBSD, the OpenBSD Packet Filtering (PF) is available as a kernel module.
OpenBSD: the developers put a secure Apache Web Server into the base system and you do not need to install the Apache Web Server separately (from ports). OpenBSD implements other smart security policies, too.
FreeBSD: you do not have to set your terminal type after you log in; history of your shell commands is available even after you reboot your PC. If you want to implement some security policies (like swap encryption), you must configure them additionally.
OpenBSD: every time after you type your login name and password, the system will prompt you for a terminal type (xterm, vt220, etc.); history of commands is always erased after the next reboot (for security reasons); the system comes with security measures (like swap encryption, etc.) that users do not need to employ additionally.
FreeBSD: works with kernel modules like Linux. The FreeBSD kernel with modules is in the /boot/kernel directory (modules have the *.ko extension like, for example, snd_driver.ko). User modules like kqemu (used to speedup the Qemu accelerator) are placed into the /boot/modules directory (after you kldload them).
OpenBSD: supports modules, too, but does not use them. The kernel has the name “bsd” and is monolithic (from one piece that does not need anything more); you will always find it in the root directory (/bsd).
FreeBSD: names of devices differ from OpenBSD. For example, physical disks are referred to as /dev/ad0, dev/ad1, etc.; USB disks as /dev/da0, /dev/da1, etc., global partitions (“slices” in the BSD terminology – visible by all partitioning tools) are referred to as /dev/ad0s1 (first partition on the first hard drive – /dev/hda1 in Linux), /dev/ad1s1 (first partition on the second hard drive – /dev/hdb1 in Linux), etc.; FreeBSD partitions (visible only by FreeBSD) are referred to as /dev/ad0s1a, /dev/ad0s1b, /dev/ad1s1e, etc.
OpenBSD: whether you deal with global (slices) or OpenBSD partitions, OpenBSD follows one naming convention only – partitions have letters – /dev/wd0j, /dev/wd0a, etc. USB disks are referred to as /dev/sd0, /dev/sd1i, etc.
FreeBSD: in addition to excellent manual pages, this OS has a comprehensive documentation kept in the /usr/share/doc directory.
OpenBSD: except for searchable documentation and FAQ on the Internet (www.openbsd.org), it does not have such a comprehensive documentation as FreeBSD in its /usr/share/doc directory.
FreeBSD: to switch between consoles, you need to press [Alt-F1], [Alt-F2], etc. If you have the X environment running, you will get back to it (from text consoles) by pressing [Alt-F9]. If you want to go to a text console from your X environment, you need to press [Ctrl-Alt-F1] (or [Ctrl-Alt-F2], [Ctrl-Alt-F3], etc.).
OpenBSD: the user switches between text consoles always with three keys – [Ctrl-Alt-F1], [Ctrl-Alt-F2], etc. You will get back to the X Window system, if it is running, by pressing [Ctrl-Alt-F5].
FreeBSD: the community is more open to ideas and questions to which anybody will probably always get a response. If you have a general question, you can send an email to the addresses listed at www.freebsd.org website.
OpenBSD: the community (www.openbsd.org) is closed, uncommunicative; some people say that it does not like questions. To say it better, the community wants you to thoroughly read all the manual pages and will barely answer questions like how to mount a Linux partition, or how to boot your OpenBSD box into a single user mode. To get some help, the best policy for you is to read OpenBSD forums where questions are welcome.
FreeBSD: although a few tweaks are necessary to implement this (look at www.freebsd.nfo.sk), in version 7.1 and higher, you can use Adobe Flash 9 with native FreeBSD Internet browsers (Seamonkey, Firefox, Opera) and watch youtube.com videos.
OpenBSD: you can only use the archaic Flash 7.0 for Opera Browser, which, unfortunately, does not work very well (the video is good, but the sound disobeys).
FreeBSD: was primarily developed for the i386 platform.
OpenBSD: supports more platforms than FreeBSD (but fewer than NetBSD).
FreeBSD: is probably a little more responsive in the X environment with default settings (without tuning). In my FreeBSD box, OpenOffice.org 2.4 writer opens in 16 seconds in KDE 3 and many other apps, too, launch a little bit faster.
OpenBSD: applications launch a little slower in X in the default installation (without tuning). OpenOffice.org 2.4 writer opens in 34 seconds in KDE 3 (tested on the same computer as with FreeBSD). To speed up your OpenBSD box, you need to tweak it (disable swap encryption, for example, enlarge the number of files that can be opened, etc.).
FreeBSD: none of its features dominate – stability, security, and usability, as well as desktop or server/network deployment, stand proudly alongside each other. The latest software and drivers (WiFi, KDE4, etc.) appear in the system much sooner than in OpenBSD; thus it is possible to say that FreeBSD fits better for desktops.
OpenBSD: its priority is security; only then do follow other aspects.