XDP 시작하기--eBPF 샘플 커널 샘플 코드 컴파일

Linux 커널 코드는 많은 eBPF 샘플 코드(예: linux6.1 커널 코드)를 제공하며 /Linux/samples/bpf 디렉토리에서 샘플 코드를 찾을 수 있습니다.

1. 리눅스 커널 버전 보기

eBPF는 여전히 빠르게 발전하고 있고 다른 버전의 Linux 커널에 대한 지원이 균일하지 않기 때문에 이 기사에서는 교차 컴파일 상황에 대해 논의하지 않습니다. 따라서 첫 번째 단계에서 uname 명령을 통해 로컬 Linux 커널의 버전 번호를 확인해야 다음 단계를 수행할 수 있습니다.

pi@raspberrypi:/usr/src/linux-6.1/samples/bpf $ uname -a
Linux raspberrypi 6.1.21+ #1642 Mon Apr  3 17:19:14 BST 2023 armv6l GNU/Linux

2. 리눅스 커널 코드 다운로드

리눅스 커널 코드는 깃허브 에 호스팅 되어 있으며 왼쪽의 마스터를 풀다운하면 1장에서 질의한 현재 리눅스 커널의 해당 버전의 커널 코드를 확인할 수 있다. 아래 그림과 같이 v6.1 버전을 클릭하여 선택합니다.
여기에 이미지 설명 삽입그런 다음 왼쪽에 있는 코드의 드롭다운 상자에서 Download ZIP을 선택하여 직접 다운로드하거나 HTTPS를 통해 URL을 복사하고 git을 통해 로컬 호스트에 소스 코드를 다운로드합니다.
여기에 이미지 설명 삽입

3. 소스코드 복사 및 설치

이 단계는 매우 간단합니다. 다운로드한 파일을 /usr/src 디렉토리에 직접 복사하거나 압축을 풉니다.

pi@raspberrypi:~ $ sudo unzip ./linux-6.1.zip -d /usr/src/

압축 해제가 완료되면 다음 명령어를 확인하여 /usr/src/linux-6.1/samples 디렉토리가 보이면 커널 소스 코드가 제대로 설치된 것입니다.

pi@raspberrypi:~ $ cd /usr/src/linux-6.1/samples/
pi@raspberrypi:/usr/src/linux-6.1/samples $ ls -l | grep bpf
drwxr-xr-x 2 root root 4096 May 25 13:36 bpf

4. 컴파일 환경 구성

sudo apt install make
sudo apt install clang
sudo apt install llvm
sudo apt install gcc
sudo apt install flex
sudo apt install bison
sudo make defconfig
sudo make headers_install
sudo make modules_prepare
sudo cp /sys/kernel/btf/vmlinux /usr/src/linux-5.19
sudo ln -s ./x86_64-linux-gnu/sys/ ./sys
sudo ln -s /usr/include/linux/capability.h /usr/include/sys/capability.h
sudo ln -s /usr/lib/x86_64-linux-gnu/libcap.so.2.44 /usr/lib/libcap.so
sudo ln -s /usr/src/linux-5.19/include/asm-generic/ /usr/src/linux-5.19/include/include/asm
sudo ln -s /usr/src/linux-5.19/samples/bpf/Module.symvers /usr/src/linux-5.19

5. 컴파일

위 4단계의 각 단계를 수행해야 하며, 그렇지 않으면 헤더 파일을 찾을 수 없고 라이브러리 파일을 찾을 수 없다는 오류가 발생합니다.
그런 다음 다음 명령을 실행하여 모든 샘플 코드를 성공적으로 컴파일합니다.

sudo make M=samples/bpf

Supongo que te gusta

Origin blog.csdn.net/meihualing/article/details/130865317
Recomendado
Clasificación