FreeBSD 12.0-RELEASE was released today, and that means it’s time to upgrade 2 of FreeBSD 11.2 machines to this latest version.
One of my FreeBSD boxes is a desktop used at work, and the upgrade went well without any issues. In this post, I’m going to document how the upgrade is done on my nas server at home.
First ensure that the FreeBSD is up to date:
root@nas:~ # freebsd-update fetch src component not installed, skipped Looking up update.FreeBSD.org mirrors... 2 mirrors found. Fetching metadata signature for 11.2-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 11.2-RELEASE-p6.
Begin to perform the upgrade:
# freebsd-update -r 12.0-RELEASE upgrade src component not installed, skipped Looking up update.FreeBSD.org mirrors... 2 mirrors found. Fetching metadata signature for 11.2-RELEASE from update1.freebsd.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/generic world/base The following components of FreeBSD do not seem to be installed: kernel/generic-dbg world/base-dbg world/doc world/lib32 world/lib32-dbg Does this look reasonable (y/n)? y Fetching metadata signature for 12.0-RELEASE from update1.freebsd.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Fetching 1 metadata files... done. Inspecting system... done. ...
Then time I was asked to manually resolve conflicts in a few files:
Next, the machine required to be reboot:
After rebooting, resume with the command
# freebsd-update install src component not installed, skipped Installing updates... 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 "/usr/sbin/freebsd-update install" again to finish installing updates.
pkg upgrade, I should also update the
pkg package first:
# pkg-static install -f pkg pkg-static: Warning: Major OS version upgrade detected. Running "pkg-static install -f pkg" recommended Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. The following 1 package(s) will be affected (of 0 checked): Installed packages to be REINSTALLED: pkg-1.10.5_5 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') Number of packages to be reinstalled: 1 3 MiB to be downloaded. Proceed with this action? [y/N]: y [1/1] Fetching pkg-1.10.5_5.txz: 100% 3 MiB 848.8kB/s 00:04 Checking integrity... done (0 conflicting) [1/1] Reinstalling pkg-1.10.5_5... [1/1] Extracting pkg-1.10.5_5: 100%
# pkg upgrade ... Number of packages to be upgraded: 1 Number of packages to be reinstalled: 56 The process will require 3 MiB more space. 250 MiB to be downloaded. Proceed with this action? [y/N]: y
The last step is to update the ZFS Zpool, though this can be done at anytime. On my nas server, there are 2 pools:
zroot. First, let’s update the
tank zpool as it’s simple:
# zpool upgrade tank This system supports ZFS pool feature flags. Enabled the following features on 'tank': large_dnode spacemap_v2
Next, let’s update
# zpool upgrade zroot This system supports ZFS pool feature flags. Enabled the following features on 'zroot': large_dnode spacemap_v2 If you boot from pool 'zroot', don't forget to update boot code. Assuming you use GPT partitioning and da0 is your boot disk the following command will do it: gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
Notice that I also need to update the boot code. Let’s find out the boot disk on my server:
# gpart show => 34 488397101 ada4 GPT (233G) 34 1024 1 freebsd-boot (512K) 1058 4194304 2 freebsd-swap (2.0G) 4195362 484201766 3 freebsd-zfs (231G) 488397128 7 - free - (3.5K)
On my system, the boot disk is
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada4 partcode written to ada4p1 bootcode written to ada4
Voilà, the upgrade is complete.
By the way, this is first blog post I wrote in markdown after switching from Wordpress to Hugo. I quite like this way of blogging, and I have a feeling that a few months from now I’m gonna get real good at markdown.