最近又需要了解ebpf相關(guān)的知識(shí),感覺到目前ebpf的開發(fā)相對(duì)簡單了很多,最終我選擇使用cilium/ebpf作為框架進(jìn)行代碼開發(fā):
- 直接升級(jí)內(nèi)核到Linux5.10
- 安裝必要的開發(fā)工具:
- 將 eBPF 程序編譯成字節(jié)碼的 LLVM;
- C 語言程序編譯工具 make;
-
最流行的 eBPF 工具集 BCC 和它依賴的內(nèi)核頭文件;(cilium/ebpf不需要這個(gè)) -
與內(nèi)核代碼倉庫實(shí)時(shí)同步的 libbpf;(cilium/ebpf使用libbpf-go) - 同樣是內(nèi)核代碼提供的 eBPF 程序管理工具 bpftool。
# For Ubuntu20.10+
sudo apt-get install -y make clang llvm libelf-dev libbpf-dev bpfcc-tools libbpfcc-dev linux-tools-$(uname -r) linux-headers-$(uname -r)
# For RHEL8.2+
sudo yum install libbpf-devel make clang llvm elfutils-libelf-devel bpftool bcc-tools bcc-devel
- 簡單內(nèi)核是否開啟了BTF,如果沒有的話,重新編譯內(nèi)核
CONFIG_DEBUG_INFO_BTF=y 和 CONFIG_DEBUG_INFO=y