When upgrading my file server to FreeBSD 15.0-RELEASE, I was informed that future versions would make default a feature which provides the FreeBSD datasets via pkg instead of freebsd-update. My, admittedly irrational, response was to perform the upgrade by compiling the new version of FreeBSD from source.

This involved running make buildworld and make buildkernel, then invoking /usr/src/tools/build/beinstall.sh. To my surprise, it not only set up a new boot environment and installed FreeBSD 15.0-RELEASE to it, it did so without needing a second reboot; and then proceeded to upgrade my packages via pkg. That process was so incredibly smooth that it inspired me to try Gentoo for the first time.

But I’m not in the business of doing things the standard way.

At the start of this endeavor, I had a working Void Linux on ZFS installation. And to get Gentoo installed, I simply created a new dataset, extracted the musl/llvm/openrc stage3 tarball to the new dataset, configured portage, chrooted in, and built the system and its kernel from my Void Linux host. Seeing that I had both vmlinuz and initrd available in /boot, the zfs module built in via dracut, and setting canmount=noauto and mountpoint=/ for the dataset, I had a valid boot environment for ZFSBootMenu.

I did have to go back and copy the pool passphrase into the initrd so the system could unlock its own root dataset. But after that, I was able to reboot into Gentoo. From there, I set up my system in a similar vein to my Void installation. And within a couple days I’d built a usuable desktop for daily use.

As such, I’ve challenged myself to maintain this installation for a year, patterned after the hosts of a podcast I listen to. However, as the musl profile is considered experimental, I may be in for a wild ride.