Linux 有问必答: 如何在红帽系linux中编译Ixgbe驱动

简介:

提问:我想要安装最新版的ixgbe 10G网卡驱动。在CentOS, Fedora 或 RHEL中,我应该如何编译ixgbe驱动?

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

本文基于红帽系平台(如,CentOS,RHEL或Fedora)。Debian系平台,请看这篇文章

第一步: 安装依赖

首先,安装必要的开发环境和安装匹配的内核头文件


 
 
  1. $ sudo yum install gcc make
  2. $ sudo yum install kernel-devel

第二步: 编译Ixgbe

官方页面下载最新Ixgbe源码


 
 
  1. $ wget http://downloads.sourceforge.net/project/e1000/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz

请检查支持的内核版本。例如,Ixgbe3.23.2版本支持Linux内核版本2.6.18到3.18.1。

提取压缩包并编译:


 
 
  1. $ tar -xvf ixgbe-3.23.2.tar.gz
  2. $ cd ixgbe-3.23.2/src
  3. $ make

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

可以运行这个命令来查看编译信息:


 
 
  1. $ modinfo ./ixgbe.ko

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

第三步: 加载 Ixgbe 驱动

这步准备加载已经编译好的驱动。

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


 
 
  1. $ sudo rmmod ixgbe.ko

然后插入编译完成的驱动到内核中:


 
 
  1. $ sudo insmod ./ixgbe.ko

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


 
 
  1. $ sudo insmod ./ixgbe.ko FdirPballoc=3 RSS=16

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


 
 
  1. $ dmesg


 
 
  1. Intel(R) 10 Gigabit PCI Express Network Driver - version 3.23.2
  2. Copyright (c) 1999-2014 Intel Corporation.
  3. ixgbe 0000:21:00.0: PCI INT A -> GSI 64 (level, low) -> IRQ 64
  4. ixgbe 0000:21:00.0: setting latency timer to 64
  5. ixgbe: Receive-Side Scaling (RSS) set to 16
  6. ixgbe: Flow Director packet buffer allocation set to 3
  7. ixgbe: 0000:21:00.0: ixgbe_check_options: Flow Director will be allocated 256kB of packet buffer
  8. ixgbe: 0000:21:00.0: ixgbe_check_options: FCoE Offload feature enabled
  9. ixgbe 0000:21:00.0: irq 87 for MSI/MSI-X
  10. ixgbe 0000:21:00.0: irq 88 for MSI/MSI-X
  11. ixgbe 0000:21:00.0: irq 89 for MSI/MSI-X
  12. ixgbe 0000:21:00.0: irq 90 for MSI/MSI-X
  13. ixgbe 0000:21:00.0: irq 91 for MSI/MSI-X
  14. ixgbe 0000:21:00.0: irq 92 for MSI/MSI-X
  15. ixgbe 0000:21:00.0: irq 93 for MSI/MSI-X
  16. ixgbe 0000:21:00.0: irq 94 for MSI/MSI-X
  17. ixgbe 0000:21:00.0: irq 95 for MSI/MSI-X
  18. ixgbe 0000:21:00.0: irq 96 for MSI/MSI-X
  19. ixgbe 0000:21:00.0: irq 97 for MSI/MSI-X
  20. ixgbe 0000:21:00.0: irq 98 for MSI/MSI-X
  21. ixgbe 0000:21:00.0: irq 99 for MSI/MSI-X
  22. ixgbe 0000:21:00.0: irq 100 for MSI/MSI-X
  23. ixgbe 0000:21:00.0: irq 101 for MSI/MSI-X
  24. ixgbe 0000:21:00.0: irq 102 for MSI/MSI-X
  25. ixgbe 0000:21:00.0: irq 103 for MSI/MSI-X
  26. ixgbe 0000:21:00.0: eth3: DCA registration failed: -1
  27. ixgbe 0000:21:00.0: PCI Express bandwidth of 32GT/s available
  28. ixgbe 0000:21:00.0: (Speed:5.0GT/s, Width: x8, Encoding Loss:20%)
  29. ixgbe 0000:21:00.0: eth3: MAC: 2, PHY: 9, SFP+: 3, PBA No: E68793-006
  30. ixgbe 0000:21:00.0: 90:e2:ba:5b:e9:1c
  31. ixgbe 0000:21:00.0: eth3: Enabled Features: RxQ: 16 TxQ: 16 FdirHash RSC
  32. ixgbe 0000:21:00.0: eth3: Intel(R) 10 Gigabit Network Connection
  33. ixgbe 0000:21:00.1: PCI INT B -> GSI 68 (level, low) -> IRQ 68
  34. ixgbe 0000:21:00.1: setting latency timer to 64
  35. ixgbe: 0000:21:00.1: ixgbe_check_options: FCoE Offload feature enabled
  36. ixgbe 0000:21:00.0: registered PHC device on eth3
  37. ixgbe 0000:21:00.1: irq 104 for MSI/MSI-X
  38. ixgbe 0000:21:00.1: irq 105 for MSI/MSI-X
  39. ixgbe 0000:21:00.1: irq 106 for MSI/MSI-X
  40. ixgbe 0000:21:00.1: irq 107 for MSI/MSI-X
  41. ixgbe 0000:21:00.1: irq 108 for MSI/MSI-X
  42. ixgbe 0000:21:00.1: irq 109 for MSI/MSI-X
  43. ixgbe 0000:21:00.1: irq 110 for MSI/MSI-X
  44. ixgbe 0000:21:00.1: irq 111 for MSI/MSI-X
  45. ixgbe 0000:21:00.1: irq 112 for MSI/MSI-X
  46. ixgbe 0000:21:00.1: irq 113 for MSI/MSI-X
  47. ixgbe 0000:21:00.1: irq 114 for MSI/MSI-X
  48. ixgbe 0000:21:00.1: irq 115 for MSI/MSI-X
  49. ixgbe 0000:21:00.1: irq 116 for MSI/MSI-X
  50. ixgbe 0000:21:00.1: irq 117 for MSI/MSI-X
  51. ixgbe 0000:21:00.1: irq 118 for MSI/MSI-X
  52. ixgbe 0000:21:00.1: irq 119 for MSI/MSI-X
  53. ixgbe 0000:21:00.1: irq 120 for MSI/MSI-X
  54. ixgbe 0000:21:00.1: irq 121 for MSI/MSI-X
  55. ixgbe 0000:21:00.1: irq 122 for MSI/MSI-X
  56. ixgbe 0000:21:00.1: irq 123 for MSI/MSI-X
  57. ixgbe 0000:21:00.1: irq 124 for MSI/MSI-X
  58. ixgbe 0000:21:00.1: irq 125 for MSI/MSI-X
  59. ixgbe 0000:21:00.1: irq 126 for MSI/MSI-X
  60. ixgbe 0000:21:00.1: irq 127 for MSI/MSI-X
  61. ixgbe 0000:21:00.1: irq 128 for MSI/MSI-X
  62. ixgbe 0000:21:00.1: irq 129 for MSI/MSI-X
  63. ixgbe 0000:21:00.1: irq 130 for MSI/MSI-X
  64. ixgbe 0000:21:00.1: irq 131 for MSI/MSI-X
  65. ixgbe 0000:21:00.1: irq 132 for MSI/MSI-X
  66. ixgbe 0000:21:00.1: irq 133 for MSI/MSI-X
  67. ixgbe 0000:21:00.1: irq 134 for MSI/MSI-X
  68. ixgbe 0000:21:00.1: irq 135 for MSI/MSI-X
  69. ixgbe 0000:21:00.1: irq 136 for MSI/MSI-X
  70. ixgbe 0000:21:00.1: irq 137 for MSI/MSI-X
  71. ixgbe 0000:21:00.1: irq 138 for MSI/MSI-X
  72. ixgbe 0000:21:00.1: irq 139 for MSI/MSI-X
  73. ixgbe 0000:21:00.1: irq 140 for MSI/MSI-X
  74. ixgbe 0000:21:00.1: irq 141 for MSI/MSI-X
  75. ixgbe 0000:21:00.1: irq 142 for MSI/MSI-X
  76. ixgbe 0000:21:00.1: irq 143 for MSI/MSI-X
  77. ixgbe 0000:21:00.1: irq 144 for MSI/MSI-X
  78. ixgbe 0000:21:00.1: irq 145 for MSI/MSI-X
  79. ixgbe 0000:21:00.1: irq 146 for MSI/MSI-X
  80. ixgbe 0000:21:00.1: irq 147 for MSI/MSI-X
  81. ixgbe 0000:21:00.1: irq 148 for MSI/MSI-X
  82. ixgbe 0000:21:00.1: irq 149 for MSI/MSI-X
  83. ixgbe 0000:21:00.1: irq 150 for MSI/MSI-X
  84. ixgbe 0000:21:00.1: irq 151 for MSI/MSI-X
  85. ixgbe 0000:21:00.1: irq 152 for MSI/MSI-X
  86. ADDRCONF(NETDEV_UP): eth3: link is not ready
  87. 8021q: adding VLAN 0 to HW filter on device eth3
  88. ixgbe 0000:21:00.1: eth4: DCA registration failed: -1
  89. ixgbe 0000:21:00.1: PCI Express bandwidth of 32GT/s available
  90. ixgbe 0000:21:00.1: (Speed:5.0GT/s, Width: x8, Encoding Loss:20%)
  91. ixgbe 0000:21:00.1: eth4: MAC: 2, PHY: 9, SFP+: 4, PBA No: E68793-006
  92. ixgbe 0000:21:00.1: 90:e2:ba:5b:e9:1e
  93. ixgbe 0000:21:00.1: eth4: Enabled Features: RxQ: 48 TxQ: 48 FdirHash RSC
  94. ixgbe 0000:21:00.1: eth4: Intel(R) 10 Gigabit Network Connection
  95. ixgbe 0000:21:00.0: eth3: detected SFP+: 3
  96. ixgbe 0000:21:00.1: registered PHC device on eth4
  97. ADDRCONF(NETDEV_UP): eth4: link is not ready
  98. 8021q: adding VLAN 0 to HW filter on device eth4
  99. ixgbe 0000:21:00.1: eth4: detected SFP+: 4
  100. ixgbe 0000:21:00.0: eth3: NIC Link is Up 10 Gbps, Flow Control: RX/TX
  101. ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
  102. ixgbe 0000:21:00.1: eth4: NIC Link is Up 10 Gbps, Flow Control: RX/TX
  103. ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
  104. eth3: no IPv6 routers present
  105. eth4: no IPv6 routers present

第四步: 安装Ixgbe驱动

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


 
 
  1. $ sudo make install

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


 
 
  1. /lib/modules/<kernel-version>/kernel/drivers/net/ixgbe

此时,编译好的驱动将在启动时自动加载,也可以通过运行命令加载它:


 
 
  1. $ sudo modprobe ixgbe


原文发布时间为:2015-06-03

本文来自云栖社区合作伙伴“Linux中国”



目录
相关文章
|
7月前
|
安全 Linux 数据安全/隐私保护
Red Hat Enterprise Linux 9.6 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
Red Hat Enterprise Linux 9.6 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
946 36
Red Hat Enterprise Linux 9.6 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
|
5月前
|
监控 Linux 开发者
理解Linux操作系统内核中物理设备驱动(phy driver)的功能。
综合来看,物理设备驱动在Linux系统中的作用是至关重要的,它通过与硬件设备的紧密配合,为上层应用提供稳定可靠的通信基础设施。开发一款优秀的物理设备驱动需要开发者具备深厚的硬件知识、熟练的编程技能以及对Linux内核架构的深入理解,以确保驱动程序能在不同的硬件平台和网络条件下都能提供最优的性能。
301 0
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
683 2
|
7月前
|
人工智能 安全 Linux
Red Hat Enterprise Linux 10 正式版发布 - 红帽企业 Linux (RHEL)
Red Hat Enterprise Linux 10 正式版发布 - 红帽企业 Linux (RHEL)
866 0
Red Hat Enterprise Linux 10 正式版发布 - 红帽企业 Linux (RHEL)
|
12月前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
1968 14
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
489 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
292 2
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
181 0
Linux c/c++之多文档编译
|
Linux
Linux - 如何编译源码安装软件
源码编译安装通常包括三个步骤:1) `./configure` 检测平台特征和依赖项,生成 Makefile;2) `make` 编译源码,生成可执行文件;3) `make install` 将可执行文件安装到指定目录并配置环境变量。
396 0
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
249 6