insmod:插入DPDK igb_uio.ko模块时出错

zig*_*zag 5 dpdk

我用的是centos 7.3。当我运行 insmod igb_uio.ko 时,我在 /var/logs/message 中收到此错误:

  • igb_uio:加载树外模块会污染内核。
  • 警告:未启用 retpoline 的编译器构建的模块“igb_uio”可能会影响 Spectre v2 缓解措施
  • igb_uio:模块验证失败:签名和/或所需密钥丢失 - 污染内核。
  • igb_uio:不同意符号 __uio_register_device 的版本
  • igb_uio:未知符号 __uio_register_device(错误-22)...

在我对操作系统和内核做了一些补丁之后,就会发生这种情况。打补丁后,内核版本为:3.10.0.957.21.3.e17.x86_64

打补丁之前,效果很好。该补丁针对一些 TCP 严重漏洞。我更喜欢运行补丁。

我使用DPDK 17.08.1,我也尝试过18.11.2。两者都得到相同的错误。

我尝试在修补后从源代码重建。重建出现错误:(在修补之前,构建成功。):

  • make: *** /lib/modules/3.10.0-957.21.3.el7.x86_64/build: 没有这样的文件或目录。停止。
  • make[6]: *** [igb_uio.ko] 错误 2
  • make[5]: *** [igb_uio] 错误 2
  • make[4]: *** [linux] 错误 2
  • make[3]: *** [内核] > 错误 2
  • make[2]: *** [全部] 错误 2
  • make[1]: *** [预安装] 错误 2
  • make: *** [安装] 错误 2

小智 1

您需要根据正确的内核头文件构建 igb_uio 模块。如果您修补/更新了内核,那么您应该对标头执行相同的操作。如果您的标头已修补但仍然出现错误,请尝试按如下方式编译:

RTE_KERNELDIR=/path/to/headers make -j
Run Code Online (Sandbox Code Playgroud)