小白式DPDK搭建方法(附相关错误得处理方法)
搭建环境:VM
VM搭建参考其他博客
步骤一 点击虚拟机设置,添加两个网卡(我这里都是使用的都是桥接模式)
步骤二、从网上下载dpdk的压缩包:
命令:wget http://fast.dpdk.org/rel/dpdk-18.05.1.tar.gz
解压安装:tar -zxvf dpdk-18.05.1.tar.gz
步骤三 安装相关依赖:
yum install numactl
yum install numactl-devel
yum install gcc
yum install gcc kernel-devel-$(uname -r)或者直接yum install gcc kernel-devel时候+tab键补全
步骤四、进入 /usr/src/kernels查看内核
步骤五、进入 /lib/modules/3.10.0-957.el7.x86_64 目录查看软链接 build是否正确
不正确会红光闪烁,原因是gcc版本和内核版本不一致,在后续安装中,会造成make: *** /lib/modules/5.2.4-1.el7.elrepo.x86_64/build: No such file or directory. Stop. 错误,
解决办法:删除原有的build文件,重新链接上,代码如下:
rm -rf build
ln -s /usr/src/kernels/3.10.0-1127.18.2.el7.x86_64 /lib/modules/3.10.0-957.el7.x86_64/build
内核按具体情况填写
下面这个是正确的:
步骤六、安装DPDK
cd /root/dpdk-stable-18.05.1/
cd usertools/ (有些dpdk的版本目录是tools)
./dpdk-setup.sh (执行安装)
步骤七、选择gcc进行安装
我这里是15(每个版本的DPDK都不一样,选择x86_64位的gcc安装就行)
gcc编译成功:
步骤八、插入IGB UIO
这里是18,因此选择18
如果是第二次运行,Loading uio module可能不存在,不影响后续
步骤九、设置大页内存
选择22 Setup hugepage mappings for NUMA systems
输入:1024
成功:
步骤十、绑定网卡
选择23 查看当前可用网卡:
这是虚拟机中空闲的2个网卡(前面添加的)
如果网卡出现Active的情况,将两张网卡down掉
代码如下
ifconfig ens37 down
ifconfig ens38 down
注意if后的ens37和ens38
选择24 绑定网卡
输入:ens37 ens38 (或者 02:05.0 02:06.0)
绑定网卡成功:
步骤十一、退出安装+配置环境变量
ctrl+c或者选择35退出安装,配置环境变量
vim ~/.bash_profile
export RTE_SDK=/root/dpdk-stable-18.05.1 (这个是安装的dpdk的绝对路径)
export TE_TARGET=x86_64-native-linuxapp-gcc (选择gcc编译)
然后刷新环境变量
source ~/.bash_profile
步骤十二、测试
测试安装是否成功
cd /root/dpdk-stable-18.05.1/examples/helloworld
make
cd build
./helloworld
此时会出现 这个错误:
解决办法:
cd /root/dpdk-stable-18.05.1/kernel/linux/igb_uio (每个版本的igb_uio存放的位置不一样,在dpdk的目录里找到它)
vim igb_uio.c
:set number (让vim显示行号)
:/pci_intx_mask_supported
将这语句pci_intx_mask_supported(udev->pdev) 修改为 pci_intx_mask_supported(udev->pdev)||true
再进入 ./dpdk-setup.sh 重新安装一次(跟上述步骤一样,唯一不一样的是选择 24绑定网卡的时候不能输入 ens37 ens38 输入 02:05.0 02:06.0 具体用23查看网卡属性)
再次测试:
cd /root/dpdk-stable-18.05.1/examples/helloworld
make
cd build
./helloworld
显示下图则表示成功: