如何在CentOS上配置eBPF开发环境

简介: 【2月更文挑战第5天】

首先,对于 CentOS 来说,根据官方文档,CentOS 8 已在 2021 年底被放弃,所以不再推荐将其作为生产环境继续使用。对于已有的用户来说,可以升级到 CentOS Stream 或 Rocky Linux 继续获得开源社区的支持。比如,你可以执行下面的命令,把 CentOS 8 升级为 CentOS Stream 8:

sudo dnf --disablerepo '*' --enablerepo extras swap centos-linux-repos centos-stream-repos -y
sudo dnf distro-sync -y

打开一个终端,SSH 连接到 CentOS Stream 8 系统后,执行 dnf info bcc-tools 查询 BCC 的版本,你会看到如下的输出:

Available Packages
Name         : bcc-tools
Version      : 0.19.0
Release      : 5.el8
Architecture : x86_64
Size         : 448 k
Source       : bcc-0.19.0-5.el8.src.rpm
Repository   : appstream
Summary      : Command line tools for BPF Compiler Collection (BCC)
URL          : https://github.com/iovisor/bcc
License      : ASL 2.0
Description  : Command line tools for BPF Compiler Collection (BCC)

为了使用较新的 BCC,从源码编译安装就是比直接使用 dnf 安装更好的选择。


在终端中执行下面的命令,我们就可以从源码编译和安装 BCC 0.24.0 版本:

# 第一步,安装必要的开发工具和开发库
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

命令执行成功后,所有的 BCC 工具都会安装到 /usr/share/bcc/tools 目录下。比如,你可以执行 sudo python3 /usr/share/bcc/tools/execsnoop 命令来运行 BCC 自带的 execsnoop 工具。


从 bpftrace 预先编译好的容器镜像中复制二进制文件。


我们执行下面的命令,安装容器工具 podman 之后,借助 podman 拉取 bpftrace 容器镜像,再将其中的 bpftrace 二进制文件复制出来,就可以把 bpftrace 安装到当前目录了:

# 第一步,安装podman
sudo dnf install -y podman
# 第二步,下载镜像后从中复制bpftrace二进制文件
podman pull quay.io/iovisor/bpftrace:master-vanilla_llvm_clang_glibc2.23
podman run --security-opt label=disable -v $(pwd):/output quay.io/iovisor/bpftrace:master-vanilla_llvm_clang_glibc2.23 /bin/bash -c "cp /usr/bin/bpftrace /output"

这里需要你留意一点:在上面的命令中,我们使用了 podman 工具来拉取镜像并运行容器,这是因为 CentOS Stream 自带的软件包中不包含 Docker。


安装成功后,你可以执行下面的命令验证 bpftrace 的功能:

sudo ./bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("%s %s\n", comm, str(args->filename)); }'

如果一切正常,你将会看到类似下面的输出:

Attaching 1 probe...
vmstats /proc/meminfo
vmstats /proc/stat
vminfo /var/run/utmp
...

到这里,我们就完成了 CentOS Stream 开发环境的配置。


接下来从内核源码编译安装 bpftool 的第一步是下载内核的源码。根据发行版的不同,内核源码的下载方法可以分为三种:

  • 利用发行版自带的工具,下载安装发行版提供的内核源码包。比如 RHEL、CentOS、Ubuntu 等,都可以使用这种方法。
  • 直接从内核网站 kernel.org 下载内核源码,注意下载前要先执行 uname -r 查询系统的内核版本。
  • 发行版提供的代码仓库下载内核源码,比如对于 WSL2,就可以到 GitHub 下载。


后两种方法比较简单,只要从相关的网站中找到链接就可以直接下载了;而对于第一种方法,你可以执行下面的步骤,借助 yumdownloader 或 apt 工具下载发行版提供的内核源码包。


比如,在 CentOS Stream 8 系统中,你可以执行下面的命令,下载内核源码并安装内核编译所需的开发工具和开发库:

# 第一步,开启必需的软件包仓库
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --set-enabled powertools
# 第二步,下载内核源码
yumdownloader --source kernel
rpm -ivh kernel-*.src.rpm
# 第三步,安装依赖包
cd rpmbuild/SPECS/
sudo dnf builddep kernel.spec
# 第四步,解压内核源码并切换到解压后的内核源码目录(注意替换为你的内核版本)
rpmbuild -bp --target=x86_64 kernel.spec
cd ../BUILD/kernel-4.18.0-373.el8/linux-4.18.0-373.el8.x86_64/

内核源码下载成功后,它的 tools/bpf/bpftool 目录就包含了 bpftool 工具的源代码,因而你就可以从这个目录重新编译和安装 bpftool。


不过在编译之前要注意,libbfd 库包含在 binutils 开发库中,因而你还需要先安装 binutils 开发包。具体的安装和编译步骤如下所示:

# 第一步,安装binutils开发库
## CentOS执行dnf命令
sudo dnf install -y binutils-devel
## Ubuntu执行apt命令
sudo apt install -y binutils-dev
# 第二步,从源码编译并安装bpftool
make -C tools/bpf/bpftool
sudo make install -C tools/bpf/bpftool/


上述命令执行成功后,再次执行 sudo bpftool prog dump jited id 2 之后,你可以发现,现在已经可以正常看到 eBPF 程序的指令了。


相关文章
|
3月前
|
应用服务中间件 Linux 网络安全
centos7 下离线安装gcc g++ nginx,并配置nginx进行网络流转发
centos7 下离线安装gcc g++ nginx,并配置nginx进行网络流转发
102 0
|
3天前
|
网络协议
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
8 0
|
1月前
|
存储 监控 Linux
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
【2月更文挑战第17天】Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
25 1
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
|
3月前
|
负载均衡 算法 Linux
百度搜索:蓝易云【Centos7系统Haproxy安装配置教程】
现在,HAProxy已经成功安装和配置在您的CentOS 7系统上。它将监听您配置的端口,并根据负载均衡策略将请求转发到后端服务器。您可以根据需要自定义更多的配置,如SSL终止、ACL和更复杂的负载均衡算法。请确保HAProxy的配置符合您的需求,并在进行更改之前备份配置文件,以防止意外的错误。
41 2
|
3月前
|
Linux 网络安全
百度搜索:蓝易云【centos7通过配置hosts.allow和hosts.deny限制登陆教程】
从现在开始,根据您在 `hosts.allow`和 `hosts.deny`文件中配置的规则,特定的主机将被允许或拒绝登录到您的CentOS 7系统。请确保您谨慎地配置这些文件,以避免意外地限制访问。同时,建议备份这些文件以备不时之需。
39 1
|
3月前
|
存储 安全 Linux
百度搜索:蓝易云【CentOS7环境:安装配置gitlab(适用于内网、外网环境)】
这些是在CentOS 7环境下安装和配置GitLab的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
56 0
|
3月前
|
消息中间件 Java Kafka
Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
56 0
|
4月前
|
SQL 分布式计算 Hadoop
最新大数据集群安装方法CentOS7.6__大数据环境安装和配置
最新大数据集群安装方法CentOS7.6__大数据环境安装和配置
136 0
|
4月前
|
分布式计算 Hadoop Java
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
79 0
|
Linux 虚拟化
CentOS 7.X配置连接网络
应用场景 Linux虚拟机,系统安装完毕后,无法连接网络,由于是最小化安装,很多命令无法直接yum安装,无法连接外网wget下载资源等等,造成很大的不便,因此需要进行配置连接外网! 操作指南 1. 开启VMware NAT Service 右击“计算机”,选择“管理”,在“服务和应用程序”中,选择“服务”,在右边找到“VMware NAT Service”服务,进行开启。
1129 0