After great, though slightly lacking experience with FreeBSD on the desktop, I decided to look for the “next best thing” in Linux Land. In the end I chose Debian, and for good reasons, I think. There is so much that Debian and FreeBSD have in common that my observations might be useful to anyone considering switching between the two.
First, shortly on the dissimilarities between Linux and the classic Unices, such as FreeBSD, OpenBSD, NetBSD, Solaris and others. The main contesting point is the definition of the base system. The original Unix paradigm calls for tight integration between the kernel and core tool facilities. After all, the kernel means nothing without the userland interfaces that turn cryptic system calls into actual functionalities. Therefore, BSD systems are tightly developed as a whole (kernel + core userland). Linux was historically only the kernel, initially written by Linus Torvalds. The userland (often of GNU origin) was written later. However, while the core tool set is developed by different project teams, each GNU/Linux (GNU userland + Linux kernel) distribution defines some concept of a base system. Therefore, the Unix vs Linux differences are more historical from today’s perspective. An interesting essay by Eric S. Raymond (“The Cathedral and the Bazaar”) elaborates on the top-down (Unix) and bottom-up (Linux) approaches to software development and maintenance in regards to the base system. Below, a brief “compare and contrast” for the sake of completeness:
- File systems – UFS, ZFS (FreeBSD) vs ext4, xfs, btrfs, etc. (Debian); this does not cover file systems compatible with both Unix-like OS’ (ntfs, fat*, etc.)
- Init systems – BSD-style init scripts (FreeBSD) vs systemd (Debian) or sysVinit (Devuan)
- Package management – ports and binary packages (FreeBSD) vs binary packages and source tree used for development (Debian)
- Sound systems – modified OSS (FreeBSD) vs ALSA and/or PulseAudio (Debian)
- Hard drive naming – adaXsYN or adaXpY for SATA and PATA drives, daXsY for USB drives (FreeBSD) vs sdNX for SATA or USB drives and hdNX for PATA drives (Debian) where X, Y are integers and N is a character
- Releases – CURRENT, STABLE, RELEASE (FreeBSD) vs Unstable, Testing, Stable (Debian)
- Containers and virtualization – jails and bhyve (FreeBSD) vs LXC, KVM, etc. (Debian)
- Other differences I did not mention
Important to note, Debian features listed above are common to most GNU/Linux operating systems. For instance, KVM is a Red Hat invention. Also, the differences between FreeBSD and GNU/Linux have blurred over the years. For instance, FreeBSD offers a lot of GNU tools as part of the Ports Tree, while ZFS and some useful BSD commands were ported to GNU/Linux. Can one then be considered better than the other?
In the end, it all boils down to specific use cases, I believe. Although both Debian and FreeBSD target servers, their strong points are substantially different. FreeBSD relies heavily on data protection and consistency (ZFS), but also slim virtualization (bhyve) and process isolation (jails). If those features are important to us and clearly they should be if we are running a multitude of network-facing services, FreeBSD is clearly the better choice. However, if we want a more general-purpose operating system that is consistent across multiple platforms (mini-computers, servers, workstations, desktops, etc.), Debian would be more suitable. The edge that the bazaar/Lego Linux design has is that one can tailor the operating system to specific needs without the need to use different Unix kernels. Furthermore, hardware and tech support for Linux-based operating systems are clearly more prevalent. It’s down to the availability of resources, though it is rather important to mention that a good server platform can potentially make a reliable and secure operating system for home use as well. Something worth remembering!