Skip to content

Linux 6.12 and the 25.12 toolchain: why kernel modules must match

Linux 6.6 → 6.12, GCC 13.3 → 14.3. Kernel modules must match.

25.12 moves every target from Linux 6.6 to 6.12 and updates the toolchain, so kernel modules built for 24.10 will not load on 25.12.

Component 24.10.0 25.12.0
Linux kernel 6.6.73 6.12.71
GCC 13.3.0 14.3.0
binutils 2.42 2.44
musl 1.2.5 1.2.5
glibc 2.38 2.41

25.12.6 moves the kernel to 6.12.112. In 25.12.0 the wireless stack (cfg80211/mac80211) comes from kernel 6.18.7, alongside dnsmasq 2.91, dropbear 2025.89 and busybox 1.37.0.

  • kmod-* packages are built for one exact kernel. The feed path contains the kernel hash, as in targets/<target>/kmods/<kernel-hash>/, and it has to match the running kernel.
  • A kmod from another release, another build or a mirror with a different hash will fail to install or to load. That is a common reason a package “will not install”.
  • Third-party builds often ship their own kernel. Official kmods may not fit them at all.
Terminal window
uname -r
grep -E 'RELEASE|TARGET' /etc/openwrt_release

Sources

Router.Homes

Independent OpenWrt notes. Every page states the firmware, device, package manager and way back.

Icons: Solar by 480 Design, CC BY 4.0