Published: in Videos
How to upgrade freebsd 15.0 to 15.1 using new FreeBSD-base (pkgbase) method
FreeBSD 15.0 reaches end of life today, 30 September 2026. So if you are still running it, now is the time to move to 15.1. In my previous post I covered systems updated with freebsd-update. This time I take a 15.0 machine installed with the packaged base system (pkgbase) through the upgrade to 15.1-RELEASE, following the official upgrade instructions step by step.
Watch the full video:
Check which method applies to you
pkg which /usr/bin/uname
If it returns a FreeBSD-runtime package, your system uses pkgbase and this guide is for you. If it says /usr/bin/uname was not found in the database, follow my freebsd-update guide instead.
Before starting on a live system, make sure you have a working backup and read the 15.1 release notes and errata. I use doas in the video. If you use sudo, substitute that, or run the commands as root.
Create a boot environment
doas bectl create -r pre-15.1
doas bectl list
If anything goes wrong, you can boot back into this environment from the loader menu.
Bring 15.0 up to date
doas pkg upgrade -r FreeBSD-base
My machine was already current, but apply any updates before moving on.
Upgrade the base system to 15.1
This is the step that actually moves the system to 15.1. It changes the ABI and release version that pkg uses, then upgrades the base packages. Copy the command from the pkgbase section of the upgrade instructions rather than typing it from memory.
pkg lists what will be installed, upgraded and removed, including the kernel. Read that list before accepting it, and read any messages printed afterwards. If you use local_unbound, the instructions say to regenerate its configuration before restarting it.
Upgrade third-party kernel modules
doas pkg upgrade -r FreeBSD-ports-kmods
Check for failed configuration merges
find /etc /usr/local/etc -name '*.pkgnew'
Any files listed are configuration updates that pkg could not merge. Nothing was reported on my machine.
Update the boot loader
Check whether your machine boots with UEFI or BIOS:
sysctl machdep.bootmethod
Then follow the matching section of the instructions. My machine uses BIOS and runs on Proxmox, so the disk is vtbd0 rather than ada0:
gpart show
doas gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 vtbd0
The -i value must be the index of your freebsd-boot partition, and the device must be your own disk. On a ZFS mirror, repeat this for every disk. Otherwise the system may not boot if the first disk fails.
Reboot and check
doas reboot
freebsd-version -kru
It should now report 15.1-RELEASE. Before making other changes, I create a new boot environment and remove the old one:
doas bectl create post-15.1
doas bectl destroy pre-15.1
A note for NVIDIA users
Some NVIDIA driver packages are built for 15.0 and loaded on 15.1. On my desktop, this made the system reboot as soon as Hyprland started. If you use an NVIDIA card, install the system source and the ports tree and build the drivers from source after upgrading.