当前位置: 首页 > 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 应用开发。
如果您咋配置过程中遇到了问题,欢迎评论区交流。谢谢!

http://www.xdnf.cn/news/908137.html

相关文章:

  • Xshell 详细安装与配置教程:从下载到高效使用
  • error: subprocess-exited-with-error【已解决】
  • docker 部署redis集群 配置
  • 【学习笔记】单例类模板
  • 深入理解二叉搜索树:原理到实践
  • libGL error
  • IDEA安装迁移IDEA配置数据位置
  • SQL进阶之旅 Day 19:统计信息与优化器提示
  • 10个成功案例剖析|融质AI创新实践
  • 【多线程初阶】阻塞队列 生产者消费者模型
  • Python备忘
  • CST人工电源网络阻抗计量校准
  • Python打卡训练营学习记录Day46
  • Arch-hyprland常用配置
  • 【Algo】常见组合类数列
  • 在centos7.9重置qcow2 root密码-qcow2忘记密码
  • 《0/1背包》题集
  • 【大厂机试题解法笔记】最差产品奖
  • 大模型编程助手-windsurf
  • 云服务器厂商机房是什么
  • CMOS图像传感器系列--(二)HDR之DAG技术
  • 跟我学c++中级篇——理解类型推导和C++不同版本的支持
  • 旅行商问题(TSP)的 C++ 动态规划解法教学攻略
  • python --导出数据库表结构(pymysql)
  • React从基础入门到高级实战:React 实战项目 - 项目四:企业级仪表盘
  • Profinet 协议 IO-Link 主站网关(三格电子)
  • DDD架构实战 领域层 事件驱动
  • Hive窗口函数RANGE BETWEEN详解:用法、场景与案例(附真实业务案例)
  • spring重试机制
  • 三菱PLC与西门子PLC如何实现485通讯?