好吧,我有一台运行 rt 3.2 内核的 rhel 6 机器 - 基本上它看起来需要更新驱动程序,因为它是克隆,该图像看到扩展卡 nic 和 intel i350 并将其用作两个 eth 端口。但它不想使用主板 i210 以太网端口。 igb 是这两种设备的驱动程序,因此我的计划是简单地在旧驱动程序上加载新驱动程序,并希望它能解决问题。我采取了两种方法来实现此标准,在系统上构建它并 modprobe,并尝试在另一个系统上构建 .ko 并将其复制并替换现有的 .ko 文件
rmmod igb //to remove the previous driver
rpm -q igb // says there is no package igb so maybe it wasn't installed with rpm
tar -zxf igb-5-7.2.tar.gz
cd igb-5.7.2/src
make install
make[1]: Entering directory `/usr/src/kernels/3.2.23-rt37.56.el6rt.x86_64'
CC [M] /lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.o
In file included from /lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb.h:32,
from /lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.c:30:
/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/kcompat.h:4183: error: conflicting types for ‘netdev_features_t’
include/linux/netdev_features.h:15: note: previous declaration of ‘netdev_features_t’ was here
/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/kcompat.h:4212: error: redefinition of ‘ethtool_rxfh_indir_default’
include/linux/ethtool.h:769: note: previous definition of ‘ethtool_rxfh_indir_default’ was here
/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.c:2441: warning: initialization from incompatible pointer type
/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.c:2442: warning: initialization from incompatible pointer type
/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.c:2488: warning: initialization from incompatible pointer type
/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.c:2489: warning: initialization from incompatible pointer type
make[2]: *** [/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src/igb_main.o] Error 1
make[1]: *** [_module_/lib/modules/3.2.23-rt37.56.el6rt.x86_64/kernel/drivers/net/ethernet/intel/igb-5.7.2/src] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.2.23-rt37.56.el6rt.x86_64'
make: *** [default] Error 2
如果有人可以指出如何避免 netdev_features_t 和 ethtool 定义错误以及我做错了什么,那就太好了。
我还使用了在另一个系统上构建的 .ko 文件并复制了现有的 .ko
modprobe igb //using .ko file from a newer system says headers are incompatible or incompatible format
所以
答:我在构建过程中做错了什么吗,即没有完全卸载旧驱动程序及其冲突或其他问题。
B:我用的是最新的驱动程序,我应该使用旧的驱动程序吗,因为内核太旧了
C:您不能使用其他系统中的 .ko 文件吗?或者它们必须针对您的特定内核进行编译吗
预先的想法和感谢。
答案1
您尝试编译的驱动程序与您尝试使用它的内核的年龄相差太大。您需要更改为该驱动程序设计的正确版本范围内的内核。
另外,RHEL6 已过时,您应该升级到受支持的版本,这可能也会有所帮助。