Binary compatibility in kernel

Binary compatibility in kernel

Ilya A. Volynets-Evenbakh ilya at total-knowledge.com
Wed Feb 24 19:19:12 IST 2010


Michael Sternberg wrote:
> Hello everybody
>
> I'm pretty new in Linux kernel development and seeking answers for
> some questions related to binary compatibility between various kernels.
>
> I know that there is no stable kernel interface in Linux.
> Here are appropriate articles that describe the problem:
> http://www.kroah.com/log/linux/stable_api_nonsense.html
> http://tinyurl.com/yane5lb
>
> I understand that the best way to make the GPLed module to be
> supported in all future versions of kernel is to add it into the main
> kernel tree.
>
> Question #1:
> Where do I start if I want to add my module into main tree ?
> What are chances that this process will succeed ?
If your module is well-written, chances are pretty high.
>
> Yet, if it's not an option for the moment and developer wants to
> supply prebuilt binary images of kernel module - what are the
> alternatives ?
That depends - if your module is GPL - build it for some common set of
kernels
and supply your code for those who have their own.
If it really is binary-only, you'll have to go "blob" way - provide your
code inside
a binary which uses your API, and sources for a wrapper, which can be
compiled to
particular kernel. That's how ATI, Nvidia, and other binary-only driver
providers
do it.
>
> Question #2:
> Let's say I built a binary kernel module with headers of
> 2.6.18-92.el5-i686 Red Hat kernel.
> Will it work with another 2.6.18 Red Hat kernels ?
> With plain vanilla 2.6.18 kernels ?
> With other 2.6 kernels ?
Depending on kernel build options, it might work in some very rare
cases. Safe bet is "No"

> Are there any promises for kernel binary compatibility from, at least,
> large vendors like RHEL and SLES ?
No.
>
> Question #3:
> Is it common in Linux to automatically build and install kernel module
> during installation ?
Yes.
> Are there any packages/frameworks that provide this capability ?
The standard Linux build system (Kbuild) does it all for you.
Get any external module, and look at build system.
For example, take a look at how compat-wireless does it
(http://linuxwireless.org/en/users/Download/stable/)
It has to build a lot of modules, depending on user's choices,
so it might be a bit more complex then you need.

-- 
Ilya A. Volynets-Evenbakh
http://www.total-knowledge.com




More information about the Linux-il mailing list