After running several Linux distros (Mint, CentOS, Manjaro, Ubuntu) for the past two years, I decided to try and install FreeBSD.
I didn't think much about my decision. After spending some time in the Linux world, I wanted to try the BSD Unix world. I chose FreeBSD since it's the most popular BSD variant out there. What could it hurt, anyways; I'm just installing a new OS, like I did many times before.
Wrong. Little did I know that installing FreeBSD is akin to installing Arch Linux. It wasn't like the other nice desktop Linux distributions out there; I had to manually configure and install everything. It was a painful process; I finally understood all the memes about installing Arch. Surely I learned a lot through the process, but I didn't realize configuring an OS could take days.
Getting it to boot after install took several hours.
In the process, I (inadvertently) learned about how UEFI looks for the boot loader, and what GUID Partition Tables (GPT) are.
Eventually, it turned out configuring GPT by the default, for UEFI and BIOS, caused my hardware to miss the bootloader.
In the end, I manually changed the name of the bootloader to EFI/BOOT/BOOTx64.EFI
and set my partition to only UEFI.
With the change, my computer finally booted. If I wanted to set up FreeBSD as a server, I would have been happy here. However, I wanted to use FreeBSD for my laptop, so I needed to set up a desktop environment. I had heard of the X server before, but this time, I actually had to install it. I'd known various desktop environments for Linux distros -- xfce, KDE, GNOME, Mate, etc. but never understood how they worked, but learning about the abstraction between X servers and clients actually let me understand it for once ... at the cost of spending hours configuring the right Xorg settings.
Setting up a desktop environment comes with even more challenges. I didn't ever think I had to worry about configuring pins on my computer. That was the sort of things I'd done for FPGA's, but for laptops? I didn't think I'd be writing boot configurations, like
hint.hdaa.1.nid33.config="as=1 seq=15 misc=0"
And other details, like setting up network, setting up keyboard input methods, connecting to external monitors...
I surely learned a lot through the process. In the future, I'd be much more effective installing another BSD, or even Arch, on a different machine. It's made me realize why people always say Ubuntu is so bloated; here, installing FreeBSD, I only installed what I needed. However, for an OS like Ubuntu, the system needs to come with all sorts of drivers and settings and software to ensure that it works for virtually everybody, much of which you don't need.
That being said, it seems like while FreeBSD is a very stable and powerful OS, it's maybe not cut out for desktop environments. I knew this coming in, but software support is certainly lacking. Many softwares don't have ports for FreeBSD. Netflix, for instance, doesn't work for FreeBSD (despite many of its servers using it) because you can't get a compiled binary for it, and also because none of the BSD ported browsers (i.e. Chromium, Firefox) have access to the closed-source DRM binary. (Spotify can be streamed, however, through an alternative method ). The ath driver for FreeBSD doesn't support my WiFi card (Atheros QCA6174), and so I'm left needing to get a wifi adapter or running an entire VM to get WiFi.
Still, I'll use FreeBSD for the forseeable future. The VS Code port runs smoothly, browsing the web is no problem, and even Zoom seems to run fine. I don't know if I can take advantage of FreeBSD's strengths by using it as a laptop user... but there's certainly much to learn.