eBPF.top · Head First eBPF

专题 / Development

🛠️ 开发调试

libbpf、Aya/Rust、Go、编译器与工具链、开发环境 · 共 24 篇

2026 6 篇

BPF

eBPF 安全分发:内核 6.18 证书签名机制实测

eBPF 让我们不改内核、不装模块就能往内核里放代码,但决定谁能放的,一直只是"你是不是 root",而不是"代码是谁构建的、有没有被改过"。内核模块十多年前就有签名机制,eBPF 一直缺这一环。

BPF

跨发行版 eBPF 程序:兼容性负担与工程对策

写一个能在本机加载的 eBPF 程序并不难;难的是让它在多发行版、多架构、多内核版本上长期可用。2026 年 6 月,开发者 kxxt 以开源工具 tracexec 的 eBPF 后端为样本,系统整理了维护负担与工程对策。下文按问题域、案例 …

BPF

挂起与恢复 BPF 程序:协程如何改变 BPF 编程模型

BPF 程序可以用来扩展 Linux 内核的诸多方面,但有一个硬约束:程序必须在开始执行时的同一上下文中一口气跑完。Kumar Kartikeya Dwivedi 想打破这条规则,让 BPF 程序可以写成协程(coroutine)。 …

BPF

智能体下的 BPF:自我变革迫在眉睫

编程智能体(Coding Agents)的工作模式高度依赖短反馈回路—写代码、看错误、改代码。回路越短,智能体越高效。这也是它们擅长大规模重构等繁琐工作的原因:错误信息即时、清晰、可操作。BPF 的现状恰恰相反。要充分测试一段 BPF 代 …

2025 4 篇

BPFRust

Rust 系列 03:深入理解 Kprobes 与 Kretprobes

虽然与 XDP 或 Tracepoints 等其他 eBPF 程序类型相比,Kprobes 和 Kretprobes 通常具有更高的开销,但它们的多功能性使其变得不可或缺。它们几乎可以附加到任何内核函数,从而能够深入了解系统行为 — 这也是 …

BPFRust

Rust 系列 02:理解 eBPF 核心构建单元

我们使用 Rust + eBPF 构建了一个系统调用跟踪器。这里,我们将解析使其工作的核心组件以及为 eBPF 工具提供核心动力的深层机制。理解这些核心组件将帮助你构建更复杂的可观测性、安全性和网络工具。

BPFRust

Rust 系列 01: eBPF 和 Rust 简介

在本文中,我们将探讨如何使用 eBPF 和 Rust 构建高性能的 Linux 追踪工具。无论你是刚刚开始接触 eBPF,还是对如何将 eBPF 与现代 Rust 工具集成感到好奇,你都可以在本文有所收获。本文将带你了解 eBPF 基础知 …

2024 3 篇

BPF

BPF 管理器 bpfman 简介

bpfman 可以实现对 eBPF 运行状态的深入了解,从而更轻松地管理 eBPF 程序,这包括加载、卸载、运行状态查看等。该提案还需要 Fedora 工程和指导委员会 (FESCo) 的批准,如果顺利很可能会在 4 …

2022 4 篇

BPFfoundationebpf-overview

Rust Aya 框架编写 eBPF 程序

Linux 内核 6.1 版本中有一个非常引人注意的变化:引入了对 Rust 编程语言的支持。Rust 是一种系统编程语言,Rust 通过提供非常强大的编译时保证和对内存生命周期的明确控制。在内核开发中引入 Rust 语言,将会为内核开发的 …

systemfoundation

Ubuntu 21.10 安装调试符号

Linux 内核中的调试符号包含源代码级别的信息,如函数名称、函数调用约定、以及源代码行号到指令的映射。这些信息在调试或剖析内核的时候非常有用。在本文中,我将展示如何在 Ubuntu 上获得任何内核的调试符号。

BPF

BumbleBee: 如丝般顺滑构建、交付和运行 eBPF 程序

BumbleBee 可以让我们专注于编写 eBPF 代码,其负责自动生成与 eBPF 程序相关的用户空间相关的代码(对应于用户空间的功能),自动将 eBPF 程序的数据作为日志、指标和直方图进行展示。

BPF

eBPF 与 Go,超能力组合(含视频)

本文主要对 eBPF 程序跟踪 Go 程序的函数调用、Go 函数调用参数等方面进行介绍, 而且还基于 bpf_probe_write_user 函数对跟踪 Go 语言函数进行修改的样例。本文涉及的完整环境搭建,请参环境准备篇。

2021 6 篇

systemfoundation

基于 Ubuntu 21.04 BPF 开发环境全攻略

本文基于 Ubuntu 21.04 版本使用 Vagrnt 和 VirtualBox 打造了 BPF 编译环境,同时提供了命令行升级内核和手工编译内核升级的方式

foundationBPF

【BPF入门系列-12】【译】eBPF 和 Go 经验初探

eBPF 的生态欣欣向荣,无论是 eBPF 本身及其各种应用(包括 XDP) 方面都有大量的学习资源。但当涉及到选择库和工具来与 eBPF 进行交互时,会让人有所困惑。在选择时,你必须在基于 Python 的 BCC 框架、基于 C …

BPF

使用 Go 语言管理和分发 ebpf 程序

本文通过对于 Go 语言绑定 eBPF 程序的库 cilium/ebpf,iovisor/gobpf 和 dropbox/goebpf 进行了全面对比,对于 go 开发者用户提供了参考。同时基于 cilium/ebpf 库给出了样例代码的测 …

BPFfoundationBPF-CORE

BCC 到 libbpf 的转换指南【译】

将基于 BCC 的 BPF 应用程序转换为 libbpf 和 [BPF CO-RE](https://nakryiko.com/posts/bpf-portability-and-co-re/) 的实践指南。

BPFfoundationBPF-CORE

BPF 二进制文件:BTF,CO-RE 和 BPF 性能工具的未来【译】

BTF 和 CO-RE 这两项新技术为 BPF 成为价值十亿美元的产业铺平了道路。目前,有许多 BPF(eBPF)初创公司正在构建网络,安全性和性能产品(并且更多未浮出水面的),但是要求客户安装 LLVM,Clang 和内核头文件依赖(可能 …

system

使用 GDB + Qemu 调试 Linux 内核

本文介绍了在 Ubuntu 20.04 机器上使用 qemu + gdb 进行内核调试的整体流程; 最终使用 Eclipse-CDT 进行图形化设置的主要步骤

2020 1 篇

BPFfoundation

【BPF入门系列-3】BPF 环境搭建

1. 内核版本选择 补丁 Prepatch: Prepatch 或 “RC” 内核是主线内核的预发布版本,主要针对其他内核开发者和 Linux 爱好者。它们必须从源码中编译,并且通常包含新的功能,这些功能必须在稳定发布之前进行测 …