文章目录
- 前言
 - 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模块下载链接地址
 
编译
下载完链接里的igb_uio模块后,将压缩包拷贝到Ubuntu系统中
编译方式有两种
- 在外部直接使用make编译
 - 将igb_uio模块重新加入到dpdk-21.11源码目录中,使用meson+ninja编译
 
编译方式1:make
解压完成后进入源码目录
直接执行make
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
 




















