vulcanridr

All aboard the 15.0-RELEASE train!

The change from plex to jellyfin has gone well, I have been updating metadata on my music library. I'm putting a pause on that for the moment...Lots and lots of gathering info and images...But now it's time for something different. I decided to start my 15.0R upgrades. I started by reading the release notes, errata, and install guide.

I decided to stay with the old-style freebsd-update method of base system upgrades, instead of delving into the world of pkgbase. It is still listed as a technology preview by the FreeBSD Foundation. I can always switch over later as it develops and matures, and freebsd-update will be around throughout the 15.x series.

So this is a (hopeully) concise summary of the major upgrade process:

  • freebsd-update fetch install - Makes sure your system is on the latest version of the existing release.
  • freebsd-update upgrade -r 15.0-RELEASE and freebsd-update install - Installs the updated the kernel and merges changed config files (e.g. /etc/ssh/moduli, and various config files in the base system).
  • Rebooting boots on to the new kernel.
  • The second freebsd-update install - Updates userland packages in the base system.
  • Second reboot boots onto the new kernel and userland. So at this point, the base system is fully upgraded.
  • pkg bootstrap -f and pkg upgrade Updates/reinstalls all user-installed packages against the updated libraries.
  • At this point, a final reboot and your system should be fully upgraded.

While waiting for my system to be inspected during the freebsd-update upgrade step, I took a moment to do some woolgathering and looking in amazement at the fact that I started my FreeBSD journey with with 9.3 in 2014, and here we are at 15.0. It has been a fun ride.

My laptop has been acting strangely anemic since I upgraded to 14.3, so I figured I would give 15.0 a try. So I attempted the upgrade. I was already on the latest version of 14.3. So I did freebsd-update upgrade -r 15.0-RELEASE, and the freebsd-update install. But after the reboot, the second freebsd-update install, and the second reboot, I could not get pkg to work. It gave me the error:

ld-elf.so.1: Shared object "libutil.so.9" not found, required by "pkg"

One of the best aspects of FreeBSD is ZFS on boot and boot environments. This means that you can recover from just about any malady that occurs on the system. I discussed the ability to roll back briefly in my second FreeBSD Tribal Knowledge. I put this into practice. I did the following steps,

bectl list and selected the latest 14.3 boot environment,
bectl activate 14.3-RELEASE-p6_2025-12-12_201726

and then rebooted. When the system came back up on 14.3, I deleted the 15.0 BE. I was able to log in and research it. Found a post that said after stepping through the upgrade procedure, to do a pkg bootstrap -f and pkg upgrade, which will reinstall/upgrade every package on the system to 15.0.

Another problem I encountered had to do with the repos configuration. By default, the repo file living in /etc/pkg/FreeBSD.conf points to the quarterly repo. If you want to run the more active latest repo, you need to create /usr/local/etc/repos/pkg/FreeBSD.conf. At some past I set it up with a single line for the latest repo:

FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest"
}

I'm not sure if it was the http or if it was that it needed the rest of the stanza:

FreeBSD: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/latest"
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
mirror_type: "srv",
enabled: yes,
}

I changed the first stanza to the second, and the upgrade worked.

So danube and defiant are now running 15.0, and seems much happier. It also fixed a "shared object not found" error for a library needed for mplayer, strawberry music player, and the lockups I have been getting on kde on danube. So I will probably upgrade the servers in the next couple of days, ending up with koraga, the UFS RPi.

Thoughts? Leave a comment