构build内核头文件来编译R1Soft hcp模块

我使用CentOS 5运行一个基于Xen的虚拟机,我的主机提供者从主机上运行内核版本2.6.37.6(所以没有pv-grub)。

[root@dev ~]# uname -r
2.6.37.6

我试图安装R1Soft代理,我需要为它构buildhcpdriver模块。 不幸的是, yum install kernel-develyum install kernel-xen-devel在我尝试安装构build模块所需的内核头文件时并没有这么做(而且我猜测它与我的托pipe提供程序使用自定义内核)。

所以我继续从kernel.org下载内核,解压到/usr/src/并运行:

zcat /proc/config.gz > .config
make oldconfig && make modules_prepare

现在我已经构build了hcpdriver模块的内核头文件,但是当我尝试modprobe / insmod时,dmesg中出现以下错误

hcpdriver: no symbol version for module_layout

我search了这个错误,并发现了一些关于vermagic的提示。 但是我新build的模块与我的托pipe服务提供商提供的模块(它明显遭受某种错误和R1Soft支持要求我编译一个更新的版本)具有相同的function。

这里是老式的(由我的主人提供的):
[root@dev r1soft]# modinfo hcpdriver.o
filename: hcpdriver.o
version: 4.1.1 build 13785
license: Proprietary
description: Linux Hot Copy Driver
author: Michael Brumlow
depends:
vermagic: 2.6.37.6 SMP mod_unload modversions

以下是我基于新编译的内核头文件构build的新文件:
[root@dev r1soft]# modinfo hcpdriver-cki-2.6.37.6.ko
filename: hcpdriver-cki-2.6.37.6.ko
version: 4.2.1 build 16433
license: Proprietary
description: Linux Hot Copy Driver
author: Michael Brumlow
depends:
vermagic: 2.6.37.6 SMP mod_unload modversions

正如你所看到的一样, vermagic都是一样的。 问题是第一个模块运行良好,当我insmod它,但第二个没有。

有人有类似的问题吗? 这是我第一次自己构build内核头文件,所以我不太确定在这种情况下我使用的过程是否正确。 还有什么我可以尝试?

更新1
我再次从头开始,从kernel.org重新下载tar.gz,解压到/ usr / src / kernels,然后运行:

zcat /proc/config.gz > .config
make
make modules_install && make headers_install

一切完成没有错误。

然后我跑了:
r1soft-setup --get-module --no-binary
这也完成了没有错误,但现在当我尝试insmod模块,dmesg报告:
hcpdriver: disagrees about version of symbol __memcpy
hcpdriver: Unknown symbol __memcpy (err -22)

先谢谢乔治

不,我从来没有见过这个问题。 但这听起来很乱。 这可能是托pipe支持问题。 如果主机推送一个特定的内核版本,并且他们pipe理R1Soft安装,主机是否应该有一个可用的hcp模块,或者能够让用户通过所需的步骤来使事情正常工作? 如果有的话,您可以尝试hcp-setup并将相关信息上传到R1Soft的构build服务器。 我从来没有在本地构build模块,但我通常在发行版内核或稍微修改的发行版内核。