美文网首页收藏
ebpf环境搭建

ebpf环境搭建

作者: wangshanshi | 来源:发表于2021-12-13 18:00 被阅读0次

主要参考文章:

编译运行源码samples/bpf中的代码

https://blog.csdn.net/sinat_38816924/article/details/115556650

这个比较简单

  1. 下载内核源码并解压
  2. /bin/sh: scripts/mod/modpost: No such file or directory 遇到这种错误,需要make scripts
  3. make M=samples/bpf 需要.config文件,需要保证这些项存在 https://github.com/iovisor/bpftrace/blob/master/INSTALL.md
  4. 遇到错误libcrypt1.so.1 not found,执行如下代码(https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1818037.html
$ cd /tmp
$ apt -y download libcrypt1
$ dpkg-deb -x libcrypt1_1%3a4.4.25-2_amd64.deb  .
$ cp -av lib/x86_64-linux-gnu/* /lib/x86_64-linux-gnu/
$ apt -y --fix-broken install
  1. 编译成功,可以执行samples/bpf中的可执行文件

编译运行自己开发的代码

https://blog.csdn.net/Longyu_wlz/article/details/109900096#t5

1. 下载linux source code,编译内核并升级

git clone https://github.com/torvalds/linux.git
cd linux/
git checkout -b v5.0 v5.0

配置文件

cp -a /boot/config-4.14.81.bm.15-amd64 ./.config

echo '
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_BPF_EVENTS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENTS=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_UPROBES=y
CONFIG_UPROBE_EVENTS=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_INFO_BTF=y
' >> ./.config

需要添加sid源安装dwarves

apt install dwarves
make oldconfig
apt install libssl-dev
make
make modules_install
make install
reboot

此时:

uname -a
Linux n231-238-061 5.0.0 #1 SMP Mon Dec 13 05:38:52 UTC 2021 x86_64 GNU/Linux

2. 编译bpf helloworld

切换到https://github.com/bpftools/linux-observability-with-bpf的helloworld目录

sed -i 's;/kernel-src;/root/linux;' Makefile
make

有报错:

image.png
参考: http://www.helight.info/blog/2021/build-kernel-ebpf-sample/ 解决
cp /root/linux/include/uapi/linux/bpf.h /usr/include/linux/bpf.h

执行./monitor-exec,有报错

./monitor-exec: error while loading shared libraries: libbpf.so: cannot open shared object file: No such file or directory

解决方法

cd /root/linux/tools/lib/bpf/
make
make install

在 /etc/ld.so.conf 中添加 /usr/local/lib64这一行
运行 sudo ldconfig 重新生成动态库配置信息

~/linux/tools/lib/bpf# ldconfig -v 2>/dev/null | grep libbpf
    libbpf.so.0 -> libbpf.so.0.5.0
    libbpf.so -> libbpf.so

最终执行情况:

image.png

可能需要安装apt-get install gcc-multilib g++-multilib
https://github.com/sirfz/tesserocr/issues/130

安装bpftrace

  1. debian 添加sid源 https://github.com/iovisor/bcc/blob/master/INSTALL.md#debian---source
deb http://deb.debian.org/debian sid main contrib non-free
deb-src http://deb.debian.org/debian sid main contrib non-free
  1. apt install bpftrace https://github.com/iovisor/bpftrace/blob/master/INSTALL.md

相关文章

  • ebpf环境搭建

    主要参考文章: <运行第一个ebpf程序>> https://blog.csdn.net/sinat_388169...

  • ebpf开发环境

    安装开发环境 必要的开发工具: libbpf-dev 这个库很可能需要从源码安装,具体的步骤你可以参考 libbp...

  • ebpf

    接上篇udp压测场景性能较差,想用ebpf优化下性能,毕竟ebpf已经有LB方案可以替代ipvs,基于更低的cpu...

  • React Native学习总结篇

    一、环境搭建 1.1 React Native环境搭建 1.1.1 IOS环境搭建 环境:MacOS 注意:不要使...

  • linux 第四天

    Lamp环境搭建 /*******************Lamp环境搭建:*******************...

  • codePush说明

    codePush环境搭建 环境搭建文章:环境搭建 git地址:codePush git地址2.0.3,And...

  • angular学习--02英雄指南

    环境搭建 angular官网--搭建本地开发环境和工作空间windows 10 搭建angular开发环境免搭建环...

  • Gradle开发-Groovy环境搭建

    ##Groovy环境搭建 在使用 Groovy 之前首先要搭建几个环境: Groovy 的环境搭建 JDK 环境搭...

  • [漏洞复现]Ubuntu16.04本地提权(CVE-2017-1

    漏洞概述: 该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验...

  • CVE-2017-16995 ubuntu16.04

    该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验证器模块产生...

网友评论

    本文标题:ebpf环境搭建

    本文链接:https://www.haomeiwen.com/subject/rgujfrtx.html