How to deliver a kernel module that doesn't have to be rebuilt for every kernel update
We are using the open source project riffa to generate a kernel module to communicate with a PCIe card
At the moment we build effectively a kmod rpm, i.e. the .ko file we deliver was built against and is specific to only one exact kernel version
This means that for every kernel update we need to rebuild our riffa.ko against the new kernel and generate a new rpm to deliver it
I have seen mention of akmod and dkms being ways of getting the kernel module to be rebuilt on the fly when a kernel update occurs but neither of these packages are in the core RHEL 6 rpms (although they are available from EPEL)
As those tools are not part of the standard rhel6 distribution is there some other way we should be doing this ?
Alec Keeler
Responses
You may want to look into ELRepo's kmod packages (see FAQ ). By design, they survive kernel updates transparently without the need for development packages.
If you use only symbols which are on the KABI whitelist, these are guaranteed to be stable over the life of a major release:
If you use non-stable symbols, these are not guaranteed to be stable, so you need to be aware of when the interface (either API or ABI) changes and change code and/or recompile as required. As Akemi said, the ELRepo method can be helpful here. Akmods and DKMS are in EPEL.
If you have a business case for making an unstable symbol stable, you may request this via a support case. We have definitely taken requests from development partners to stabilise symbols in the past. However, be aware that we can't make every symbol stable as we need scope to change at least some things over the life of a RHEL release, so we may deny stability requests for some symbols.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
