【问题标题】:Kernel module compatibility with kernel recompiled with new patch内核模块与使用新补丁重新编译的内核的兼容性
【发布时间】:2019-07-27 11:44:48
【问题描述】:

我想知道 Linux 内核模块是否可以与补丁号(版本中的最后一个数字)高于内核编译所针对的 Linux 内核版本一起使用。

举个例子:

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

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

我不是在问 depmod/modprobe 是否会起作用,或者它是否是好的做法。

【问题讨论】:

  • 您应该阅读有关 vermagic 和 modversions 的信息

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


【解决方案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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 2015-07-07
    • 2017-05-29
    • 2016-08-04
    • 2014-09-26
    • 2012-02-03
    • 2021-07-16
    • 2021-04-11
    相关资源
    最近更新 更多