diff --git a/README.md b/README.md index 4fb1633..11572bc 100644 --- a/README.md +++ b/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.