Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 重建/更新内核模块_C_Linux_Kernel Module_Rebuild - Fatal编程技术网

C 重建/更新内核模块

C 重建/更新内核模块,c,linux,kernel-module,rebuild,C,Linux,Kernel Module,Rebuild,嘿,那里, 以下问题: 我正在使用一个相当奇怪的linux发行版(Centos 5),它似乎有一个较旧的内核(或者至少在内核中有一些差异),您不能简单地更新它。 我需要安装的程序需要一个函数crypto_desto_tfm(还有一些,但这是目前唯一的错误),它包含在文件linux/crypto/api.c中-因此我假设它在内核模块crypto_api中。问题是:在我的发行版上,我甚至没有crypto/api.c,尽管我有一个模块crypto_api.ko,但似乎这个函数不在其中 我的计划如下:从

嘿,那里, 以下问题: 我正在使用一个相当奇怪的linux发行版(Centos 5),它似乎有一个较旧的内核(或者至少在内核中有一些差异),您不能简单地更新它。 我需要安装的程序需要一个函数crypto_desto_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版的crypto api向后移植到本地版本2.6.X

现在您有以下情况:

  • 模块crypto api导出2.6.Y函数
  • 您的外部模块可能会对这种情况感到满意
  • 依赖于crypto API版本2.6.X的所有其他模块都会投诉
但是等等,我可以将最近的内核代码向后移植到所有抱怨的模块中,现在我们开始。。。哦,但是我们有前一种情况,但是现在每个后端口模块都可能触发类似的情况

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

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

在任何情况下,您可能无法用普通的内核替换您的内核,但您至少应该能够重建它,然后修补它并重建它等等。。。如果你不能完成这个简单的任务,那么我不认为后移植会成功

尝试从具有该模块的较新版本CentOS下载SRC RPM,并在CentOS 5上重新编译RPM:

rpmbuild --rebuild kernel-X.XX-X.src.rpm

我没有CentOS的副本可供比较,因此您可能希望阅读rpm/rpmbuild上的手册页,但我发现重新编译包含内核及其所有模块的整个软件包比尝试从较新内核移植一个模块更安全。当我需要更新的软件包时,我偶尔会在Debian/Ubuntu上这样做。

为什么不能更新内核?你不是root吗?看,这与你的问题有关吗?如果没有内核更新,并且你不能运行普通内核,那么你应该将“尽快迁移到其他linux发行版”添加到你的待办事项列表中。我不能更新到普通内核,因为CentOS更新策略有点奇怪。我也不喜欢它,我自己也不会用它,但它在工作。(不管它在哪里。)我可以看到def。明白你的意思了。但从我在代码中看到的情况来看,新版本基本上只扩展了一些新功能。因此,我认为后移植不会带来太大的麻烦(可能需要对新功能进行一点调整),因此我想至少尝试一下。