ebpf内核态开发环境搭建
2023-02-26 09:47:47 时间
1 操作系统和内核
操作系统:可选用ubuntu或者centos
内核版本:4.18+
- 内核开启BTF调试(非必需) 检查内核是否开启BTF调试:
cat /boot/config -`uname -r` | grep BTF
如果回显中显示CONFIG_INFO_BTF=y
表示开启。如果未开启需要重新编译内核开启。
- 生成vmlinux.h文件
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
生成这个头文件是linux内核头文件的大集合,结合以下头文件作为ebpf c代码的头部引用:
#include "vmlinux.h"
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_endian.h>
#include <bpf/bpf_core_read.h>
#include <bpf/bpf_tracing.h>
2 安装libbpf库
yum -y install libbpf-devel
部分操作系统版本的软件源可能没有,需要自行找RPM包安装。
3 安装llvm
- 依赖 llvm版本:11.0.0 gcc版本:>=5.1 g++版本:>=5.1 GNU make:>=3.79 cmake版本:>=3.4.3
- 解压
xz -d llvm-project-11.0.0.tar.xz
tar -xvf llvm-project-11.0.0.tar
- 编译安装
cd llvm-project-11.0.0
mkdir build
cd build
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_BUILD_TYPE_Release -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" -G "Unix Makefiles" ../llvm
make
# 需要等待约4小时
make install
# 需要等待约半小时
- 确认是否RTTI特性 在编译bpftrace工程的时候如果没有打开LLVM的RTTI,会导致编译失败。
llvm-config --has-rtti
YES
3.1 也可以使用docker容器作为开发环境
需要宿主机内核版本满足要求。
4 验证环境
选用cilium/ebpf项目(tag:v0.8.0)中的样例:uretprobe。(这里需要加上golang的构建能力)
- 编译 进入到ebpf/examples/uretprobe下,执行:
BPF_CLANG=clang BPF_CFLAGS="-O2 -Wall" go generate main.go
go build .
- 挂载到内核
./uretprobe
2023/01/31 19:30:15 Listening for events..
开启一个新窗口输入hello:
hello
bash: hello: command not found
在开启监听的窗口可以收到:
./uretprobe
2023/01/31 19:30:15 Listening for events..
2023/01/31 19:30:34 /bin/bash:readline return value: hello
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023