Linux eBPF 入门

演示环境

1
2
3
4
5
6
7
root@blog:~# cat /etc/debian_version
11.2
root@blog:~#

root@blog:~# uname -rm
5.10.0-10-amd64 x86_64
root@blog:~#

内核头文件问题

Debian 11.2 对应的 linux-headers 在我的apt mirror里面没有.
apt mirror 里面有 5.19.0 image和headers
于是我需要升级一下内核.

升级内核:

1
root@blog:~# apt-get install linux-image-5.19.0-0.deb11.2-amd64

重启确认

1
2
3
4
chunli@blog:~$ reboot
chunli@blog:~$ uname -r
5.19.0-0.deb11.2-amd64
chunli@blog:~$

内核支持BPF?

1
cat /boot/config-$(uname -r) | grep CONFIG_BPF

如果显示了 CONFIG_BPF=y, 说明可以正常使用BPF

安装 linux-headers

1
root@blog:~# apt-get install bpfcc-tools linux-headers-$(uname -r)

测试

  1. 直接运行 bashreadline-bpfcc

    1
    root@blog:~# /usr/sbin/bashreadline-bpfcc
  2. 测试运行 bashreadline-bpfcc

    1
    2
    3
    4
    5
    6
    在BASH内输入的命令,  都会在上面的窗口体现
    chunli@blog:~$ cat /etc/debian_version
    11.2
    chunli@blog:~$ echo Hello
    Hello
    chunli@blog:~$

bpfcc常 用工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chunli@blog:~$ dpkg -S /usr/sbin/bashreadline-bpfcc
bpfcc-tools: /usr/sbin/bashreadline-bpfcc
chunli@blog:~$


chunli@blog:~$ dpkg -L bpfcc-tools | grep bpfcc$
/usr/sbin/argdist-bpfcc
/usr/sbin/bashreadline-bpfcc
/usr/sbin/bindsnoop-bpfcc
/usr/sbin/biolatency-bpfcc
/usr/sbin/biolatpcts-bpfcc
/usr/sbin/biosnoop-bpfcc
/usr/sbin/biotop-bpfcc
/usr/sbin/bitesize-bpfcc
/usr/sbin/bpflist-bpfcc
/usr/sbin/btrfsdist-bpfcc
/usr/sbin/btrfsslower-bpfcc
/usr/sbin/cachestat-bpfcc
/usr/sbin/cachetop-bpfcc
/usr/sbin/capable-bpfcc
/usr/sbin/cobjnew-bpfcc
...

文献

https://bowers.github.io/eBPF-Hello-World/