Ethernet Connection X722 can't up on CentOS7.2

問題發生在安裝完CentOS7.2後,網路並沒有啟動。起初爬文認為是NetworkManager的問題(參考link),後來手動啟動網卡卻出現如下圖,Device or resource busy的錯誤:

由於同事說CentOS7.3是正常的,因而才想確認這是不是kernel module的問題。

我系統網卡所使用的driver module是i40e。追蹤問題期間也嘗試找過i40e是否在CentOS7上有issue,但沒有什麼結果。最後是再次重新檢視dmesg,發現以下內容:

這是由於kernel module與網卡FW不匹配導致的,以我這案例是網卡FW過新,因此更新kernel module就能夠解決了。

如果你是新的系統,請記得先執行以下指令安裝build driver所需要套件:

yum install kernel-devel kernel-headers gcc
假如沒網路怎麼安裝這些套件? 可以參考此篇文章,將iso設為repository。我下載了2.0.19版本驅動,並解壓縮到src資料夾下make就可以build出ko:


接著就是測試ko是否可用。執行以下指令移除當前載入的i40e模組,並載入新build出來的ko檔:
rmmod i40e
insmod i40e.ko
最後就是確認dmesg與網路狀態了:

要更新至系統模組要記得執行以下指令,否則重開機會載入舊的:
make install
PS. 執行modinfo i40e可以確認版本。