99Linux
99Linux

Reputation: 186

how /sys/kernel/btf/vmlinux is exported from vmlinux image?

I want to understand when Linux with BPF BTF enabled, what is the process of extracting BTF from kernel image vmlinux binary that has BTF info encoded and mount in /sys/kernel/btf/vmlinux, I get that from ChatGPT:

BTF Extraction:

During the kernel's boot process, the BTF data embedded in the vmlinux binary is made available in the /sys/kernel/btf/vmlinux file by the kernel's BPF subsystem.
The BPF subsystem extracts the .BTF section from the vmlinux ELF file and exports it to the sysfs interface, specifically at /sys/kernel/btf/vmlinux. This allows eBPF programs and tools to access the type information.

so if I have an kernel vmlinux image encoded with BTF, I want to manually extract the BTF from vmlinux as the same format of /sys/kernel/btf/vmlinux which appears to be binary form. I know bpftool could dump BTF from kernel image vmlinux in format raw or c, but that format seems different than /sys/kernel/btf/vmlinux.

Upvotes: 0

Views: 139

Answers (1)

99Linux
99Linux

Reputation: 186

actually in kernel scripts/link-vmlinux.sh, gen_btf will generate the binary vmlinux btf .btf.vmlinux.bin.o that can be saved to /lib/modules/.../build/vmlinux for building external kernel modules

Upvotes: 0

Related Questions