在Ubuntu 24.04上搭建eBPF/XDP开发环境

在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. 开发建议

  1. 使用支持BPF的IDE插件(如VSCode的eBPF插件)
  2. 考虑使用libxdp库简化XDP程序开发
  3. 对于复杂项目,可以使用CMake或Makefile管理构建过程

现在你的Ubuntu 24.04系统已经准备好进行eBPF/XDP开发了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值