一、编译kni
修改 项目根目录下 meson_options.txt, 删除value中的kni 后进行编译
option('disable_libs', type: 'string', value: 'flow_classify,kni', description:
'Comma-separated list of libraries to explicitly disable. [NOTE: not all libs can be disabled]')
二、编译rte_kni.ko
修改 项目根目录下 meson_options.txt enable_kmods中 value 为 true 后进行编译
option('enable_kmods', type: 'boolean', value: false, description:
'build kernel modules')
问题:
Skipping BTF generation [my module name] due to unavailabilty of vmlinux
解决:
确保 /sys/kernel/btf 下面有 vmlinux
apt install dwarves
cp /sys/kernel/btf/vmlinux /usr/lib/modules/`uname -r`/build/
结果:
# ninja
[3273/3276] Generating kernel/linux/kni/rte_kni with a custom command
make: Entering directory '/usr/src/linux-headers-5.15.0-125-generic'
CC [M] /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/kni_misc.o
CC [M] /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/kni_net.o
LD [M] /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/rte_kni.o
MODPOST /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/Module.symvers
CC [M] /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/rte_kni.mod.o
LD [M] /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/rte_kni.ko
BTF [M] /home/../dpdk-stable-22.11.2/build/kernel/linux/kni/rte_kni.ko
make: Leaving directory '/usr/src/linux-headers-5.15.0-125-generic'
[3276/3276] Linking target app/test/dpdk-test
安装 rte_kni.ko
# insmod rte_kni.ko kthread_mode=multiple
到这里问题就能解决了
参考:https://askubuntu.com/questions/1348250/skipping-btf-generation-xxx-due-to-unavailability-of-vmlinux-on-ubuntu-21-04