FreeBSD 12.0FreeBSD is a member of the UNIX family of operating systems and probably the most widely used member of the major BSD flavours. FreeBSD offers a famously stable and high performance core which has resulted in the operating system being used by Netflix to stream content and by Sony as a basis for their PlayStation operating system. FreeBSD tends to be especially popular on servers where long term reliability is required. Though FreeBSD can function as a desktop operating system, its market share on the desktop remains low and people who want to run a FreeBSD-based desktop are likely to use a related project such as GhostBSD where the graphical configuration has been done for us.
FreeBSD 12.0 was released in the middle of December and the new version contains mostly a series of updates (such as to the Clang compiler, OpenSSH and OpenSSL components) and performance improvements (the vt driver is reportedly four to six times faster). TRIM support was improved on the UFS file system and a few tools, such as the bhyve hypervisor and pf firewall, can now be used from inside FreeBSD jails. One major change which was expected in FreeBSD 12.0 was the consolidation of package managers. In the past FreeBSD used separate tools to manage updates in the core operating system and third-party software, and it was thought FreeBSD would shift to updating all components through pkg, the manager for third-party packages. This change did not happen in 12.0, but may appear in a future release.
FreeBSD runs on several architectures, including 32-bit and 64-bit x86, Sparc64, ARMv6, ARMv7, ARM64, PowerPC and PowerPC64. This allows FreeBSD to run on many devices, from Raspberry Pi computers, to workstations, to a variety of servers. It is worth noting that the project offers different downloads for USB thumb drives and optical media, like DVDs. The optical media file does not gracefully transfer to a USB drive the way most Linux install media does. I downloaded the ISO for 64-bit x86 machines which was 851MB and the USB thumb drive image which was 930MB. There are other download options, including a full DVD-sized ISO and a compressed USB image - the FreeBSD project has download flavours for all occasions.
Installing
Booting from the FreeBSD media brings up a menu asking if we would like to run the system installer, access a shell or use the Live CD. The Live CD option just drops us to a command line where we can sign in as the root user.
The installer is presented as a series of text-based menus. We are walked through selecting a keymap and which packages we wish to install. The list of packages is short and offers such big-picture items as: kernel debugging, the ports framework, 32-bit compatibility, and source code for the operating system. Next we can choose an approach to disk partitioning. The installer will handle automatically setting up UFS or ZFS volumes, or we can manually partition the disk. I went with the guided ZFS option. This let me select which disk (or disks) would be used and gave me the chance to enable RAID, set swap size and enable encryption. We can also encrypt swap space.
The installer then copied its files to my hard drive and continued with a few more questions. We are asked to create a password for the root account and enable networking with optional IPv4, IPv6 and DHCP support. Then we can select our time zone from a list. The next screen asks which services we would like to enable, with the list including such items as OpenSSH and network time synchronization. Another screen gives us access to optional security features. These include clearing /tmp at boot time, hiding processes from other users, using random process IDs and disabling the Sendmail e-mail service. We are given the chance to create a non-root account for ourselves and then the installer offers to reboot the computer. The whole process, while it involves a lot of screens, goes quickly and took about ten minutes.
Early impressions
FreeBSD boots to a text console where we can sign in to the root account or our regular user account, assuming we created one during the install process. By default there is no graphical environment. In fact, by default, FreeBSD is minimal. We have access to common UNIX command line tools, manual pages, and the Clang compiler, but little more. The operating system is very light, running about 15 processes and using 18MB of Active memory (and 250MB of Wired memory with ZFS enabled). The entire operating system takes up about 500MB of disk space. By design, FreeBSD gives us a base to build on, but leaves the shaping and customization of the operating system entirely in our hands. For this reason I highly recommend reading the FreeBSD Handbook to people who are new to the project.
FreeBSD 12.0 -- Reading the FreeBSD Handbook in Falkon (full image size: 187kB, resolution: 1280x1024 pixels)
Hardware
FreeBSD worked well for me when run in VirtualBox. The system ran quickly and smoothly without any serious issues. By default, FreeBSD does not integrate with the virtual environment and cannot make full use of the host's screen resolution. VirtualBox guest modules are available through FreeBSD's package manager and, once those are installed, the system can use the full range of display resolutions.
Usually, in the past, FreeBSD has not worked with my desktop computer's hardware. Either the system would not boot at all, or would boot with restricted video resolution. This time around I was pleased to discover FreeBSD 12.0 could boot on my workstation, in both UEFI and legacy BIOS modes. FreeBSD played well with my physical hardware and my only limitation was that the operating system could not detect either of the USB wireless devices I plugged into the system.
This is definitely a step forward for FreeBSD where my test hardware is concerned and reflects the recent success I had with the related GhostBSD project.
FreeBSD 12.0 -- Adjusting the look of the desktop with the Xfce settings panel (full image size: 293kB, resolution: 1280x1024 pixels)
Package management
Since FreeBSD is a minimal operating system, to do almost anything useful with the platform we will need to install additional software. There are two approaches to installing third-party packages on FreeBSD. Most users will likely want to use the binary package manager, called pkg. The pkg program is a command line utility which works a lot like APT on the Debian family of distributions or DNF on Fedora, and the syntax is similar across all three package managers. By default no packages are installed.
Another approach people can use is to build software from source code using the FreeBSD ports framework. The ports collection gives us access to the same software pkg does, but allows for build-time customizations and patching if we have special requirements. Building software from source code is slower, but does offer some flexibility for people who want to further customize their systems.
FreeBSD treats the core of the operating system as separate from software developed by third-parties. While pkg and the ports collection deal with third-party software, updates from the official FreeBSD team can be installed using another tool called freebsd-update. Running this tool will fetch and, optionally, install updates for the core system. Using freebsd-update we can also upgrade to future versions of the operating system, transitioning from 12.0 to 12.1 or to a future 13.0 release.
Boot environments
One tool that is useful to have when performing upgrades is boot environments. When FreeBSD is installed on a ZFS volume, it automatically includes support for booting from ZFS snapshots of the operating system. This means we can use a tool such as beadm to take a snapshot of the operating system prior to making any big changes. Then, if anything goes wrong, such as an upgrade breaking the system, we can reboot and select an older environment from the boot menu. I tested boot environments a couple of times during my week with FreeBSD and found they worked as expected and I like that beadm can create, delete and list snapshots instantly.
One nice benefit to working with boot environments is the operating system is kept separate from the data in users' home directories. This means, if the administrator needs to rollback a change, our data files and personal settings are not affected. It is also possible to snapshot user files for recovery purposes, but these snapshots are separate from boot environments.
By default, FreeBSD does not include any desktop environment or graphical tools. This allows the system to be lean and is well suited to FreeBSD's popular role as a server operating system. Still, I wanted to see how much effort it would take to make plain FreeBSD operate the way GhostBSD did when I tried it last year.
The project's Handbook has a section dedicated to installing the X display software, enabling a login screen and installing one of three desktop environments: GNOME, KDE and Xfce. I decided to go with Xfce. The whole process went quickly, taking just a few minutes and required the editing of three configuration files.
The resulting graphical user interface was functional, though not particularly polished. Installing Xfce gave me the desktop, its default panel and menus, a virtual terminal and the Thunar file manager, but little else. For the most part I did not mind installing additional applications, such as a web browser, LibreOffice and other common tools. However, there were issues I did need to work around. For example, my user could not reboot or shutdown the system from within the desktop environment, I could only logout. There was no volume control and I soon found that media (both streaming and local files) would not play. YouTube videos, for example, would not play in any of my web browsers. VLC and MPV were both unable to play either video or audio files and would simply freeze when opening a file.
These problems were, on their own, relatively minor things and there are workarounds, but it highlights the difference between using a desktop-oriented member of the FreeBSD family, like GhostBSD, versus setting up FreeBSD from scratch following the steps in the Handbook.
Earlier I mentioned the system uses about 500MB of disk with a fresh install. But each major collection of software I added downloaded around another gigabyte of packages. After setting up Xfce, LibreOffice, and a web browser over 3GB had been consumed. Once I was finished installing common desktop programs, I was using about 5GB of disk space. Memory usage when running Xfce 4.12 took about 140MB Active and 250MB Wired memory, about 120MB more than when running the minimal command line environment.
Other observations
By default, any users we create on the system cannot perform administrator actions. We can perform admin actions by logging in as the root user directly, or we can add a user to the wheel group to give them the ability to switch (su) to the root user account. Alternatively we can install either the sudo or doas utilities which grant specified users special access.
Compared to most Linux distributions, FreeBSD takes a passive role. The system rarely volunteers information or help. There is no "first-run" wizard or welcome screen. I saw perhaps one notification during my time running Xfce. FreeBSD offers us a bare platform and we are expected to read the Handbook if we need help or, if that fails, proactively visit the project's forum. The operating system itself tries to remain minimal and out of the way.
Something I tended to find, after a few days of setting up and tinkering with FreeBSD to get it running the way I wanted, was that I was becoming more productive. Not because the system was particularly fast (though it was fast) or efficient (though the environment was nicely streamlined), but because the applications I use for work all functioned well while entertainment programs did not. On FreeBSD I could easily install and use Firefox, LibreOffice, Thunderbird, text editors, the GNU Image Manipulation Program and command line tools. However, I struggled to get multimedia programs working, Steam doesn't run natively on FreeBSD, Netflix won't play on the platform, and performance for native 3-D games was poor. Basically, FreeBSD gently forced me to use my computer for work instead of for play. It didn't always make me happy, but it did make me productive.
Conclusions
Playing with FreeBSD with past week I don't feel as though there were any big surprises or changes in this release compared to FreeBSD 11. In typical FreeBSD fashion, progress tends to be evolutionary rather than revolutionary, and this release feels like a polished and improved incremental step forward. I like that the installer handles both UFS and ZFS guided partitioning now and in a friendly manner. In the past I had trouble getting FreeBSD's boot menu to work with boot environments, but that has been fixed for this release.
I like the security options in the installer too. These are not new, but I think worth mentioning. FreeBSD, unlike most Linux distributions, offers several low-level security options (like hiding other users' processes and randomizing PIDs) and I like having these presented at install time. It's harder for people to attack what they cannot see, or predict, and FreeBSD optionally makes these little adjustment for us.
Something which stands out about FreeBSD, compared to most Linux distributions I run, is that FreeBSD rarely holds the user's hand, but also rarely surprises the user. This means there is more reading to do up front and new users may struggle to get used to editing configuration files in a text editor. But FreeBSD rarely does anything unless told to do it. Updates rarely change the system's behaviour, working technology rarely gets swapped out for something new, the system and its applications never crashed during my trial. Everything was rock solid. The operating system may seem like a minimal, blank slate to new users, but it's wonderfully dependable and predictable in my experience.
I probably wouldn't recommend FreeBSD for desktop use. It's close relative, GhostBSD, ships with a friendly desktop and does special work to make end user applications run smoothly. But for people who want to run servers, possible for years without change or issues, FreeBSD is a great option. It's also an attractive choice, in my opinion, for people who like to build their system from the ground up, like you would with Debian's server install or Arch Linux. Apart from the base tools and documentation, there is nothing on a FreeBSD system apart from what we put on it.
* * * * *
Hardware used in this review
My physical test equipment for this review was a desktop HP Pavilon p6 Series with the following specifications: