gpt4 book ai didi

c - 重建/更新内核模块

转载 作者:行者123 更新时间:2023-11-30 18:06:59 27 4
gpt4 key购买 nike

嘿那里,以下问题:我在工作中使用一个相当奇怪的 Linux 发行版(Centos 5),它似乎有一个较旧的内核(或者至少在内核中存在一些差异),并且您不能简单地更新它。我需要安装的程序需要一个函数 crypto_destro_tfm (并且可能还有更多,但这是目前唯一的错误),该函数包含在文件 linux/crypto/api.c 中 - 所以我假设它在内核模块 crypto_api 中。问题是:在我的发行版上,我什至没有 crypto/api.c,即使我有一个模块 crypto_api.ko ,但似乎这个函数不在那里。

我的计划如下:从较新的 Linux 发行版获取 crypto_api,然后编译它并将模块加载到我的 centos 中。

现在我希望你们中的一些人可以告诉我需要做什么来重建和替换该模块。当然,我确实拥有来自较新内核的所有源文件。 (只是提醒你:我不能简单地重新编译并使用更新的内核,b/c centos 在这方面很糟糕)谢谢

FWIW:这是确切的错误

警告:“crypto_destroy_tfm”[/home/Chris/digsig-patched/digsig_verif.ko] 未定义!

最佳答案

在旧内核中向后移植 API 更改很有可能会导致一系列问题。假设您将 2.6.Y 版本的加密 api 反向移植到本地版本 2.6.X

现在您遇到以下情况:

  • 模块 crypto api 导出 2.6.Y 函数
  • 您的外部模块可能对这种情况感到满意
  • 所有其他依赖于加密 API 2.6.X 版本的模块都会提示。

但是等等,我可以将最近的内核代码向后移植到所有提示的模块中,然后我们开始...哎呀,但是我们遇到了前一种情况,但现在每个向后移植的模块可能会触发类似的情况。

如果您无法更新 CentOS 内核,因为 CentOS 内核有很多自定义代码,您担心在使用“vanilla”内核时会丢失,那么您可能会发现“降级”是一项更容易的任务“您的外部模块:

  • 查看当前的加密 API(例如使用 lxr.linux.no)
  • 查看此 API 的内核版本
  • 尝试了解如何通过调用旧 API 来替换新 API 以提供类似的功能。
  • 修改您的外部模块以使用旧 API 而不是新 API。

无论如何,您可能无法用普通内核替换内核,但您至少应该能够重建它,然后修补它并重建它等等......如果您不能这样做这个简单的任务,那么我认为向后移植任何东西都不会成功。

关于c - 重建/更新内核模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5143725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com