Kernel panic after Zorin 18 Pro upgrade

So I've sort of managed to complete the upgrade but it failed near the end.

On reboot I get a kernel panic with kernel 6.14.0-36-generic

I can boot using the 6.8.0-87-generic kernel, and running sudo apt upgrade results in:

Setting up linux-image-6.14.0-36-generic (6.14.0-36.36~24.04.1) ...
Setting up linux-headers-6.14.0-36-generic (6.14.0-36.36~24.04.1) ...
/etc/kernel/header_postinst.d/dkms:
 * dkms: running auto installation service for kernel 6.14.0-36-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der

Building module:
Cleaning build area...
'make' -j12 KVER=6.14.0-36-generic...(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.14.0-36-generic (x86_64)
Consult /var/lib/dkms/rtl8852au/1.15.0.1/build/make.log for more information.
dkms autoinstall on 6.14.0-36-generic/x86_64 succeeded for evdi nvidia
dkms autoinstall on 6.14.0-36-generic/x86_64 failed for rtl8852au(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
 * dkms: autoinstall for kernel 6.14.0-36-generic
   ...fail!
run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 11
dpkg: error processing package linux-headers-6.14.0-36-generic (--configure):
 installed linux-headers-6.14.0-36-generic package post-installation script subprocess returned error exit status 11
dpkg: dependency problems prevent configuration of linux-headers-generic-hwe-24.04:
 linux-headers-generic-hwe-24.04 depends on linux-headers-6.14.0-36-generic; however:
  Package linux-headers-6.14.0-36-generic is not configured yet.

dpkg: error processing package linux-headers-generic-hwe-24.04 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-generic-hwe-24.04:
 linux-generic-hwe-24.04 depends on linux-headers-generic-hwe-24.04 (= 6.14.0-36.36~24.04.1); however:
  Package linux-headers-generic-hwe-24.04 is not configured yet.

dpkg: error processing package linux-generic-hwe-24.04 (--configure):
 dependency problems - leaving unconfigured
Processing triggers for linux-image-6.14.0-36-generic (6.14.0-36.36~24.04.1) ...
/etc/kernel/postinst.d/dkms:
 * dkms: running auto installation service for kernel 6.14.0-36-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der

Building module:
Cleaning build area...
'make' -j12 KVER=6.14.0-36-generic...(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.14.0-36-generic (x86_64)
Consult /var/lib/dkms/rtl8852au/1.15.0.1/build/make.log for more information.
dkms autoinstall on 6.14.0-36-generic/x86_64 succeeded for evdi nvidia
dkms autoinstall on 6.14.0-36-generic/x86_64 failed for rtl8852au(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
 * dkms: autoinstall for kernel 6.14.0-36-generic
   ...fail!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
dpkg: error processing package linux-image-6.14.0-36-generic (--configure):
 installed linux-image-6.14.0-36-generic package post-installation script subprocess returned error exit status 11
Errors were encountered while processing:
 linux-headers-6.14.0-36-generic
 linux-headers-generic-hwe-24.04
 linux-generic-hwe-24.04
 linux-image-6.14.0-36-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Something to do with a wifi driver by the looks of it, I think that might be for a wifi dongle I rarely use so if there's a way to remove it I might be able to move on. Can anyone point me in the right direction for how to do this?

/var/lib/dkms/rtl8852au/1.15.0.1/build/make.log has this:

DKMS make.log for rtl8852au-1.15.0.1 for k6.14.0-36ernel -generic (x86_64)
Thu Nov 20 21:50:17 GMT 2025
#rm -f .symvers.8852au
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/6.14.0-36-generic/build M=/var/lib/dkms/rtl8852au/1.15.0.1/build  modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-36-generic'
make[2]: Entering directory '/var/lib/dkms/rtl8852au/1.15.0.1/build'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  CC [M]  os_dep/osdep_service.o
  CC [M]  os_dep/osdep_service_linux.o
  CC [M]  os_dep/linux/rtw_cfg.o
  CC [M]  os_dep/linux/os_intfs.o
  CC [M]  os_dep/linux/ioctl_linux.o
  CC [M]  os_dep/linux/xmit_linux.o
  CC [M]  os_dep/linux/mlme_linux.o
  CC [M]  os_dep/linux/recv_linux.o
  CC [M]  os_dep/linux/ioctl_cfg80211.o
  CC [M]  os_dep/linux/rtw_cfgvendor.o
  CC [M]  os_dep/linux/wifi_regd.o
  CC [M]  os_dep/linux/rtw_android.o
os_dep/linux/recv_linux.c: In function ‘rtw_os_recv_indicate_pkt’:
os_dep/linux/recv_linux.c:487:68: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
  487 |                         DBG_COUNTER(padapter->rx_logs.os_netif_err);
      |                                                                    ^
In file included from /usr/src/linux-headers-6.14.0-36-generic/include/linux/module.h:22,
                 from ././include/basic_types.h:38,
                 from ././include/drv_types.h:24,
                 from os_dep/osdep_service_linux.c:16:
os_dep/osdep_service_linux.c: In function ‘openFile’:
os_dep/osdep_service_linux.c:393:26: error: expected ‘,’ or ‘;’ before ‘VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver’
  393 |         MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/linux-headers-6.14.0-36-generic/include/linux/moduleparam.h:26:61: note: in definition of macro ‘__MODULE_INFO’
   26 |                 = __MODULE_INFO_PREFIX __stringify(tag) "=" info
      |                                                             ^~~~
/usr/src/linux-headers-6.14.0-36-generic/include/linux/module.h:301:33: note: in expansion of macro ‘MODULE_INFO’
  301 | #define MODULE_IMPORT_NS(ns)    MODULE_INFO(import_ns, ns)
      |                                 ^~~~~~~~~~~
os_dep/osdep_service_linux.c:393:9: note: in expansion of macro ‘MODULE_IMPORT_NS’
  393 |         MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
      |         ^~~~~~~~~~~~~~~~
os_dep/osdep_service_linux.c: In function ‘isFileReadable’:
os_dep/osdep_service_linux.c:511:26: error: expected ‘,’ or ‘;’ before ‘VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver’
  511 |         MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/linux-headers-6.14.0-36-generic/include/linux/moduleparam.h:26:61: note: in definition of macro ‘__MODULE_INFO’
   26 |                 = __MODULE_INFO_PREFIX __stringify(tag) "=" info
      |                                                             ^~~~
/usr/src/linux-headers-6.14.0-36-generic/include/linux/module.h:301:33: note: in expansion of macro ‘MODULE_INFO’
  301 | #define MODULE_IMPORT_NS(ns)    MODULE_INFO(import_ns, ns)
      |                                 ^~~~~~~~~~~
os_dep/osdep_service_linux.c:511:9: note: in expansion of macro ‘MODULE_IMPORT_NS’
  511 |         MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
      |         ^~~~~~~~~~~~~~~~
make[4]: *** [/usr/src/linux-headers-6.14.0-36-generic/scripts/Makefile.build:207: os_dep/osdep_service_linux.o] Error 1
make[4]: *** Waiting for unfinished jobs....
os_dep/linux/ioctl_cfg80211.c:10271:25: error: initialization of ‘int (*)(struct wiphy *, struct wireless_dev *, unsigned int,  int *)’ from incompatible pointer type ‘int (*)(struct wiphy *, struct wireless_dev *, int *)’ [-Werror=incompatible-pointer-types]
10271 |         .get_tx_power = cfg80211_rtw_get_txpower,
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~
os_dep/linux/ioctl_cfg80211.c:10271:25: note: (near initialization for ‘rtw_cfg80211_ops.get_tx_power’)
os_dep/linux/ioctl_cfg80211.c:10327:32: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, struct cfg80211_chan_def *)’ from incompatible pointer type ‘int (*)(struct wiphy *, struct cfg80211_chan_def *)’ [-Werror=incompatible-pointer-types]
10327 |         .set_monitor_channel = cfg80211_rtw_set_monitor_channel,
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
os_dep/linux/ioctl_cfg80211.c:10327:32: note: (near initialization for ‘rtw_cfg80211_ops.set_monitor_channel’)
cc1: some warnings being treated as errors
make[4]: *** [/usr/src/linux-headers-6.14.0-36-generic/scripts/Makefile.build:207: os_dep/linux/ioctl_cfg80211.o] Error 1
make[3]: *** [/usr/src/linux-headers-6.14.0-36-generic/Makefile:1997: .] Error 2
make[2]: *** [/usr/src/linux-headers-6.14.0-36-generic/Makefile:251: __sub-make] Error 2
make[2]: Leaving directory '/var/lib/dkms/rtl8852au/1.15.0.1/build'
make[1]: *** [Makefile:251: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-36-generic'
make: *** [Makefile:639: modules] Error 2

Stop press!

I think I've sorted it.

sudo dkms uninstall rtl8852au/1.15.0.1

sudo dkms remove rtl8852au/1.15.0.1 --all
1 Like

Do you have Secure boot enabled? I suggest disabling it.

I didn't think I had, but that suggest that suggests that I might have.

How would I check?

Enter

mokutil --sb-state
1 Like

It's disabled

You can check Secure boot status in your BIOS as well.

You mentioned that you sorted it out by removing rtl8852au module. Does the upgrade process complete now without any issue? I believe rtl8852au is the module/driver for Wi-Fi networking, by removing it does your Wi-Fi internet still work?

1 Like

I continued in another thread with later issues.

the rtl8852au was for an external wifi dongle that I actually don't use much or at all now. The laptop's internal wifi is working fine.

If I need the rtl8852au again I'll just rebuild the module. I always forget exactly what was done in the past for a particular configuration, which makes it trickier when attempting to resolve an issue down the line.

I've got a reasonable knowledge of how the desktop & application side of linux goes together now, but kernel/driver stuff I don't have such a great handle on.

2 Likes

This issue also happened to me too when I upgraded from Zorin 16 to 17. I had some community made drivers setup via dkms. Dkms works great for kernel upgrade within the same version, e.g: 6.8-35 to 6.8-36 but it can fail going from 6.8 to 6.14 for example. I think it's safer to remove any dkms drivers before doing an OS upgrade.

1 Like

I agree!

Some of it for me is just remembering these things, and their associated impacts under certain procedures.

1 Like

It was the same for me, I had no idea at the time. I guess that's called learning the hard way. At least, easier to remember for next time.
Maybe this is something that the Zorin upgrade process could check, report if there is any dkms drivers setup.

1 Like

Certainly preferable to borked installation!

I agree that it should definitely be a pre-flight check.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.