Upgrading a FreeBSD 14.3 host to FreeBSD 15.0

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:

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.

Website Pin Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google StumbleUpon Premium Responsive

Leave a Comment

Scroll to Top