最近又需要了解ebpf相關(guān)的知識殿衰,感覺到目前ebpf的開發(fā)相對簡單了很多,最終我選擇使用cilium/ebpf作為框架進行代碼開發(fā):
- 直接升級內(nèi)核到Linux5.10
- 安裝必要的開發(fā)工具:
- 將 eBPF 程序編譯成字節(jié)碼的 LLVM雷则;
- C 語言程序編譯工具 make借卧;
-
最流行的 eBPF 工具集 BCC 和它依賴的內(nèi)核頭文件歇僧;(cilium/ebpf不需要這個) -
與內(nèi)核代碼倉庫實時同步的 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