如何在CentOS、RHEL或者Fedora中重新编译ixgbe万兆网卡驱动

2017-11-8 飞火科技 技术文章

想要在Linux使用Intel的PCI Express 10G网卡(例如,82598,82599,x540),需要安装Ixgbe驱动。如今的Linux发行版都会预安装ixgbe的可加载模块,但是预安装的ixgbe驱动不是完整功能版。如果想要开启和定制所有10G网卡的功能(如,RSS、多队列、虚拟化功能、硬件 offload 等),需要从源码编译安装。

本文基于红帽系平台(如,CentOS,RHEL或Fedora)。

第一步: 安装依赖
首先,安装必要的开发环境和安装匹配的内核头文件

yum install gcc make perl -y && yum install kernel-devel -y
第二步: 编译Ixgbe
从官方页面下载最新Ixgbe源码
wget https://sourceforge.net/projects/e1000/files/ixgbe%20stable/5.3.3/ixgbe-5.3.3.tar.gz

请检查支持的内核版本。例如,Ixgbe5.3.3版本支持Linux内核版本2.6.18到4.13

提取压缩包并编译:
tar -xvf ixgbe-5.3.3.tar.gz && cd ixgbe-5.3.3/src && make

如果成功,可以在当前目录找到编译完成的驱动(ixgbe.ko)。

可以运行这个命令来查看编译信息:
modinfo ./ixgbe.ko

将会输出一个Ixgbe驱动的可用参数列表

第三步: 加载 Ixgbe 驱动
这步准备加载已经编译好的驱动。

如果系统已经加载了Ixgbe驱动,首先需要卸载掉老版本。否则,新版本不能加载。

rmmod ixgbe.ko
此步骤请勿在ssh下操作,会导致掉线 请在 iKVM或者IPMI界面下操作
然后插入编译完成的驱动到内核中:

insmod ./ixgbe.ko

同时,你可以设置启动参数来启动

insmod ./ixgbe.ko FdirPballoc=3 RSS=16

验证驱动是否加载成功,使用dmesg命令,查看其输出

dmesg

Intel(R)10Gigabit PCI ExpressNetworkDriver- version 3.23.2
Copyright(c)1999-2014IntelCorporation.
ixgbe 0000:21:00.0: PCI INT A -> GSI 64(level, low)-> IRQ 64
ixgbe 0000:21:00.0: setting latency timer to 64
ixgbe:Receive-SideScaling(RSS)set to 16
ixgbe:FlowDirector packet buffer allocation set to 3
ixgbe:0000:21:00.0: ixgbe_check_options:FlowDirector will be allocated 256kB of packet buffer
ixgbe:0000:21:00.0: ixgbe_check_options:FCoEOffload feature enabled
ixgbe 0000:21:00.0: irq 87for MSI/MSI-X
ixgbe 0000:21:00.0: irq 88for MSI/MSI-X
ixgbe 0000:21:00.0: irq 89for MSI/MSI-X
ixgbe 0000:21:00.0: irq 90for MSI/MSI-X
ixgbe 0000:21:00.0: irq 91for MSI/MSI-X
ixgbe 0000:21:00.0: irq 92for MSI/MSI-X
ixgbe 0000:21:00.0: irq 93for MSI/MSI-X
ixgbe 0000:21:00.0: irq 94for MSI/MSI-X
ixgbe 0000:21:00.0: irq 95for MSI/MSI-X
ixgbe 0000:21:00.0: irq 96for MSI/MSI-X
ixgbe 0000:21:00.0: irq 97for MSI/MSI-X
ixgbe 0000:21:00.0: irq 98for MSI/MSI-X
ixgbe 0000:21:00.0: irq 99for MSI/MSI-X
ixgbe 0000:21:00.0: irq 100for MSI/MSI-X
ixgbe 0000:21:00.0: irq 101for MSI/MSI-X
ixgbe 0000:21:00.0: irq 102for MSI/MSI-X
ixgbe 0000:21:00.0: irq 103for MSI/MSI-X
ixgbe 0000:21:00.0: eth3: DCA registration failed:-1
ixgbe 0000:21:00.0: PCI Express bandwidth of 32GT/s available
ixgbe 0000:21:00.0:(Speed:5.0GT/s,Width: x8,EncodingLoss:20%)
ixgbe 0000:21:00.0: eth3: MAC:2, PHY:9, SFP+:3, PBA No: E68793-006
ixgbe 0000:21:00.0:90:e2:ba:5b:e9:1c
ixgbe 0000:21:00.0: eth3:EnabledFeatures:RxQ:16TxQ:16FdirHash RSC
ixgbe 0000:21:00.0: eth3:Intel(R)10GigabitNetworkConnection
ixgbe 0000:21:00.1: PCI INT B -> GSI 68(level, low)-> IRQ 68
ixgbe 0000:21:00.1: setting latency timer to 64
ixgbe:0000:21:00.1: ixgbe_check_options:FCoEOffload feature enabled
ixgbe 0000:21:00.0: registered PHC device on eth3
ixgbe 0000:21:00.1: irq 104for MSI/MSI-X
ixgbe 0000:21:00.1: irq 105for MSI/MSI-X
ixgbe 0000:21:00.1: irq 106for MSI/MSI-X
ixgbe 0000:21:00.1: irq 107for MSI/MSI-X
ixgbe 0000:21:00.1: irq 108for MSI/MSI-X
ixgbe 0000:21:00.1: irq 109for MSI/MSI-X
ixgbe 0000:21:00.1: irq 110for MSI/MSI-X
ixgbe 0000:21:00.1: irq 111for MSI/MSI-X
ixgbe 0000:21:00.1: irq 112for MSI/MSI-X
ixgbe 0000:21:00.1: irq 113for MSI/MSI-X
ixgbe 0000:21:00.1: irq 114for MSI/MSI-X
ixgbe 0000:21:00.1: irq 115for MSI/MSI-X
ixgbe 0000:21:00.1: irq 116for MSI/MSI-X
ixgbe 0000:21:00.1: irq 117for MSI/MSI-X
ixgbe 0000:21:00.1: irq 118for MSI/MSI-X
ixgbe 0000:21:00.1: irq 119for MSI/MSI-X
ixgbe 0000:21:00.1: irq 120for MSI/MSI-X
ixgbe 0000:21:00.1: irq 121for MSI/MSI-X
ixgbe 0000:21:00.1: irq 122for MSI/MSI-X
ixgbe 0000:21:00.1: irq 123for MSI/MSI-X
ixgbe 0000:21:00.1: irq 124for MSI/MSI-X
ixgbe 0000:21:00.1: irq 125for MSI/MSI-X
ixgbe 0000:21:00.1: irq 126for MSI/MSI-X
ixgbe 0000:21:00.1: irq 127for MSI/MSI-X
ixgbe 0000:21:00.1: irq 128for MSI/MSI-X
ixgbe 0000:21:00.1: irq 129for MSI/MSI-X
ixgbe 0000:21:00.1: irq 130for MSI/MSI-X
ixgbe 0000:21:00.1: irq 131for MSI/MSI-X
ixgbe 0000:21:00.1: irq 132for MSI/MSI-X
ixgbe 0000:21:00.1: irq 133for MSI/MSI-X
ixgbe 0000:21:00.1: irq 134for MSI/MSI-X
ixgbe 0000:21:00.1: irq 135for MSI/MSI-X
ixgbe 0000:21:00.1: irq 136for MSI/MSI-X
ixgbe 0000:21:00.1: irq 137for MSI/MSI-X
ixgbe 0000:21:00.1: irq 138for MSI/MSI-X
ixgbe 0000:21:00.1: irq 139for MSI/MSI-X
ixgbe 0000:21:00.1: irq 140for MSI/MSI-X
ixgbe 0000:21:00.1: irq 141for MSI/MSI-X
ixgbe 0000:21:00.1: irq 142for MSI/MSI-X
ixgbe 0000:21:00.1: irq 143for MSI/MSI-X
ixgbe 0000:21:00.1: irq 144for MSI/MSI-X
ixgbe 0000:21:00.1: irq 145for MSI/MSI-X
ixgbe 0000:21:00.1: irq 146for MSI/MSI-X
ixgbe 0000:21:00.1: irq 147for MSI/MSI-X
ixgbe 0000:21:00.1: irq 148for MSI/MSI-X
ixgbe 0000:21:00.1: irq 149for MSI/MSI-X
ixgbe 0000:21:00.1: irq 150for MSI/MSI-X
ixgbe 0000:21:00.1: irq 151for MSI/MSI-X
ixgbe 0000:21:00.1: irq 152for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth3: link isnot ready
8021q: adding VLAN 0 to HW filter on device eth3
ixgbe 0000:21:00.1: eth4: DCA registration failed:-1
ixgbe 0000:21:00.1: PCI Express bandwidth of 32GT/s available
ixgbe 0000:21:00.1:(Speed:5.0GT/s,Width: x8,EncodingLoss:20%)
ixgbe 0000:21:00.1: eth4: MAC:2, PHY:9, SFP+:4, PBA No: E68793-006
ixgbe 0000:21:00.1:90:e2:ba:5b:e9:1e
ixgbe 0000:21:00.1: eth4:EnabledFeatures:RxQ:48TxQ:48FdirHash RSC
ixgbe 0000:21:00.1: eth4:Intel(R)10GigabitNetworkConnection
ixgbe 0000:21:00.0: eth3: detected SFP+:3
ixgbe 0000:21:00.1: registered PHC device on eth4
ADDRCONF(NETDEV_UP): eth4: link isnot ready
8021q: adding VLAN 0 to HW filter on device eth4
ixgbe 0000:21:00.1: eth4: detected SFP+:4
ixgbe 0000:21:00.0: eth3: NIC LinkisUp10Gbps,FlowControl: RX/TX
ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
ixgbe 0000:21:00.1: eth4: NIC LinkisUp10Gbps,FlowControl: RX/TX
ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
eth3:noIPv6 routers present
eth4:noIPv6 routers present
 

第四步: 安装Ixgbe驱动
当确认驱动已经加载后,就可以安装驱动到系统中了

make install

ixgbe.ko将会安装在下列目录

/lib/modules/<kernel-version>/kernel/drivers/net/ixgbe
此时,编译好的驱动将在启动时自动加载,也可以通过运行命令加载它:

modprobe ixgbe




Powered by NOC.IM     12.84ms