Installing kmod packages to private builds

Hello @hnyman, we had chance to talk on the other topic...the one of R7800 with corrupted NAND.
Now that I have a proper and working device (a new one) I immediately installed our build...and I'd be really happy if you could explain me how the releases work, with their kernels and packages.
I flashed a very recent build dated only 3 days ago, but still, if I try and install some package it reports "kernel version incompatible", because of a very little difference in kernel number.

root@OpenWrt:~# opkg install kmod-fs-ntfs
Unknown package 'kmod-fs-ntfs'.
Collected errors:
 * pkg_hash_check_unresolved: cannot find dependency kernel (= 5.10.102-1-2425738213d9b553c9576db6dcbb9f9d) for kmod-nls-base
 * pkg_hash_check_unresolved: cannot find dependency kernel (= 5.10.102-1-2425738213d9b553c9576db6dcbb9f9d) for kmod-fs-ntfs
 * pkg_hash_fetch_best_installation_candidate: Packages for kmod-fs-ntfs found, but incompatible with the architectures configured
 * opkg_install_cmd: Cannot install package kmod-fs-ntfs.

This is just a little example, but I have plenty of packages I need to install and produce similar output.
I had this issue many years ago with a WNDR3700 too, and these premade builds I found excellent to start from but couldn't allow me to install the needed packages.
Clearly there is something I don't know, don't master or don't see, but I'm eager to learn.
How do we play wisely with these premade builds, and modify them according to our needs?
Is there some documentation I can study about builds, releases and packages compatibility?
:pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray:
Sorry for the poem. I'm always very verbose.

use either one of these two great builds for R7800 without this huge limitation

have fun with yours "plenty of packages"

1 Like

In practice you can't install OpenWrt official repository kmods into private builds, as the kernel checksum hash is pretty much build-run specific.

Ps. my build already includes ntfs-3g, which is the read-write ntfs support...

Thanks to you both, @hnyman and @steom!
I followed your advice, and installed latest build by Kong. It works perfectly, but some details of your build, hnyman, were nicer. I remember I saw the temperatures in the graphs for example, and they're missing in Kong's. :man_shrugging:

here what kong had some months ago as graph.

CONFIG_PACKAGE_collectd=m
CONFIG_PACKAGE_collectd-mod-cpu=m
CONFIG_PACKAGE_collectd-mod-interface=m
CONFIG_PACKAGE_collectd-mod-iwinfo=m
CONFIG_PACKAGE_collectd-mod-load=m
CONFIG_PACKAGE_collectd-mod-memory=m
CONFIG_PACKAGE_collectd-mod-network=m
CONFIG_PACKAGE_collectd-mod-rrdtool=m
1 Like

Question: is NSS active in Kong's build?
How do I check it?
How does one activate this in a build (thinking I might ever do a build myself)?

Think it is with truck builds https://www.desipro.de/openwrt/trunk/ipq806x-nss/

Trunk builds have downsides after some time I'm not able to fix, like disappearance of package repositories. I'd prefer to go with a stable build, as there is longer time support...and learn how to modify the kernel components of it.
Is it possible?

Yep. You can clone my 21.02 repository. It has all the commits to fully enable NSS.

The second post in the thread has all the instructions on how to build it from scratch and keep it up to date with 21.02.

Thank you Chris!
so you mean if I use the stable 21.02 instead of your master I'll retain the long support and I can install packages from the original repositories, even after a long time?
Sorry for the stupid question. I'm a noob, basically.

1 Like

OpenWrt is always updating. The cleanest method to ensure full compatibility of kernel mods is to build the kernel and kmod at the same time. NSS applies kernel mods so the kernel is changed and not compatible with official kmods installed via opkg. Opkg doesn’t have a “check for compatibility” feature in a live system that can sort out and update the kmods. I initially was nervous to build. Once I figured out the process, I actually prefer building because I can get exactly what features I want. The build process is not that scary anymore. :sunglasses:

Ex: I update my build this way, it rebases the build with the latest OpenWrt commits, updates all the package feeds, and installs all the latest packages. I then build the firmware based off that. If you think about any commercial firmware they do a single firmware file to best safety update multiple main features at once:


git fetch upstream && git rebase upstream/openwrt-21.02

./scripts/feeds update -a && ./scripts/feeds install -a

When you build you can make a repository of compatible packages that you can choose to install later on like this:

https://github.com/ACwifidude/openwrt/tree/openwrt-21.02-nss-qsdk11.0/bin/targets/ipq806x/generic/packages

My start to finish instructions are here:

Yes. All stable releases are available this way. Not that it would be wise to run a super old version, but you could install packages on an ancient version like 15.05 just like the day it was released.

(Although the ability to do that on versions that predate openwrt using https is questionable- not sure is the project still has http accessible for those old versions; this was just an example).

This is in contrast to snapshots/master which is subject to change as soon as 24 hours later.