【发布时间】:2022-01-02 17:05:09
【问题描述】:
我正在尝试从 BPF CO:RE 开发开始。 在虚拟机中使用 Ubuntu 20.04 LTS,我需要重新编译内核并安装 pahole(来自 apt install dwarves)以便启用 BTF(我设置 CONFIG_DEBUG_FS=y 和 CONFIG_DEBUG_INFO_BTF=y)。
所以我的设置是:
- Ubuntu 20.04
- 内核 5.4.0-90-generic
- bpftool --version: /usr/lib/linux-tools/5.4.0-90-generic/bpftool v5.4.148
/sys/kernel/btf/vmlinux存在,可以用cat读取。
但是 bpftool 显示以下错误:
$ sudo bpftool btf dump file /sys/kernel/btf/vmlinux format c
libbpf: failed to get EHDR from /sys/kernel/btf/vmlinux
Error: failed to load BTF from /sys/kernel/btf/vmlinux: Unknown error -4001
来自https://github.com/libbpf/libbpf/blob/master/src/libbpf.h 看起来是 LIBBPF_ERRNO__FORMAT, /* BPF 对象格式无效 */ 但我无法找出问题所在。
有谁知道哪里出错了?
提前致谢!
编辑:添加 bpftool 版本
【问题讨论】:
-
你的 bpftool 版本是什么? (
bpftool version)。您是否尝试过使用最新版本? -
是v5.4.148,在哪里可以看到最新的版本?
-
最新版本附带最新的内核源代码 :) 如果您有内核源代码的本地克隆,您可以从那里build bpftool。但请注意,我不知道使用更新的版本是否能解决问题,我只是建议它可能值得检查。
-
因为我没有使用最新的内核,所以从我使用的内核源构建 bpftool 并没有改变任何东西。我可以下载最新的内核并试一试,但我猜它仍然应该与内核附带的 bpftool 一起工作:/
-
您尝试过
raw格式吗?