If you’ve read my article introducing Linux and OpenBSD , you’ll know that BSDs are complete operating systems, whereas Linux is merely a kernel.
This means that when you install FreeBSD, the kernel and the userland have been developed together. This ensures a certain degree of stability, there is little chance that the system will stop working after a simple update.
Conversely, when you install a Linux distribution, most of the components have been developed separately. The kernel was developed on one side, the init system on another, and the userland yet another. Putting it all together is quite a feat, and even the slightest mishandled update can cause the whole structure to collapse.
The Ubuntu case
Ubuntu is one of the best-known Linux distributions. Unlike so-called rolling release distributions, Ubuntu releases new versions regularly and locks down the versions of the installed software. For example, when Ubuntu 24.04 was released in April 2024, Apache httpd 2.4.58 was available.
To ensure system stability, Ubuntu does not incorporate new versions of Apache every time they are released; instead, it retains version 2.4.58 and applies bug and security fixes for the duration of the Ubuntu release’s lifecycle.
Ubuntu makes one notable exception: the kernel. Problems arise when Ubuntu decides to install a new version of the kernel.
The kernel update that causes the system to crash
For example in 2026 Canonical, the company behind Ubuntu, decided to upgrade the Linux kernel from version 6.x to version 7.x in Ubuntu 24.04. The problem is that the system is fragile, and when certain components are incompatible, it does not roll back the update. Users who had VirtualBox installed found their systems crashing after this update, because VirtualBox installs its own kernel module, and this was not yet compatible with version 7.x of the kernel. As a result, the update would crash, except that the new kernel was already installed. Upon restarting, the user would encounter a “Kernel Panic” error and would have no choice but to boot back into the old kernel, uninstall VirtualBox whilst waiting for its module to become compatible, and then complete the update.
To avoid this, you would need to use the GA (General Availability) kernel instead
of the HWE (Hardware Enablement) kernel, but this is not the default setting.
Using Qemu / KVM instead of VirtualBox avoids the dependency on a module.
Otherwise, Debian, the parent distribution of Ubuntu, retains the same kernel version
throughout the entire lifecycle of that release.
The FreeBSD case
FreeBSD, like OpenBSD and NetBSD, works slightly differently. There is a
distinction between the base system on the one hand, and third-party packages on the other.
The kernel is part of the base system, whereas Apache httpd or Firefox are part
of the packages.
This makes all the difference, because you don’t risk crashing the whole
system when you think you’re just updating a piece of software. On the one hand,
you use freebsd-update to update the system (kernel + userland); on the other,
you use pkg upgrade to update third-party packages. This ensures you don’t
accidentally update the system, but the flip side is that it’s easier to forget
to update it.
Updating the system via packages
As stated in the FreeBSD documentation , it is now possible to install the system in two ways:
- Using Distribution Sets, i.e. the traditional method described above.
- Via packages, which allows the system to be updated at the same time as third-party software. This will become the default option from FreeBSD 16.0 onwards.
Having experienced Ubuntu and kernel panics caused by a kernel upgrade, it gives you pause for thought. What’s the point? Will we face the same risks of instability as with certain Linux distributions?
The difference
It is important to bear in mind that the entire FreeBSD system is developed
by the same team, so you can be sure that everything works consistently,
this is the most reassuring aspect. Whether the system is updated via
freebsd-update or pkg upgrade makes little difference to an
administrator who regularly updates their system; only the way in which
the updates are delivered changes, whilst their content and frequency remain
the same.
The only real difference is that you can no longer separate system updates,
which may sometimes require a reboot, from package updates,
which never do. But this isn’t a problem, just a change in habit.
An important point to note: only updates will be applied via pkg,
not upgrades. In other words, there is no risk of accidentally upgrading from
FreeBSD 15.x to 16.x.
And if you choose to install via the Distribution Sets, it is likely that this
option will continue to be supported for many years to come.
Tired of unpredictable updates and service interruptions? I can take care of the full maintenance of your servers : audits, hardening, updates, monitoring, and responsive support.