Linux如何編譯并安裝ixgbe驅(qū)動(dòng)

第一步: 安裝前提

安裝之前,需要安裝匹配的內(nèi)核頭文件和開發(fā)工具包。

??$?sudo?apt-get?install?linux-headers-$(uname?-r) ??$?sudo?apt-get?install?gcc?make

第二步: 編譯ixgbe驅(qū)動(dòng)

從最新的ixgbe驅(qū)動(dòng)中下載源碼。

??$?wget?http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz

如下編譯ixgbe驅(qū)動(dòng)。

??$?tar?xvfvz?ixgbe-3.23.2.tar.gz ??$?cd?ixgbe-3.23.2/src ??$?make

第三步: 檢查ixgbe驅(qū)動(dòng)

編譯之后,你會(huì)看到在ixgbe-3.23.2/src目錄下創(chuàng)建了ixgbe.ko。這就是會(huì)加載到內(nèi)核之中的ixgbe驅(qū)動(dòng)。

用modinfo命令檢查內(nèi)核模塊的信息。注意你需要指定模塊文件的絕對(duì)路徑(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。輸出中會(huì)顯示ixgbe內(nèi)核的版本。

??$?modinfo?./ixgbe.ko
filename:?/home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko ??version:?3.23.2 ??license:?gpl ??description:?intel(r)?10?gigabit?pci?express?network?driver ??author:?intel?corporation, ??srcversion:?2ada5e537923e983fa9dae2 ??alias:?pci:v00008086d00001560sv*sd*bc*sc*i* ??alias:?pci:v00008086d00001558sv*sd*bc*sc*i* ??alias:?pci:v00008086d0000154asv*sd*bc*sc*i* ??alias:?pci:v00008086d00001557sv*sd*bc*sc*i* ??alias:?pci:v00008086d0000154fsv*sd*bc*sc*i* ??alias:?pci:v00008086d0000154dsv*sd*bc*sc*i* ??alias:?pci:v00008086d00001528sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010f8sv*sd*bc*sc*i* ??alias:?pci:v00008086d0000151csv*sd*bc*sc*i* ??alias:?pci:v00008086d00001529sv*sd*bc*sc*i* ??alias:?pci:v00008086d0000152asv*sd*bc*sc*i* ??alias:?pci:v00008086d000010f9sv*sd*bc*sc*i* ??alias:?pci:v00008086d00001514sv*sd*bc*sc*i* ??alias:?pci:v00008086d00001507sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010fbsv*sd*bc*sc*i* ??alias:?pci:v00008086d00001517sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010fcsv*sd*bc*sc*i* ??alias:?pci:v00008086d000010f7sv*sd*bc*sc*i* ??alias:?pci:v00008086d00001508sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010dbsv*sd*bc*sc*i* ??alias:?pci:v00008086d000010f4sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010e1sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010f1sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010ecsv*sd*bc*sc*i* ??alias:?pci:v00008086d000010ddsv*sd*bc*sc*i* ??alias:?pci:v00008086d0000150bsv*sd*bc*sc*i* ??alias:?pci:v00008086d000010c8sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010c7sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010c6sv*sd*bc*sc*i* ??alias:?pci:v00008086d000010b6sv*sd*bc*sc*i* ??depends:?ptp,dca ??vermagic:?3.11.0-19-generic?smp?mod_unload?modversions ??parm:?interrupttype:change?interrupt?mode?(0=legacy,?1=msi,?2=msi-x),?default?intmode?(deprecated)?(array?of?int) ??parm:?intmode:change?interrupt?mode?(0=legacy,?1=msi,?2=msi-x),?default?2?(array?of?int) ??parm:?mq:disable?or?enable?multiple?queues,?default?1?(array?of?int) ??parm:?dca:disable?or?enable?direct?cache?access,?0=disabled,?1=descriptor?only,?2=descriptor?and?data?(array?of?int) ??parm:?rss:number?of?receive-side?scaling?descriptor?queues,?default?0=number?of?cpus?(array?of?int) ??parm:?vmdq:number?of?virtual?machine?device?queues:?0/1?=?disable,?2-16?enable?(default=8)?(array?of?int) ??parm:?max_vfs:number?of?virtual?functions:?0?=?disable?(default),?1-63?=?enable?this?many?vfs?(array?of?int) ??parm:?vepa:vepa?bridge?mode:?0?=?veb?(default),?1?=?vepa?(array?of?int) ??parm:?interruptthrottlerate:maximum?interrupts?per?second,?per?vector,?(0,1,956-488281),?default?1?(array?of?int) ??parm:?lliport:low?latency?interrupt?tcp?port?(0-65535)?(array?of?int) ??parm:?llipush:low?latency?interrupt?on?tcp?push?flag?(0,1)?(array?of?int) ??parm:?llisize:low?latency?interrupt?on?packet?size?(0-1500)?(array?of?int) ??parm:?llietype:low?latency?interrupt?ethernet?protocol?type?(array?of?int) ??parm:?llivlanp:low?latency?interrupt?on?vlan?priority?threshold?(array?of?int) ??parm:?fdirpballoc:flow?director?packet?buffer?allocation?level: ??1?=?8k?hash?filters?or?2k?perfect?filters ??2?=?16k?hash?filters?or?4k?perfect?filters ??3?=?32k?hash?filters?or?8k?perfect?filters?(array?of?int) ??parm:?atrsamplerate:software?atr?tx?packet?sample?rate?(array?of?int) ??parm:?fcoe:disable?or?enable?fcoe?offload,?default?1?(array?of?int) ??parm:?lro:large?receive?offload?(0,1),?default?1?=?on?(array?of?int) ??parm:?allow_unsupported_sfp:allow?unsupported?and?untested?sfp+?modules?on?82599?based?adapters,?default?0?=?disable?(array?of?int)

第四步: 測試ixgbe驅(qū)動(dòng)

在測試新的模塊之前,如果你內(nèi)核中已存在舊版本ixgbe模塊的話你需要先移除它。

??$?sudo?rmmod?ixgbe

接著使用insmod命令插入新編譯的ixgbe模塊。確保指定一個(gè)模塊的絕對(duì)路徑。

??$?sudo?insmod?./ixgbe.ko

如果上面的命令成功運(yùn)行,就不會(huì)顯示任何的信息。

如果你需要,你可以嘗試加入額外的參數(shù)。比如,設(shè)置rss的隊(duì)列數(shù)量為16:

??$?sudo?insmod?./ixgbe.ko?rss=16

檢查/var/log/kern.log來查看ixgbe驅(qū)動(dòng)是否成功激活。查看日志中的“intel(r) 10 gigabit pci express network driver”。ixgbe的版本信息應(yīng)該和之前的modinfo的顯示應(yīng)該相同。

??? sep 18 14:48:52 spongebob kernel: [684717.906254] intel(r) 10 gigabit pci express network driver – version 3.22.3

第五步: 安裝ixgbe驅(qū)動(dòng)

一旦你驗(yàn)證新的ixgbe驅(qū)動(dòng)可以成功加載,最后一步是在你的系統(tǒng)中安裝驅(qū)動(dòng)。

??$?sudo?make?install

ixgbe.ko 會(huì)安裝在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。

從這一步起,你可以用下面的modprobe命令加載ixgbe驅(qū)動(dòng)了。注意你不必再指定絕對(duì)路徑。

??$?sudo?modprobe?ixgbe

如果你希望在啟動(dòng)時(shí)加載ixgbe驅(qū)動(dòng),你可以在/etc/modules的最后加入“ixgbe”。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享