Do I need to upgrade packages when updating from 14.2-RELEASE to 14.3-RELEASE?

Hi all,
I have a FreeBSD 14.2-RELEASE machine that I use as a desktop, and I’d like to upgrade it to 14.3-RELEASE. From what I understand based on the documentation, the procedure is:

Code:
freebsd-update fetch  
freebsd-update install  
reboot  

freebsd-update -r 14.3-RELEASE upgrade  
freebsd-update install  
reboot  

freebsd-update install

My question is: Do I need to update or upgrade anything on the packages side after finishing this minor version upgrade? Or can I leave the packages as-is since this is just a minor version bump within 14.x?

Thanks in advance for any advice!
 
In theory: no, because the ABI is supposed to be stable across minor versions.

In practice: In-kernel ABI (sometimes called KBI) typically changes nevertheless, so that some packages that contain kernel modules are affected. drm drivers are a notorious candidate. These must be built with the new kernel to work again. And there's an annoying catch, there's only one package repo for every major release, and it contains packages built on the oldest still supported minor (because the other way around could break for stuff added in the newer one) ... means you won't get binary packages of e.g. drm-kmod built for/on 14.3 until 14.2 is EOL. The workaround is temporarily building affected packages from ports ...
 
And there's an annoying catch, there's only one package repo for every major release, and it contains packages built on the oldest still supported minor
Isn't that solved now with kmod repos?
 
I have a FreeBSD 14.2-RELEASE machine that I use as a desktop, and I’d like to upgrade it to 14.3-RELEASE.
[...]
My question is: Do I need to update or upgrade anything on the packages side after finishing this minor version upgrade? Or can I leave the packages as-is since this is just a minor version bump within 14.x?
Yes, you'll likely have to as you're likely depending on kernel modules contained in packages for your graphics and maybe for your wireless stack too. Since some time development with respect to these modules and their necessary components in base with which they interface, notable the Linux KPI shim layer and the kernel itself, have made it necessary that these particular packages are needed tailored to a specific minor release verions (more precisely: the kernel and the aforementioned shim layer).

Note that these particular packages have been limited to packages containing (specific) kernel modules: their total numbers in the ports tree is, as it stands today, far below 100; see : counting the 'kmods'. These specific packages containing these kernel modules are the (big) exception where packages are likely necessary for a specific minor version of a -RELEASE FreeBSD.

As of 14.3-RELEASE integration and adoption of a special package repository: FreeBSD-kmods for these kernel modules containing packages has continued. Details of its past and present are in the thread Possible solution to the drm-kmod kernel mismatch after upgrade from Bapt. Some cherrypicked messages from there:
  1. message # 66 containing its most recent official announcement;
  2. message # 36, containing a two-step upgrade procedure; <- this is important
  3. mesage # 69, information about the use of ${VERSION_MINOR}.
Other messages may be helpful as well.

Please note that the kernel modules modules and their accompanied firmware may be even more relevant for your wireless, especially when you are relying on wireless only for internet access, please read REMINDER: iwlwifi updates to 14.3 - run fwget first!

As mentioned in messages above, the necessary installed-packages/ports that contain these specific kernel modules can also be build locally from source.
 
Last edited:
Isn't that solved now with kmod repos?
Almost, but...
1) If you are on the latest repo, beware to verify that the kmods repo you get isn't the quarterly one, because it seems that the one freebsd-update write in /etc/pkg/FreeBSD.conf.
If it is, you need to add to /usr/local/etc/pkg/repos/ .conf file:
Code:
FreeBSD-kmods: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/kmods_latest_${VERSION_MINOR}"
}

2) Check that all the packages you want are in FreeBSD-kmods, that's not always the case.

3) In my experience (didn't verify this time), you need to delete the packages that contain kernel modules and reinstall them; pkg upgrade doesn't work.
 
I upgraded to FreeBSD 14.3, and after the upgrade, I was unable to boot into the system anymore. It just shows a black screen and hangs. I rolled back to a ZFS snapshot in single user mode, so I’m back on FreeBSD 14.2 and ready for a second attempt.

At the first attempt, I performed the following:

# freebsd-update fetch
# freebsd-update
# freebsd-update -r 14.3-RELEASE upgrade
# freebsd-update install
# reboot

Then it hangs after reboot.

I guess the problem is the "drm-kmod" driver for my Intel HD graphics as mentioned. I have an Intel HD 4000. Any clues what to do? If I understood correctly, I need to reinstall the video drivers from packages, but when should I do it? During the upgrade process, before rebooting for the final "freebsd-update install"? I'm using FreeBSD 14.2 with both packages and ports set to quarterly branch, which I prefer.
 

Attachments

  • a.jpg
    a.jpg
    272.9 KB · Views: 125
Which CPU exactly do you have?
On 14.2-RELEASE, please post the output of pkg query -x '[%R] (%a) %n %v' '^drm(-|-515-|-61-)kmod'
 
It's an Intel Ivy Bridge:

# pkg query -x '[%R] (%a) %n %v' '^drm(-|-515-|-61-)kmod'
[FreeBSD] (1) drm-61-kmod 6.1.128.1402000_2
[FreeBSD] (0) drm-kmod 20220907_3
 
Disable this drm module before to reboot (i915kms, rc.conf). Disable the automatic start of xorg/wayland.
After upgrade, you will have access to the kmods repos. Then, you will have the 1403... version after delete and reinstall drm-61-kmod.
 
It only works if I install the "drm-kmod" from the ports. However, in order to install the port I need to have the "src" tree which I forgot to install when I did the FreeBSD 14.2 installation. What is the proper way to obtain the "src" tree after FreeBSD is already installed?

I tried

Code:
cd /usr
git clone https://git.freebsd.org/src.git -b releng/14.3 src

Although it works and I'm able to build the port, I'm not sure if that is the correct way to install the src tree.
 
It worked for me yesterday. You did something wrong (have you installed the new userland after reboot before to try?). That said, before the FreeBSD-kmods repos, I compiled it/them and, of course, that works also; it's just more time consuming.
 
It only works if I install the "drm-kmod" from the ports.
Unlikely; if you can get it to work by building the necessary port(s), then you can also get it to work with the right packages. For building a port yourself, you should follow the handbook 4.5. Using the Ports Collection. In addition to that to build and install a port (that contains kernel modules) from source you need the source of the base install. If you had those sources not installed at the time of installation this might help: How to get sources installed and have these updated by freebsd-update(8) after a base-install

Alternatively, why not try using the FreeBSD-kmods as mentioned above? I just upgraded: 14.2-RELEASE -> 14.3-RELEASE. Below you can see what I did just after the upgrade to 14.3-RELEASE, works as intended for me:
Rich (BB code):
[1-0] # date -u
Sat Jun 14 14:35:59 UTC 2025
[2-0] # freebsd-version -kru
14.3-RELEASE
14.3-RELEASE
14.3-RELEASE
[3-0] # pkg -v
2.1.4
[4-0] # pkg query -x '[%R] (%a)  %n %v' '^drm(-|-515-|-61-)kmod'
[FreeBSD] (1)  drm-61-kmod 6.1.128.1402000_4
[FreeBSD] (0)  drm-kmod 20250428
[5-0] # pkg -vv | sed -n '/^Repositories:/,$ p'
Repositories:
  FreeBSD: {
    url             : "pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/latest",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
  FreeBSD-kmods: {
    url             : "pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/kmods_latest_3",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
[6-0] # pkg update
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100%    179 B   0.2kB/s    00:01
Fetching data.pkg: 100%   10 MiB  10.5MB/s    00:01
Processing entries: 100%
FreeBSD repository update completed. 36026 packages processed.
Updating FreeBSD-kmods repository catalogue...
pkg: Repository FreeBSD-kmods has a wrong packagesite, need to re-create database
Fetching meta.conf: 100%    179 B   0.2kB/s    00:01
Fetching data.pkg: 100%   16 KiB  16.7kB/s    00:01
Processing entries: 100%
FreeBSD-kmods repository update completed. 53 packages processed.
All repositories are up to date.
[7-0] # pkg rquery -x '[%R] %n %v' '^drm(-|-510-|-515-|-61-)kmod'
[FreeBSD] drm-515-kmod 5.15.160.1402000_4
[FreeBSD] drm-61-kmod 6.1.128.1402000_4
[FreeBSD] drm-kmod 20250428
[FreeBSD-kmods] drm-515-kmod 5.15.160.1403000_4
[FreeBSD-kmods] drm-61-kmod 6.1.128.1403000_4       # <-- this is the drm-61-kmod that is needed
[8-0] # pkg upgrade -r FreeBSD
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
FreeBSD is up to date.
Checking for upgrades (8 candidates): 100%
Processing candidates (8 candidates): 100%
Checking integrity... done (0 conflicting)
Your packages are up to date.
[9-0] # pkg upgrade -r FreeBSD-kmods
Updating FreeBSD-kmods repository catalogue...
FreeBSD-kmods repository is up to date.
FreeBSD-kmods is up to date.
Checking for upgrades (4 candidates): 100%
Processing candidates (4 candidates): 100%
Checking integrity... done (0 conflicting)
The following 4 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
        drm-61-kmod: 6.1.128.1402000_4 -> 6.1.128.1403000_4 [FreeBSD-kmods]
        gpu-firmware-amd-kmod-aldebaran: 20230625.1402000_2 -> 20230625.1403000_2 [FreeBSD-kmods]
        gpu-firmware-intel-kmod-skylake: 20230625.1402000 -> 20230625.1403000 [FreeBSD-kmods]
        gpu-firmware-radeon-kmod-aruba: 20220511.1402000 -> 20220511.1403000 [FreeBSD-kmods]

Number of packages to be upgraded: 4

Proceed with this action? [y/N]: y
[1/4] Upgrading drm-61-kmod from 6.1.128.1402000_4 to 6.1.128.1403000_4...
[1/4] Extracting drm-61-kmod-6.1.128.1403000_4: 100%
[2/4] Upgrading gpu-firmware-amd-kmod-aldebaran from 20230625.1402000_2 to 20230625.1403000_2...
[2/4] Extracting gpu-firmware-amd-kmod-aldebaran-20230625.1403000_2: 100%
[3/4] Upgrading gpu-firmware-intel-kmod-skylake from 20230625.1402000 to 20230625.1403000...
[3/4] Extracting gpu-firmware-intel-kmod-skylake-20230625.1403000: 100%
[4/4] Upgrading gpu-firmware-radeon-kmod-aruba from 20220511.1402000 to 20220511.1403000...
[4/4] Extracting gpu-firmware-radeon-kmod-aruba-20220511.1403000: 100%
[10-0] # pkg rquery -x '[%R] %n %v' '^drm(-|-510-|-515-|-61-)kmod'
[FreeBSD] drm-515-kmod 5.15.160.1402000_4
[FreeBSD] drm-61-kmod 6.1.128.1402000_4
[FreeBSD] drm-kmod 20250428
[FreeBSD-kmods] drm-515-kmod 5.15.160.1403000_4
[FreeBSD-kmods] drm-61-kmod 6.1.128.1403000_4
[11-0] # pkg query -x '[%R] (%a)  %n %v' '^drm(-|-515-|-61-)kmod'
[FreeBSD-kmods] (1)  drm-61-kmod 6.1.128.1403000_4
[FreeBSD] (0)  drm-kmod 20250428
[12-0] #
In your case you only have to specify the quarterly repository instead of latest in two places in an appropriate pkg .conf file.


Note: This is with pkg 2.1.4.
ports-mgmt/pkg: update to 2.2.0 - 2025-06-18 06:43:32 has now arrived.
 
Last edited:
If you are using root on ZFS (it sounds like you are) you can do "release upgrades" into a new BE (manually create new BE, add some chroot options to the freebsd-update and pkg commands). That lets you create a new BE that is fully coherent, you can address anything that may break like the drm-kmod stuff. There should be plenty of examples on this forum I know vermaden has a procedure, I've posted what I do.
 
I already had it set to quarterly by default.
Running this one command alone fixed the issue, though:

Code:
pkg upgrade -r FreeBSD-kmods

After running the command, it told me there are some drm-kmod packages that needs updating. I hit "yes" then I re-enabled lightdm and i915kms in /etc/rc.conf. Now it works.
 
After upgrading the system always update ports with the commands:

pkg-static install -f pkg
pkg bootstrap -f
pkg update && pkg upgrade
 
I upgraded to FreeBSD 14.3, and after the upgrade, I was unable to boot into the system anymore. It just shows a black screen and hangs. I rolled back to a ZFS snapshot in single user mode, so I’m back on FreeBSD 14.2 and ready for a second attempt.

At the first attempt, I performed the following:

# freebsd-update fetch
# freebsd-update
# freebsd-update -r 14.3-RELEASE upgrade
# freebsd-update install
# reboot

Then it hangs after reboot.

I guess the problem is the "drm-kmod" driver for my Intel HD graphics as mentioned. I have an Intel HD 4000. Any clues what to do? If I understood correctly, I need to reinstall the video drivers from packages, but when should I do it? During the upgrade process, before rebooting for the final "freebsd-update install"? I'm using FreeBSD 14.2 with both packages and ports set to quarterly branch, which I prefer.
You can go back in time before the update and continue from there ????? HOWWWW i also updated and my mouse stopped working and other things , but i deleted everything , I DIDN'T KNEW YOU CAN SWITCH BACK TO PREVIOUS TIME BEFORE UPDATE , also is there a tutorial or documentation ?
 
You can go back in time before the update and continue from there ????? HOWWWW i also updated and my mouse stopped working and other things , but i deleted everything , I DIDN'T KNEW YOU CAN SWITCH BACK TO PREVIOUS TIME BEFORE UPDATE , also is there a tutorial or documentation ?

Yes. I took a snapshot before updating named "xfcedesktop" on all datasets (-r for recursive):

Code:
# zfs snapshot -r zroot@xfcedesktop

The snapshots can be listed with:

Code:
# zfs list -t snapshot

or just a specific snapshot:
# zfs list -t snapshot | grep "snapshotname"

Then booting into single user mode (pressing "2" at the boot loader) allows me to roll back on all datasets named "xfcedesktop"

Code:
# zfs list -t snapshot -o name | grep "@xfcedesktop$" | while IFS= read -r snapshot; do zfs rollback -R "$snapshot"; done
# reboot

I'm using the longer command because there's no way to roll back recursively, so this approach is better than handling each dataset line by line.

To destroy a snapshot I use:

Code:
# zfs destroy -r zroot@snapshotname

There's also the boot environments method that others have mentioned, you might want to take a look at it too. I think it’s easier, but it’s always good to understand how things work under the hood as well.
 
After upgrading the system always update ports with the commands:

pkg-static install -f pkg
pkg bootstrap -f
pkg update && pkg upgrade
I do not have anything installed from ports. 100% binary packages. That being said, I have the ports tree installed.
Can't I just use "git -C /usr/ports pull" to update the existing ports tree?
 
I had to move from drm-61-kmod on 14.2 to drm-515-Knox on 14.3. I had the black screen again.

The 61 version said it was built for 14.2, while 515 said it was built for 14.3. Simply installing 515 solved my black screen issue.
 
As a very side note, you have now pkg-repositories(8) to see that.
For a long time only pkg -vv was available, I use various aliases with it because, without the 'sed restriction', it shows far more, like for example DEBUG_LEVEL and IGNORE_OSVERSION. Then pkg-repositories(8) was introduced but for a time undocumented; PRs have been issued on github and bugzilla. At the time I kept using pkg -vv and 'expanded' my aliases here on the forum. However, for the intended use here, the use of the repositories command is better suited, thanks for the reminder!
 
Back
Top