虛擬機上centos7下安裝DPDK(通過dpdk-setup.sh安裝)

安裝dpdk有兩種方式:第一種命令;第二種使用dpdk-setup.sh。本文講解通過dpdk-setup.sh來安裝。

1.下載dpdk

 進入dpdk官網,下載想要的版本:http://core.dpdk.org/download/

2.安裝依賴的庫

yum install -y kernel-devel kernel-headers

yum install kernel.x86_64 -y 

根據編譯安裝dpdk時候的提示是否還有其他需要安裝的依賴庫,在此就不一一列舉了。

3.環境配置

1. export RTE_SDK='pwd'  (pwd爲你dkdk的解壓目錄,比如/home/dpdk-19.08)

2. export RTE_TARGET=x86_64-native-linuxapp-gcc  

4.開始安裝

cd /home/dpdk-19.08/usertools

./dpdk-setup.sh

第一步選擇: 36,配置編譯的環境。

 第二步選擇 43,選擇硬件支持的模式

 在選擇43的時候出現如下錯誤

經過查詢,是內核版本和dpdk的模塊版本不一致導致的問題。

查看ls /usr/src/kernels/發現只有 3.10.0-957.27.2.el7.x86_64;而我通過uname -r查看我的版本卻是:3.10.0-123.el7.x86_64。

通過rpm命令查看我所安裝的內核版本:

  

 通過rpm -e kernel-3.10.0-123.el7.x86_64 卸載掉第二個kernel,然後重啓系統再用uname -r查看內核版本就變成了kernel-3.10.0-957.27.2.el7.x86_64。

再從頭開始執行安裝步驟。

     1.export RTE_SDK='/home/dpdk-19.08'

     2.export RTE_TARGET=x86_64-native-linuxapp-gcc

     3../dpdk-setup.sh

      第三步選擇 47,設置大頁內存,然後提示輸入1024

     設置大頁內存太小會導致運行helloworld這個例子報錯,所以先設置1024。

      第四部選擇49,綁定網卡

選擇49的時候綁定網卡,需要先停掉需要綁定的網卡  。

我在虛擬機上開了四個網卡,打算停掉後面的ens38和ens39,執行如下命令:

ifconfig ens38 down

ifconfig ens39 down

然後在運行腳本來選擇49:

我機器如圖顯示 ,直接輸入02:06.0和02:07.0對應的就是ens38和ens39的網卡(前面4個0不需要輸入)。

到此,環境已經搭建好了。

5測試dpdk

  • 1.配置環境,如果上面搭建的時候配置了,就不需要再配置了:

export RTE_SDK='/home/dpdk-19.08/'

export RTE_TARGET=x86_64-native-linuxapp-gcc

  • 2.編譯代碼

cd /home/dpdk-19.08/examples/helloworld

make

  • 3.運行可執行文件

./build/helloworld

 我的機器輸出如上,雖然正確輸出了hello from core# 但是上一句提示了錯誤:

EAL: Error reading from file descriptor 27: Input/output error

經瞭解是在虛擬機添加的網卡,dpdk不支持導致的。需要修改一行代碼,跳過dpdk pci 檢查:

找到

pci_intx_mask_supported(dev)

這行代碼,然後修改爲

pci_intx_mask_supported(dev)||true

再重新執行./dpdk-setup.sh重新編譯。

再來運行./build/helloworld

這次就不會有報錯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章