当前位置: 首页 > news >正文

基于 openEuler 22.03 LTS SP1 构建 DPDK 22.11.8 开发环境指南

基于 openEuler 22.03 LTS SP1 构建 DPDK 22.11.8 开发环境指南

本文详细介绍了在 openEuler 22.03 LTS SP1 操作系统上构建 DPDK 22.11.8 开发环境的完整流程。DPDK 20 版本之后采用 meson+ninja 的编译方式,与早期版本有所不同。本文内容也可作为其他 Linux 发行版构建 DPDK 环境的参考。

环境准备

安装编译依赖包

VERSION=$(uname -r)
sudo yum install -y gcc gcc-c++ make numactl-devel git tar kernel-devel-$VERSION

安装 Meson 构建工具

sudo pip3 install meson

安装 Pyelftools

sudo pip3 install pyelftools

安装 re2c

wget https://github.com/skvadrik/re2c/releases/download/1.0.3/re2c-1.0.3.tar.gz
tar -zxvf re2c-1.0.3.tar.gz
cd re2c-1.0.3/
./configure
make && sudo make install
cd ..

安装 Ninja 构建系统

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.0.tar.gz
tar -zxvf ninja-1.11.0.tar.gz
cd ninja-1.11.0/
python3 configure.py --bootstrap
sudo cp ninja /usr/bin/
cd ..

注意:如果系统没有 python 命令,只有 python3,请使用 python3 configure.py --bootstrap

在这里插入图片描述

DPDK 安装与配置

下载并解压 DPDK

wget http://fast.dpdk.org/rel/dpdk-22.11.8.tar.xz
tar -xvf dpdk-22.11.8.tar.xz
cd dpdk-stable-22.11.8

编译安装 DPDK

meson setup build
cd build
ninja
sudo ninja install  # 默认安装到 /usr/local/lib64
sudo ldconfig

可选:如需指定安装目录,可在 meson 步骤中添加 --prefix=/your/custom/path 参数。

环境变量配置

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

建议:将上述环境变量添加到 /etc/profile 文件中以实现永久生效。

驱动配置

加载vfio驱动

modprobe vfio enable_unsafe_noiommu_mode=1 # 在iommu不可用时,以非安全模式加载vfio
modprobe vfio-pci 
lsmod|grep vfio  # 检查是否成功

有关非安全模式加载vfio,也通过如下的方式修改:

echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode

关于vfio模块的加载,可以设置为开机自动加载,这样就不用每次手动加载了,具体方式如下:

# 配置 VFIO 内核模块的加载参数
sudo tee /etc/modprobe.d/vfio.conf <<EOF 
options vfio enable_unsafe_noiommu_mode=1
options vfio-pci disable_vga=1
EOF#系统启动时自动加载 vfio 内核模块。
echo "vfio" | sudo tee /etc/modules-load.d/vfio.conf
echo "vfio-pci" | sudo tee -a /etc/modules-load.d/vfio.conf

编译并加载igb_uio驱动

在dpdk22版本中,igb_uio不再被包含在dpdk源代码包中,如果需要则要额外编译安装。具体如下:

#下载
git clone http://dpdk.org/git/dpdk-kmods#编译
cd dpdk-kmods/linux/igb_uio
make#加载
modprobe uio
insmod igb_uio.ko intr_mode=legacy
depmod -a

同样的,igb_uio 也可以实现开机加载:

# 需要将编译出.ko 文件拷贝至如下的目录
cp dpdk-kmods/linux/igb_uioigb_uio.ko /lib/modules/$(uname -r)/kernel/drivers/uio/echo "options igb_uio intr_mode=legacy" | sudo tee /etc/modprobe.d/igb_uio.conf
echo "igb_uio" | sudo tee /etc/modules-load.d/igb_uio.conf

系统配置

配置大页

cd dpdk-stable-22.11.8
python3  ./usertools/dpdk-hugepages.py  -p 2M --setup 1G

绑定网卡到 VFIO 驱动

python3 ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:02:01.0

测试验证

编译并运行 helloworld 示例

有两种编译方式,默认是共享库版本,还有一种静态库版本。

共享库:

cd helloworld
make
./build/helloworld

静态库版本

cd helloworld
make static
./build/helloworld

运行结果:

在这里插入图片描述

出现上述的结果,说明成功了。

总结

本文提供了在 openEuler 22.03 LTS SP1 上构建 DPDK 22.11.8 开发环境的完整指南,包括依赖安装、DPDK 编译、驱动配置和测试验证等步骤。按照本指南操作后,您将获得一个完整的 DPDK 开发环境,可用于后续的 DPDK 应用开发。
如果您咋配置过程中遇到了问题,欢迎评论区交流。谢谢!

相关文章:

  • 一些免费的大A数据接口库
  • 华为防火墙IPSec VPN全解析:配置实战与原理详解
  • LeetCode 热题 100 74. 搜索二维矩阵
  • 惠普HP Deskjet 9600 打印机信息
  • 网页端 js 读取发票里的二维码信息(图片和PDF格式)
  • 【Veristand】Veristand环境安装教程-Linux RT / Windows
  • Flink checkpoint
  • 港股TRS交易系统开发:跨境资本的精密调度引擎
  • 海康工业相机文档大小写错误
  • 独家首发!低照度环境下YOLOv8的增强方案——从理论到TensorRT部署
  • 中科院提出多方协作注意力控制方法MCA-Ctrl,无需调优的即可使用文本和复杂的视觉条件实现高质量的图像定制。
  • Java开发过程中,trycatch异常处理的避坑梳理
  • 巧克力---贪心+堆模拟/优先队列
  • 图像识别预处理(配合pytesseract使用)
  • 一个典型的Qt界面拆分(解耦)方案
  • figma MCP + cursor如何将设计稿生成前端页面
  • 链游技术破壁:NFT资产确权与Play-to-Earn经济模型实战
  • 【数据结构】B树
  • TP6 实现一个字段对数组中的多个值进行LIKE模糊查询(OR逻辑)
  • 【nano与Vim】常用命令
  • dw做网站一般需要多大尺寸/巨量关键词搜索查询
  • 卡盟做网站/长春百度快速优化
  • 网站做的自适应体验差/品牌策划是做什么的
  • 广州开发网站建设/营销推广网站推广方案
  • 传奇私服网站搭建教程/百度收录入口提交查询
  • 中山建设网站公司/长春seo技术