mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-22 09:19:06 +08:00
README: add BTF and CO-RE info
Add list of Linux distributions with kernel BTF built-in. Give few useful links to BPF CO-RE-related material to help users get started.
This commit is contained in:
committed by
Andrii Nakryiko
parent
20d9816471
commit
6e15a022db
47
README.md
47
README.md
@@ -52,7 +52,7 @@ $ PKG_CONFIG_PATH=/build/root/lib64/pkgconfig DESTDIR=/build/root make install
|
||||
```
|
||||
|
||||
Distributions
|
||||
=====
|
||||
=============
|
||||
|
||||
Distributions packaging libbpf from this mirror:
|
||||
- [Fedora](https://src.fedoraproject.org/rpms/libbpf)
|
||||
@@ -74,8 +74,51 @@ Package dependencies of libbpf, package names may vary across distros:
|
||||
- zlib
|
||||
- libelf
|
||||
|
||||
BPF CO-RE (Compile Once – Run Everywhere)
|
||||
=========================================
|
||||
|
||||
Libbpf supports building BPF CO-RE-enabled applications, which, in contrast to
|
||||
[BCC](https://github.com/iovisor/bcc/), do not require Clang/LLVM runtime
|
||||
being deployed to target servers and doesn't rely on kernel-devel headers
|
||||
being available.
|
||||
|
||||
It does rely on kernel to be built with [BTF type
|
||||
information](https://www.kernel.org/doc/html/latest/bpf/btf.html), though.
|
||||
Some major Linux distributions come with kernel BTF already built in:
|
||||
- Fedora 31+
|
||||
- RHEL 8.2+
|
||||
|
||||
If your kernel doesn't come with BTF built-in, you'll need to build custom
|
||||
kernel. You'll need:
|
||||
- `pahole` 1.16+ tool (part of `dwarves` package), which performs DWARF to
|
||||
BTF conversion;
|
||||
- kernel built with `CONFIG_DEBUG_INFO_BTF=y` option;
|
||||
- you can check if your kernel has BTF built-in by looking for
|
||||
`/sys/kernel/btf/vmlinux` file:
|
||||
|
||||
```shell
|
||||
$ ls -la /sys/kernel/btf/vmlinux
|
||||
-r--r--r--. 1 root root 3541561 Jun 2 18:16 /sys/kernel/btf/vmlinux
|
||||
```
|
||||
|
||||
To develop and build BPF programs, you'll need Clang/LLVM 10+. The following
|
||||
distributions have Clang/LLVM 10+ installed by default:
|
||||
- Fedora 32+
|
||||
- Ubuntu 20.04+
|
||||
|
||||
Otherwise, please make sure to update it on your system.
|
||||
|
||||
The following resources are useful to understand what BPF CO-RE is and how to
|
||||
use it:
|
||||
- [BPF Portability and CO-RE](https://facebookmicrosites.github.io/bpf/blog/2020/02/19/bpf-portability-and-co-re.html)
|
||||
- [HOWTO: BCC to libbpf conversion](https://facebookmicrosites.github.io/bpf/blog/2020/02/20/bcc-to-libbpf-howto-guide.html)
|
||||
- [libbpf-tools in BCC repo](https://github.com/iovisor/bcc/tree/master/libbpf-tools)
|
||||
contain lots of real-world tools converted from BCC to BPF CO-RE. Consider
|
||||
converting some more to both contribute to the BPF community and gain some
|
||||
more experience with it.
|
||||
|
||||
License
|
||||
=====
|
||||
=======
|
||||
|
||||
This work is dual-licensed under BSD 2-clause license and GNU LGPL v2.1 license.
|
||||
You can choose between one of them if you use this work.
|
||||
|
||||
Reference in New Issue
Block a user