我用的是centos 7.3。当我运行insmod igb_uio.ko时,我在/var/log/message中得到了这个错误:
这是在我对操作系统和内核做了一些补丁之后发生的。补丁之后,内核版本是: 3.10.0.957.21.3.e17.x86_64
在补丁之前,它很好用。该修补程序用于某些TCP关键漏洞。我更喜欢做补丁。
我使用DPDK 17.08.1,我也尝试了18.11.2。两人都犯了同样的错误。
我试着从源头重建,一次又一次。重建获取错误:(在修补程序之前,生成成功):
发布于 2019-09-24 15:38:11
您需要针对正确的内核头构建您的igb_uio模块。如果您修补/更新了内核,那么您应该对标头做同样的修改。如果您的头是修补程序,但是仍然会得到错误,那么尝试像这样编译它:
RTE_KERNELDIR=/path/to/headers make -j发布于 2019-09-10 11:04:09
要插入igb_uio模块,必须先插入uio模块。然后,插入igb_uio将正确工作。
无论如何,我建议使用VFIO而不是igb_uio,除非您特别需要igb_uio。
此外,如果您正在构建自定义内核,则应该添加相关的标头/模块路径,以确保针对该自定义内核构建模块可以工作。(意思是,当编译器执行/usr/src/linux-headers-$(uname -r)/时,路径必须存在)
发布于 2021-07-14 08:06:21
据我所知,
此错误源于内核开发包与当前内核的不匹配或不足。
如果当前内核版本与内核开发不一致,则无法正确生成/lib/modules/$(uname -r)/。在我的例子中,我处理的内核是4.13.12-1.el7.elrepo.x86_64,但是内核开发包属于3.10.0-1160.31.el7.x86_64。
我的解决方案是安装与当前内核一致的内核开发。
yum update
yum install "kernel-devel-uname-r == $(uname -r)"如果找不到数据包,则可能需要使用rpm手动安装。在我的例子中,我将获取kernel-ml-devel-4.14.13-1.el7.elrepo.x86_64.rpm数据包并删除旧的内核
yum remove kernel-headers-3.10.0-1160.31.1.el7.x86_64
yum remove kernel-devel-3.10.0-1160.31.1.el7.x86_64我安装了正确的开发包
sudo rpm -i kernel-ml-devel-4.13.12-1.el7.elrepo.x86_64.rpm最后,在我的例子中,dpdk编译时没有错误。
https://stackoverflow.com/questions/57694783
复制相似问题