dpdk21.11 添加igb_uio模块

文章目录

  • 前言
  • igb_uio模块下载链接
  • 编译
    • 编译方式1:make
    • 编译方式2:meson+ninja
      • 1. 解压,复制 dpdk-kmods/linux/igb_uio/ 到 dpdk-stable-21.11.4/kernel/linux/ 目录下
      • 2. vi dpdk-stable-21.11.4/kernel/linux/meson.build +4
      • 创建文件 meson.build 在 dpdk-stable-21.11.4/kernel/linux/igb_uio/ 目录下
        • --- 输入如下内容 --
        • --- 内容结束 ---
      • 修改主目录(dpdk-stable-21.11.4)下的 meson_options.txt 文件
      • 修改主目录(dpdk-stable-21.11.4)下 meson.build +15 添加 kernel_dir 的定义
      • 执行编译
  • 挂载
  • -- end --

前言

官网说 基于安全性考虑,然后igb_uio 模块就从 dpdk20.11版本开始 就都去除了,也删除了 dpdk_setup.sh 的脚本
相比于 vfio模块,igb_uio模块的安全性更低
官网中也给出了编译igb_uio模块的方式

igb_uio模块下载链接

官网给出的igb_uio模块下载链接地址
dpdk21.11 添加igb_uio模块_第1张图片

编译

下载完链接里的igb_uio模块后,将压缩包拷贝到Ubuntu系统中
编译方式有两种

  1. 在外部直接使用make编译
  2. 将igb_uio模块重新加入到dpdk-21.11源码目录中,使用meson+ninja编译

编译方式1:make

解压完成后进入源码目录
dpdk21.11 添加igb_uio模块_第2张图片

直接执行make
dpdk21.11 添加igb_uio模块_第3张图片

make执行完之后,目录中出现 igb_uio.ko 模块
可以直接通过insmod ./igb_uio.ko 挂载
!! 挂载之前需要提前挂载 uio 模块 ‘modprobe uio’

编译方式2:meson+ninja

1. 解压,复制 dpdk-kmods/linux/igb_uio/ 到 dpdk-stable-21.11.4/kernel/linux/ 目录下

qxy@qz652219228:~/dpdk$ cp ./dpdk-kmods-main/linux/igb_uio ./dpdk-stable-21.11.4/kernel/linux/ -r
qxy@qz652219228:~/dpdk$ ls ./dpdk-stable-21.11.4/kernel/linux/
igb_uio  kni  meson.build

2. vi dpdk-stable-21.11.4/kernel/linux/meson.build +4

	subdirs = ['kni', 'igb_uio']		#修改: 添加 igb_uio

创建文件 meson.build 在 dpdk-stable-21.11.4/kernel/linux/igb_uio/ 目录下

— 输入如下内容 –

# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017 Intel Corporation

mkfile = custom_target('igb_uio_makefile',
        output: 'Makefile',
        command: ['touch', '@OUTPUT@'])

custom_target('igb_uio',
        input: ['igb_uio.c', 'Kbuild'],
        output: 'igb_uio.ko',
        command: ['make', '-C', kernel_dir + '/build',
                'M=' + meson.current_build_dir(),
                'src=' + meson.current_source_dir(),
                'EXTRA_CFLAGS=-I' + meson.current_source_dir() +
                        '/../../../lib/librte_eal/include',
                'modules'],
        depends: mkfile,
        install: true,
        install_dir: kernel_dir + '/extra/dpdk',		
        build_by_default: get_option('enable_kmods'))

— 内容结束 —

修改主目录(dpdk-stable-21.11.4)下的 meson_options.txt 文件

	21行 enable_kmods 	# value值 变成 true 

修改主目录(dpdk-stable-21.11.4)下 meson.build +15 添加 kernel_dir 的定义

kernel_version = run_command('uname', '-r').stdout().strip()
kernel_dir = '/lib/modules/' + kernel_version                                                                                                    
# 主要作用是 在下面的 使用的 kernel_dir  添加个定义

执行编译

dpdk-21.11 meson+ninja 编译

挂载

qxy@qz652219228:~/dpdk$ sudo modprobe uio
qxy@qz652219228:~/dpdk$ sudo insmod ./dpdk-kmods-main/linux/igb_uio/igb_uio.ko
#       or
qxy@qz652219228:~/dpdk$ sudo insmod ./dpdk-stable-21.11.4/build/kernel/linux/igb_uio/igb_uio.ko

– end –

你可能感兴趣的:(linux,ubuntu,dpdk)