ubuntu 18.04 中 eBPF samples/bpf 编译

1. history 信息

一次成功编译 bpf 后执行 history 得到的信息:

yingzhi@yingzhi-Host:~/ex/ex_kernel/linux-5.4$ history1  ls2  mkdir ex3  cd ex4  mkdir ex_kernel5  ls /boot/6  sudo apt install linux-source7  ls /usr/src/8  uname -r9  cd ex_kernel/10  wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz11  ls12  tar zxf linux-5.4.tar.gz 13  ls14  cd linux-5.4/15  cp /boot/config-5.4.0-152-generic .config16  make oldconfig17  python --version18  sudo apt install python319  python3 --version20  python21  sudo apt install -y bison build-essential cmake flex git libedit-dev pkg-config libmnl-dev    python zlib1g-dev libssl-dev libelf-dev libcap-dev libfl-dev llvm clang pkg-config    gcc-multilib luajit libluajit-5.1-dev libncurses5-dev libclang-dev clang-tools22  make oldconfig23  make prepare24  make modules_prepare25  make headers_install26  make M=samples/bpf27  cd samples/bpf28  ls29  ./sockex130  ./trace531  ./tracex532  ./sampleip 33  cd ..34  l35  wget36  wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.4.1.tar.gz37  ls38  tar zxf linux-5.4.1.tar.gz 39  uname -r40  cd linux-5.4.1/41  cp /boot/config-5.4.0-152-generic .config42  cd ..43  cd linux-5.444  ls45  cd samples/bpf/46  ls47  sudo ./tracex648  ls49  sudo ./sockex150  cd ../../../linux-5.4.1/51  ls52  make oldconfig53  make prepare54  make modules_prepare55  make headers_install56  make M=samples/bpf57  ls58  cd samples/bpf/59  ls60  sudo ./sockex161  cd ../..62  ls63  cd ..64  ls65  git --version66  sudo apt install nasm67  ls68  cd ..69  mkdir asm_ex70  cd ex71  cd ex_kernel/72  ls73  cd linux-5.474  ls75  make -j476  llc -version77  ls78  history
yingzhi@yingzhi-Host:~/ex/ex_kernel/linux-5.4$ 

2. 使用 ubuntu 18.04

    ubuntu 18.04 编译 BPF比较简单, ubuntu 22.04 适合系统熟手;

找一台 旧机器,安装一个 ubuntu 18.0;

使用国内源:

yingzhi@yingzhi-Host:~/ex/ex_kernel/linux-5.4$ cat /etc/apt/sources.list
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
yingzhi@yingzhi-Host:~/ex/ex_kernel/linux-5.4$ 

         

sudo apt update
sudo apt upgrade

3. 选择linux kernel 源代码版本

$ name -ryingzhi@yingzhi-Host:~/ex/ex_kernel/linux-5.4$ uname -r
5.4.0-84-generic
yingzhi@yingzhi-Host:~/ex/ex_kernel/linux-5.4$ 

http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.4.1.tar.gz

$ wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.4.1.tar.gz$ tar dxf linux-5.4.1.tar.gz
$ cd linux-5.4.1/# or 版本不一定合适
$ sudo apt install linux-source
$ ls /usr/src/

4. 编译 bpf

4.1 准备环境

sudo apt install -y bison build-essential cmake flex git libedit-dev pkg-config libmnl-dev    python zlib1g-dev libssl-dev libelf-dev libcap-dev libfl-dev llvm clang pkg-config    gcc-multilib luajit libluajit-5.1-dev libncurses5-dev libclang-dev clang-tools

4.2 拷贝当前系统的kernel 配置文件 .config

$ cp /boot/config-5.4.0-152-generic /home/yingzhi/ex/ex_kernel/linux-5.4.1/.config

4.3 编译ebpf samples

$ cd /home/yingzhi/ex/ex_kernel/linux-5.4.1/
$ make oldconfig
$ make prepare
$ make modules_prepare
$ make headers_install
$ make M=samples/bpf

4.4 运行 示例

ls ./samples/bpf/

$ sudo ./sockex1

5. bpf 原理

5.1 架构

5.2 编写并分析一个示例

5.3 bpf map

5.4 bpf trace

5.5 bpf tool

5.6 bpf && network

5.7 xdp

6. eBPF JIT

7. 参考:

1. 

eBPF - Introduction, Tutorials & Community Resources

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/140577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL(7) Innodb 原理和日志

一、MySQL结构 客户端 server层 查询缓存(5.7) 连接器 分析器 优化器 执行器 引擎层 二、一条update操作mysql的流程 三、MySQL的日志 (1)redo log 保证MySQL 持久性的关键,如果MySQL宕机,buffer pool…

SpingBoot:整合Mybatis-plus+Druid+mysql

SpingBoot:整合Mybatis-plusDruid 一、特别说明二、创建springboot新工程三、配置3.1 配置pom.xml文件3.2 配置数据源和durid连接池3.2.1 修改application.yml3.2.2 新增mybatis-config.xml 3.3 编写拦截器配置类 四、自动生成代码五、测试六、编写mapper.xml&#…

远程端点管理和安全性

当今的企业网络环境是一个分布式动态环境,其中有许多需要管理、验证和保护的移动部件,而不会对最终用户的生产力产生任何威慑力。提供有效的端点管理安全性,同时仍提供无缝最终用户体验的解决方案至关重要。 Endpoint Central 执行的活动可确…

前端面试题记录

vue2响应式原理 vue2主要是采用了数据劫持结合发布者-订阅者模式来实现数据的响应式,vue在初始化的时候,会遍历data中的数据,使用object.defineProperty为data中的每一个数据绑定setter和getter,当获取数据的时候会触发getter&am…

基于STM32的宠物托运智能控制系统的设计(第十七届研电赛)

一、功能介绍 使用STM32作为主控设备,通过DHT11温湿度传感器、多合一空气质量检测传感器以及压力传感器对宠物的托运环境中的温湿度、二氧化碳浓度和食物与水的重量进行采集,将采集到的信息在本地LCD显示屏上显示,同时,使用4G模块…

C语言自定义类型(上)

大家好,我们又见面了,这一次我们来学习一些C语言有关于自定义类型的结构。 目录 1.结构体 2位段 1.结构体 前面我们已经学习了一些有关于结构体的知识,现在我们进行深入的学习有关于它的知识。 结构是一些值的集合,这些值称为…

大厂面试之算法篇

目录 前言 算法对于前端来说重要吗? 期待你的答案 算法 如何学习算法 算法基础知识 时间复杂度 空间复杂度 前端 数据结构 数组 最长递增子序列 买卖股票问题 买卖股票之交易明细 硬币找零问题 数组拼接最小值 奇偶排序 两数之和 三数之和 四数之…

谷歌版ChatGPT与旗下邮箱、视频、地图等,实现全面集成!

9月20日,谷歌在官网宣布推出Bard Extensions。借助该扩展用户可在谷歌的Gmail、谷歌文档、网盘、Google 地图、视频等产品中使用Bard。 Bard是谷歌基于PaLM 2大模型,打造的一款类ChatGPT产品,可自动生成文本、代码、实时查询信息等。新的集成…

pycharm中恢复原始界面布局_常用快捷键_常用设置

文章目录 1 恢复默认布局1 .1直接点击file→Manage IDE Settings→Restore Default Settings(如下图所示):1.2 直接点击Restore and Restart, 然后Pycharm就会自动重启,重启之后的界面就是最原始的界面了 2 改变主题2.…

Nginx图片防盗链

原理 浏览器向web服务器发送请求时一般会在header中带上Referer信息,服务器可以借此获得一些信息用来处理盗链 不过Referer头信息其实是可以伪装生成的,所以通过Referer信息防盗链并非100%可靠 具体方法 核心点就是在Nginx配置文件中,加入…

C语言指向二维数组的四种指针以及动态分配二维数组的五种方式

文章目录 应用场景可能指向二维数组的指针动态分配二维数组 应用场景 当二维数组作为结构成员或返回值时,通常需要根据用户传递的参数来决定二维数组的大小,此时就需要动态分配二维数组。 可能指向二维数组的指针 如果现在有一个二维数组a[3][2]&…

解决模型半透明时看到内部结构的问题

大家好,我是阿赵。   之前在做钢铁侠线框效果的时候,说到过一种技术,这里单独拿出来再说明一下。   我们经常要做一些模型半透明效果,比如这个钢铁侠的模型,我做了一个Rim边缘光的效果,边缘的地方亮一点…

小白学Python:提取Word中的所有图片,只需要1行代码

#python# 大家好,这里是程序员晚枫,全网同名。 最近在小破站账号:Python自动化办公社区更新一套课程:给小白的《50讲Python自动化办公》 在课程群里,看到学员自己开发了一个功能:从word里提取图片。这个…

20230919后台面经整理

1.你认为什么是操作系统,操作系统有哪些功能 os是:管理资源、向用户提供服务、硬件机器的扩展 1.进程线程管理:状态、控制、通信等 2.存储管理:分配回收、地址转换 3.文件管理:目录、操作、磁盘、存取 4.设备管理&…

neo4j下载安装配置步骤

目录 一、介绍 简介 Neo4j和JDK版本对应 二、下载 官网下载 直接获取 三、解压缩安装 四、配置环境变量 五、启动测试 一、介绍 简介 Neo4j是一款高性能的图数据库,专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构,非常适用于…

SSRF漏洞

Server-Side Request Forgery:服务器端请求伪造 目标:网站的内部系统 形成的原因 攻击者构造形成由服务器端发起请求的译者安全漏洞。 由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内…

数量关系(刘文超)

解题技巧 代入排除法 数字特性法 整除特性 比例倍数特性(找比例,比例不明显时找等式) 看不懂式子时,把所有的信息像表格一样列出来 看不懂式子时,把所有的信息像表格一样列出来

10.2servlet基础2

一.SmartTomcat 1.第一次使用需要进行配置. 二.异常处理 1.404:浏览器访问的资源,在服务器上不存在. a.检查请求的路径和服务器配置的是否一致(大小写,空格,标点符号). b. 确认webapp是否被正确加载(检查web.xml没有/目录错误/内容错误/名字拼写错误)(多多关注日志信息). 2…

kali linux多版本java共存并自由切换 update-alternatives

Kali Linux通过apt和dpkg安装的Java不是一样的。 它们安装的Java版本和管理方式可能不同。 1. **apt 安装 Java:** 当您使用apt包管理器在Kali Linux上安装Java时,您实际上是安装了由Kali Linux官方仓库提供的Java版本。 这个版本通常是经过Kali Linux团…

vue指令(代码部分三)

<template><view><view click"onClick">标题&#xff1a;{{title}}</view><input type"text" v-model"title"/>----------------案例----------------<view class"out"><view class"row&…