提問:我想要安裝最新版的ixgbe 10g網卡驅動。在centos, fedora 或 rhel中,我應該如何編譯ixgbe驅動?
想要在linux使用intel的pci express 10g網卡(例如,82598,82599,x540),需要安裝ixgbe驅動。如今的linux發行版都會預安裝ixgbe的可加載子產品,但是預安裝的ixgbe驅動不是完整功能版。如果想要開啟和定制所有10g網卡的功能(如,rss、多隊列、虛拟化功能、硬體 offload 等),需要從源碼編譯安裝。

<a target="_blank"></a>
首先,安裝必要的開發環境和安裝比對的核心頭檔案
<code>$ sudo yum install gcc make</code>
<code>$ sudo yum install kernel-devel</code>
<code>$ wget http://downloads.sourceforge.net/project/e1000/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz</code>
請檢查支援的核心版本。例如,ixgbe3.23.2版本支援linux核心版本2.6.18到3.18.1。
提取壓縮包并編譯:
<code>$ tar -xvf ixgbe-3.23.2.tar.gz</code>
<code>$ cd ixgbe-3.23.2/src</code>
<code>$ make</code>
如果成功,可以在目前目錄找到編譯完成的驅動(ixgbe.ko)。
可以運作這個指令來檢視編譯資訊:
<code>$ modinfo ./ixgbe.ko</code>
将會輸出一個ixgbe驅動的可用參數清單
這步準備加載已經編譯好的驅動。
如果系統已經加載了ixgbe驅動,首先需要解除安裝掉老版本。否則,新版本不能加載。
<code>$ sudo rmmod ixgbe.ko</code>
然後插入編譯完成的驅動到核心中:
<code>$ sudo insmod ./ixgbe.ko</code>
同時,你可以設定啟動參數
<code>$ sudo insmod ./ixgbe.ko fdirpballoc=3 rss=16</code>
驗證驅動是否加載成功,使用dmesg指令,檢視其輸出
<code>$ dmesg</code>
<code>intel(r) 10 gigabit pci express network driver - version 3.23.2</code>
<code>copyright (c) 1999-2014 intel corporation.</code>
<code>ixgbe 0000:21:00.0: pci int a -> gsi 64 (level, low) -> irq 64</code>
<code>ixgbe 0000:21:00.0: setting latency timer to 64</code>
<code>ixgbe: receive-side scaling (rss) set to 16</code>
<code>ixgbe: flow director packet buffer allocation set to 3</code>
<code>ixgbe: 0000:21:00.0: ixgbe_check_options: flow director will be allocated 256kb of packet buffer</code>
<code>ixgbe: 0000:21:00.0: ixgbe_check_options: fcoe offload feature enabled</code>
<code>ixgbe 0000:21:00.0: irq 87 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 88 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 89 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 90 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 91 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 92 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 93 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 94 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 95 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 96 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 97 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 98 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 99 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 100 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 101 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 102 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: irq 103 for msi/msi-x</code>
<code>ixgbe 0000:21:00.0: eth3: dca registration failed: -1</code>
<code>ixgbe 0000:21:00.0: pci express bandwidth of 32gt/s available</code>
<code>ixgbe 0000:21:00.0: (speed:5.0gt/s, width: x8, encoding loss:20%)</code>
<code>ixgbe 0000:21:00.0: eth3: mac: 2, phy: 9, sfp+: 3, pba no: e68793-006</code>
<code>ixgbe 0000:21:00.0: 90:e2:ba:5b:e9:1c</code>
<code>ixgbe 0000:21:00.0: eth3: enabled features: rxq: 16 txq: 16 fdirhash rsc</code>
<code>ixgbe 0000:21:00.0: eth3: intel(r) 10 gigabit network connection</code>
<code>ixgbe 0000:21:00.1: pci int b -> gsi 68 (level, low) -> irq 68</code>
<code>ixgbe 0000:21:00.1: setting latency timer to 64</code>
<code>ixgbe: 0000:21:00.1: ixgbe_check_options: fcoe offload feature enabled</code>
<code>ixgbe 0000:21:00.0: registered phc device on eth3</code>
<code>ixgbe 0000:21:00.1: irq 104 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 105 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 106 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 107 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 108 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 109 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 110 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 111 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 112 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 113 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 114 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 115 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 116 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 117 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 118 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 119 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 120 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 121 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 122 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 123 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 124 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 125 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 126 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 127 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 128 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 129 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 130 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 131 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 132 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 133 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 134 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 135 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 136 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 137 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 138 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 139 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 140 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 141 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 142 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 143 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 144 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 145 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 146 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 147 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 148 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 149 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 150 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 151 for msi/msi-x</code>
<code>ixgbe 0000:21:00.1: irq 152 for msi/msi-x</code>
<code>addrconf(netdev_up): eth3: link is not ready</code>
<code>8021q: adding vlan 0 to hw filter on device eth3</code>
<code>ixgbe 0000:21:00.1: eth4: dca registration failed: -1</code>
<code>ixgbe 0000:21:00.1: pci express bandwidth of 32gt/s available</code>
<code>ixgbe 0000:21:00.1: (speed:5.0gt/s, width: x8, encoding loss:20%)</code>
<code>ixgbe 0000:21:00.1: eth4: mac: 2, phy: 9, sfp+: 4, pba no: e68793-006</code>
<code>ixgbe 0000:21:00.1: 90:e2:ba:5b:e9:1e</code>
<code>ixgbe 0000:21:00.1: eth4: enabled features: rxq: 48 txq: 48 fdirhash rsc</code>
<code>ixgbe 0000:21:00.1: eth4: intel(r) 10 gigabit network connection</code>
<code>ixgbe 0000:21:00.0: eth3: detected sfp+: 3</code>
<code>ixgbe 0000:21:00.1: registered phc device on eth4</code>
<code>addrconf(netdev_up): eth4: link is not ready</code>
<code>8021q: adding vlan 0 to hw filter on device eth4</code>
<code>ixgbe 0000:21:00.1: eth4: detected sfp+: 4</code>
<code>ixgbe 0000:21:00.0: eth3: nic link is up 10 gbps, flow control: rx/tx</code>
<code>addrconf(netdev_change): eth3: link becomes ready</code>
<code>ixgbe 0000:21:00.1: eth4: nic link is up 10 gbps, flow control: rx/tx</code>
<code>addrconf(netdev_change): eth4: link becomes ready</code>
<code>eth3: no ipv6 routers present</code>
<code>eth4: no ipv6 routers present</code>
當确認驅動已經加載後,就可以安裝驅動到系統中了
<code>$ sudo make install</code>
ixgbe.ko将會安裝在下列目錄
<code>/lib/modules/<kernel-version>/kernel/drivers/net/ixgbe</code>
此時,編譯好的驅動将在啟動時自動加載,也可以通過運作指令加載它:
<code>$ sudo modprobe ixgbe</code>
<b>原文釋出時間為:2015-06-03</b>
<b>本文來自雲栖社群合作夥伴“linux中國”</b>