在Ubuntu 24.04上搭建eBPF/XDP开发环境
1. 系统要求
- Ubuntu 24.04 LTS (Noble Numbat)
- 内核版本建议5.15或更高(Ubuntu 24.04默认内核通常满足要求)
2. 安装必要工具和依赖
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础开发工具
sudo apt install -y build-essential git make cmake llvm clang libelf-dev libbpf-dev bpfcc-tools \
libcap-dev binutils-dev pkg-config libmnl-dev libnl-3-dev libnl-route-3-dev
# 安装BPF工具链
sudo apt install -y bpftool linux-tools-common linux-tools-generic
3. 验证内核配置
# 检查内核BPF支持
grep -E "CONFIG_BPF=|CONFIG_BPF_SYSCALL=|CONFIG_BPF_JIT=|CONFIG_HAVE_EBPF_JIT=" /boot/config-$(uname -r)
# 检查XDP支持
grep -E "CONFIG_XDP_SOCKETS=|CONFIG_XDP_SOCKETS=y" /boot/config-$(uname -r)
如果这些配置不是’y’,你可能需要重新编译内核或使用更高版本的内核。
4. 安装libbpf和bpftool
Ubuntu 24.04通常已经包含较新版本的libbpf,但如果你想使用最新版本:
# 克隆libbpf源码
git clone --recurse-submodules https://github.com/libbpf/libbpf.git
cd libbpf/src
make
sudo make install
5. 安装BCC工具
sudo apt install -y bpfcc-tools libbpfcc-dev python3-bpfcc
6. 设置环境变量
# 将以下内容添加到 ~/.bashrc 或 ~/.zshrc
export BPF_CLANG=clang
export BPF_CFLAGS="-O2 -g -Wall -Werror"
export PATH=$PATH:/usr/sbin:/sbin
7. 测试环境
创建一个简单的XDP程序测试:
// hello_xdp.c
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
SEC("xdp")
int xdp_hello(struct xdp_md *ctx) {
bpf_printk("Hello XDP from Ubuntu 24.04!");
return XDP_PASS;
}
char _license[] SEC("license") = "GPL";
编译并加载:
# 编译
clang -O2 -g -Wall -target bpf -c hello_xdp.c -o hello_xdp.o
# 加载到内核
sudo bpftool prog load hello_xdp.o /sys/fs/bpf/hello_xdp
sudo bpftool net attach xdp pinned /sys/fs/bpf/hello_xdp dev lo
# 查看日志
sudo cat /sys/kernel/debug/tracing/trace_pipe
8. 可选工具安装
# 安装XDP工具
sudo apt install -y xdp-tools
# 安装perf工具
sudo apt install -y linux-tools-$(uname -r) linux-cloud-tools-$(uname -r)
9. 开发建议
- 使用支持BPF的IDE插件(如VSCode的eBPF插件)
- 考虑使用libxdp库简化XDP程序开发
- 对于复杂项目,可以使用CMake或Makefile管理构建过程
现在你的Ubuntu 24.04系统已经准备好进行eBPF/XDP开发了!