Part 0 7 chapters

Foundations

Set up the disposable Fedora 44 KVM lab, the Grafana/OTel stack, and the Rust + Aya toolchain โ€” then write and deploy your first eBPF program.

Overview

Tutorial outline

What this tutorial covers, how the chapters are grouped, and the order in which they build on each other.

6 minutesRead โ†’
Chapter 1

Prerequisites

The hardware floor, the host OS, and the virtualization stack you need before building anything.

15 minutesRead โ†’
Chapter 2

Lab setup: the eBPF target VM(s)

Provision a disposable Fedora 44 guest under libvirt with one script, prove you can deploy a binary to it, and add a second guest plus the network between them for two-host tests.

30 minutesRead โ†’
Chapter 3

The observability stack

Stand up Grafana + Tempo + Mimir + Loki in one Podman container, run a Python 3.14 OTLP client, and learn how your Rust eBPF programs will report their measurements into it.

20 minutesRead โ†’
Chapter 4

The Rust + Aya toolchain

Install Rust 1.96.0 via rustup (not dnf), add the nightly BPF target and bpf-linker, scaffold projects with cargo-generate and the aya-template, and set up RustRover. Plus the background that pays off later: the LLVM/Clang/rustc compiler path that turns code into BPF bytecode, the wider eBPF tooling landscape, and the glibc-vs-musl choice for your loader binary.

35 minutesRead โ†’
Chapter 5

eBPF concepts and tools

Programs, maps, the verifier, BTF and CO-RE, program types and attach points โ€” the mental model you need before writing the first Aya program, and how bpftool and bpftrace fit in.

20 minutesRead โ†’
Chapter 6

Hello, eBPF

A first Aya program โ€” a tracepoint that counts process executions in the kernel and reports to Grafana โ€” with a short libbpf / libbpf-rs warm-up first, deployed to the target VM.

30 minutesRead โ†’