kkxue/kkxue.github.io

[ebpf] bcc install in EulerOS

Closed this issue · 0 comments

kkxue commented

安装系统:
Huawei Cloud EulerOS 2.0 标准版 64位

root@ecs-ecc7 opt]# uname -a
Linux ecs-ecc7 5.10.0-60.18.0.50.r865_35.hce2.x86_64 #1 SMP Sun Mar 26 18:01:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

源码安装步骤:

第零步,安装内核文件

sudo dnf install kernel-devel-$(uname -r)

这一步一般教程没有写,会导致下面的报错

[root@ecs-ecc7 opt]# python3 /usr/share/bcc/tools/execsnoop
modprobe: FATAL: Module kheaders not found in directory /lib/modules/5.10.0-60.18.0.50.r865_35.hce2.x86_64
Unable to find kernel headers. Try rebuilding kernel with CONFIG_IKHEADERS=m (module) or installing the kernel development package for your running kernel version.
chdir(/lib/modules/5.10.0-60.18.0.50.r865_35.hce2.x86_64/build): No such file or directory
Traceback (most recent call last):
  File "/usr/share/bcc/tools/execsnoop", line 227, in <module>
    b = BPF(text=bpf_text)
  File "/usr/lib/python3.9/site-packages/bcc/__init__.py", line 475, in __init__
    raise Exception("Failed to compile BPF module %s" % (src_file or "<text>"))
Exception: Failed to compile BPF module <text>

第一步,安装必要的开发工具和开发库

sudo dnf makecache --refresh
sudo dnf groupinstall -y "Development tools" # 这步没有成功,但是好像没影响
sudo dnf install -y git bison flex cmake3 clang llvm bpftool elfutils-libelf-devel clang-devel llvm-devel ncurses-devel

第二步,从源码编译安装BCC

git clone -b v0.24.0 https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake -DENABLE_LLVM_SHARED=1 ..
make
sudo make install
cmake -DPYTHON_CMD=python3 .. # build python3 binding
pushd src/python/
make
sudo make install
popd

第三步,测试

python3 /usr/share/bcc/tools/execsnoop