Today, I again mused about FreeBSD 15.0 and pkgbase. It’s freezing outside, and I’m going for an Indian dinner in about 2 hours. Let’s see if I can break r730-01 with my upgrade attempt.
In this post:
- FreeBSD 14.3 (starting point)
- FreeBSD 15.0 (target)
The docs
I’m starting with official docs:
- FreeBSD 15.0-RELEASE Installation Instructions
- That directs me to Upgrading from Previous Releases of FreeBSD
- And then the binary update via Upgrading Using “FreeBSD Update” (that’s what I do).
The host’s starting point
This is what I see when I log in:
[16:04 pro04 dvl ~] % r730 Last login: Sun Feb 8 01:24:19 2026 from pro04.startpoint.vpn.unixathome.org [21:14 r730-01 dvl ~] % bectl list BE Active Mountpoint Space Created 14.3-RELEASE-p6_2025-12-17_173910 - - 688M 2025-12-17 17:39 14.3-RELEASE-p7_2026-01-27_225103 - - 116M 2026-01-27 22:51 default NR / 14.7G 2025-11-25 17:17 [21:14 r730-01 dvl ~] % uptime 9:15PM up 8 days, 4:01, 1 user, load averages: 1.95, 1.53, 1.63 [21:15 r730-01 dvl ~] %
The host has been rebooted since that last Boot Environment (BE) was created. I feel comfortable deleting both of them:
[21:15 r730-01 dvl ~] % sudo bectl destroy 14.3-RELEASE-p6_2025-12-17_173910 [21:18 r730-01 dvl ~] % sudo bectl destroy 14.3-RELEASE-p7_2026-01-27_225103 [21:18 r730-01 dvl ~] % sudo bectl create before.15.0 [21:18 r730-01 dvl ~] % bectl list BE Active Mountpoint Space Created before.15.0 - - 8K 2026-02-08 21:18 default NR / 13.9G 2025-11-25 17:17 [21:18 r730-01 dvl ~] %
After deleting, I create a fallback point, which I hope and trust I will never need.
Making sure we are up to date
Updating from 14.3 to 15.0 needs the latest patches or it “will result in an inoperative system”. I know this host is up to date:
[21:18 r730-01 dvl ~] % freebsd-version -ukr 14.3-RELEASE-p8 14.3-RELEASE-p8 14.3-RELEASE-p8
However, I do things the right way because it is the right thing to do. One day, I’ll be wrong.
[21:20 r730-01 dvl ~] % sudo freebsd-update fetch src component not installed, skipped Looking up update.FreeBSD.org mirrors... 3 mirrors found. Fetching metadata signature for 14.3-RELEASE from update1.freebsd.org... done. Fetching metadata index... done. Inspecting system... done. Preparing to download files... done. No updates needed to update system to 14.3-RELEASE-p8.
tmux all the things
I used to be a screen fan, now I use tmux. The explanation of either is outside scope. I did this in a tmux session.
[21:23 r730-01 dvl ~] % tmux [21:24 r730-01 dvl ~] % su Password: root@r730-01:/home/dvl # freebsd-update upgrade -r 15.0-RELEASE src component not installed, skipped Looking up update.FreeBSD.org mirrors... 3 mirrors found. Fetching metadata signature for 14.3-RELEASE from update2.freebsd.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. ...
Then I became root. Often, almost always, I do this via sudo. Today I decided not to.
The rest of the output:
Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/generic world/base world/lib32 The following components of FreeBSD do not seem to be installed: kernel/generic-dbg world/base-dbg world/lib32-dbg Does this look reasonable (y/n)? y
The above took less then than it took me to type the above bits.
Additional boring output:
Fetching metadata signature for 15.0-RELEASE from update2.freebsd.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Fetching 1 metadata files... done. Inspecting system... done. Fetching files from 14.3-RELEASE for merging... done. Preparing to download files... done. Fetching 5898 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150.. ... 60....5670....5680....5690....5700....5710....5720....5730....5740....5750....5760....5770....5780....5790....5800....5810....5820....5830....5840....5850....5860....5870....5880....5890.... done. Applying patches... done. Fetching 882 files... ....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150.. ..160....170....180....190....200....210....220....230....240....250....260....270....280....290....300....310....320... .330....340....350....360....370....380....390....400....410....420....430....440....450....460....470....480....490.... 500....510....520....530....540....550....560....570....580....590....600....610....620....630....640....650....660....670....680....690....700....710....720....730....740....750....760....770....780....790....800....810....820....830....840....850....860....870....880. done. Attempting to automatically merge changes in files... done.
I then had to manually merge a few files:
/etc/mail/aliases
/etc/services
/etc/ssh/sshd_config
I accepted them all.
Then:
The following files are affected by updates. No changes have been downloaded, however, because the files have been modified locally: /etc/ssl/cert.pem
That might be of note.
Boring output #2:
The following files will be removed as part of updating to 15.0-RELEASE-p2: /.cshrc /.profile /boot/kernel/callout_test.ko /boot/kernel/geom_bde.ko /boot/kernel/geom_vinum.ko /boot/kernel/iwm3160fw.ko /boot/kernel/iwm3168fw.ko /boot/kernel/iwm7260fw.ko /boot/kernel/iwm7265Dfw.ko /boot/kernel/iwm7265fw.ko /boot/kernel/iwm8000Cfw.ko /boot/kernel/iwm8265fw.ko /boot/kernel/iwm9000fw.ko /boot/kernel/iwm9260fw.ko /boot/kernel/rtw8723d_fw.bin.ko /boot/kernel/rtw8821c_fw.bin.ko /boot/kernel/rtw8822b_fw.bin.ko /boot/kernel/rtw8822c_fw.bin.ko /boot/kernel/rtw8822c_wow_fw.bin.ko .... The following files will be added as part of updating to 15.0-RELEASE-p2: /boot/firmware/iwm3160fw /boot/firmware/iwm3168fw /boot/firmware/iwm7260fw /boot/firmware/iwm7265Dfw /boot/firmware/iwm7265fw /boot/firmware/iwm8000C /boot/firmware/iwm8265fw /boot/firmware/iwm9000fw /boot/firmware/iwm9260fw /boot/fonts/32x64.fnt.gz /boot/images/freebsd-install-brand-rev.png /boot/kernel/accf_tls.ko /boot/kernel/acpi_sbl_wmi.ko ... The following files will be added as part of updating to 15.0-RELEASE-p2: /boot/firmware/iwm3160fw /boot/firmware/iwm3168fw /boot/firmware/iwm7260fw /boot/firmware/iwm7265Dfw /boot/firmware/iwm7265fw /boot/firmware/iwm8000C /boot/firmware/iwm8265fw /boot/firmware/iwm9000fw /boot/firmware/iwm9260fw /boot/fonts/32x64.fnt.gz /boot/images/freebsd-install-brand-rev.png /boot/kernel/accf_tls.ko /boot/kernel/acpi_sbl_wmi.ko To install the downloaded upgrades, run 'freebsd-update [options] install'.
Next in the step, we go back to the instructions and run:
root@r730-01:/home/dvl # freebsd-update install src component not installed, skipped Creating snapshot of existing boot environment... done. Installing updates... Kernel updates have been installed. Please reboot and run 'freebsd-update [options] install' again to finish installing updates.
That took very little time.
Let’s check the BE first:
root@r730-01:/home/dvl # bectl list BE Active Mountpoint Space Created 14.3-RELEASE-p8_2026-02-08_213813 - - 2.88M 2026-02-08 21:38 before.15.0 - - 508K 2026-02-08 21:18 default NR / 14.3G 2025-11-25 17:17 root@r730-01:/home/dvl #
OK, looks good. Let’s reboot.
shutdown, not reboot
I want to emphasis that I say reboot, but I mean shutdown. reboot does not run your rc.d shutdown scripts. shutdown does. This will change soon.
root@r730-01:/home/dvl # shutdown -r now
Shutdown NOW!
shutdown: [pid 78238]
root@r730-01:/home/dvl #
*** FINAL System shutdown message from dvl@r730-01.int.unixathome.org *** "r730-01.int.unixathom" 21:43 08-Feb-26
System going down IMMEDIATELY
*** FINAL System shutdown message from dvl@r730-01.int.unixathome.org ***
System going down IMMEDIATELY
System shutdown time has arrived
FreeBSD 15.0 kernel
Here we are, running the new FreeBSD 15.0 kernel:
[16:45 pro04 dvl ~] % r730 Last login: Sun Feb 8 21:40:37 2026 from pro04.startpoint.vpn.unixathome.org [21:48 r730-01 dvl ~] % uptime 9:48PM up 29 secs, 1 user, load averages: 0.23, 0.06, 0.02 [21:48 r730-01 dvl ~] % uname -a FreeBSD r730-01.int.unixathome.org 15.0-RELEASE-p2 FreeBSD 15.0-RELEASE-p2 GENERIC amd64 [21:48 r730-01 dvl ~] % [21:49 r730-01 dvl ~] % freebsd-version -ukr 15.0-RELEASE-p2 15.0-RELEASE-p2 14.3-RELEASE-p8
Installing world
Back to the official documentation, the install of world is done. Again, I go into tmux and become root.
[21:49 r730-01 dvl ~] % tmux [21:50 r730-01 dvl ~] % su Password: root@r730-01:/home/dvl # cd root@r730-01:~ # freebsd-update install src component not installed, skipped Creating snapshot of existing boot environment... done. Installing updates... Restarting sshd after upgrade Performing sanity check on sshd configuration. Stopping sshd. Waiting for PIDS: 2358. Performing sanity check on sshd configuration. Starting sshd. Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run 'freebsd-update [options] install' again to finish installing updates. root@r730-01:~ #
Here’s the hard part. I can’t build those packages. Or perhaps I can, but I don’t know how. I think I could update the pkg01 jail, and build packages now.
I’ll do that in a separate blog post, to be linked later.
Now imagine, if you will, that I have updated the host packages.
On to the next step.
root@r730-01:~ # freebsd-update install src component not installed, skipped Creating snapshot of existing boot environment... done. Installing updates... done.
And another reboot, err, shutdown.
Here we are:
[22:31 r730-01 dvl ~] % uptime 10:31PM up 2 mins, 1 user, load averages: 8.14, 2.87, 1.11 [22:31 r730-01 dvl ~] % freebsd-version -ukr 15.0-RELEASE-p2 15.0-RELEASE-p2 15.0-RELEASE-p2 [22:31 r730-01 dvl ~] % file /bin/sh /bin/sh: ELF 64-bit LSB pie executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 15.0 (1500068), FreeBSD-style, stripped [22:31 r730-01 dvl ~] %
Updating my jails is outside scope. Done. Hope this helps you.











