通过新补丁重新编译内核模块与内核的兼容性

时间:2019-03-05 22:14:52

标签: linux linux-kernel linux-device-driver embedded-linux kernel-module

我想知道Linux内核模块是否可以与补丁程序编号(该版本中的最后一个编号)比针对内核的补丁程序编号更高的Linux内核版本一起使用。

采用以下示例:

  • 您当前正在将Linux 4.14.75用于ARM目标
  • 我为您提供了一个RPM,其中包含可一起使用的应用程序和内核模块。该模块是针对4.14.75内核编译的。该模块由应用程序加载了insmod。
  • 出现安全问题,您将目标的内核更新为4.14.100。

鉴于这种情况,我给您提供的RPM中的内核模块可以使用新内核吗?是否可以编译一次内核并使其与所有4.14内核兼容?

我不是问depmod / modprobe是否可以工作,或者是否是一个好习惯。

1 个答案:

答案 0 :(得分:1)

“是否可以编译一次内核并使其与所有4.14内核兼容?” 如果安全更新和反向移植没有破坏任何东西,也许。 但是,内核中没有稳定的内核API / ABI。 仅用户级API / ABI稳定。 https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Stable-API-ABI https://github.com/torvalds/linux/blob/master/Documentation/process/stable-api-nonsense.rst

这里有一个帖子可以自动检查,如果用户区的任何API / ABI会中断: Linux kernel API changes/additions

对于内核ABI,我找到了一个用于该工具(以及您的用例)的工具: https://developers.redhat.com/blog/2018/03/28/analyzing-binary-interface-changes-linux-kernel/