eBPF 核心技术与实战
倪朋飞
资深 Linux 专家,Kubernetes 项目维护者
10452 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 26 讲/共 37 讲
eBPF 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

难点解析|eBPF多内核版本兼容详解

你好,我是倪朋飞。
在上一讲中,我带你详细梳理了 eBPF 开发环境的配置方法,特别是 eBPF 相关开发软件包的安装和升级方法,以及内核的配置和编译方法。熟悉了 eBPF 的开发环境和内核编译之后,在留言区和微信群中我还看到很多同学依然在使用较旧版本的内核。而为了学习 eBPF,很多同学已经配置了一个非常新的内核版本作为开发环境,但却发现在新内核中开发的 eBPF 程序有时却没法直接在旧版本的内核中运行。
今天,我就带你一起来看看如何让 eBPF 程序兼容新旧版本的内核,以便在新版本内核中使用诸如 CO-RE 等新特性的同时,还可以在旧版本内核中正常运行。

为什么需要考虑 eBPF 程序的内核兼容性?

在开始正式的内容之前,我想你肯定有一个问题,那就是什么时候需要考虑新旧内核版本的兼容性,以及为什么会出现新旧内核版本兼容性的问题。
在理想情况下,开发测试环境和生产环境应该都是一致的,包括使用相同的内核版本。如果你已经满足了这个条件,那么自然也就不需要考虑内核兼容的问题。但注意这只是理想情况,实际情况下内核版本不一致的问题是不可避免的,比如:
为了获取更好的稳定性和社区支持,内核版本(甚至是 Linux  发行版版本)需要持续跟随上游社区进行升级;
为了采纳新技术,新的产品架构可能一开始就会采纳较新的内核,而使用旧内核的遗留系统还需要很长时间的迭代过程;
为了获得更广的用户,很多商业或开源项目不仅要支持最新的内核版本,还需要兼容各种各样的用户环境,而这些用户所使用的内核版本也是千差万别的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了eBPF多内核版本兼容性的问题及解决方法。首先解释了为什么需要考虑eBPF程序的内核兼容性,列举了新旧内核版本兼容性问题的原因和可能出现的问题。作者介绍了BCC是如何兼容多内核版本的,主要包括在运行eBPF程序时使用当前系统安装的内核头文件进行就地编译以及在eBPF程序编译前事先探测内核支持的函数签名和数据结构等方法。然后详细介绍了一次编译到处执行(CO-RE)项目是如何解决内核版本不同带来的兼容性问题的,包括通过BPF类型格式提供的调试信息,从而使得eBPF程序可以适配不同版本的内核。总的来说,本文对于需要了解eBPF技术特点及内核兼容性问题的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《eBPF 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • janey
    这里的一次编译,跟JIT即时编译是一个意思吗?如果不是,那有什么区别?

    作者回复: 是的,一个意思

    2022-12-05归属地:江苏
  • 有识之士
    微信群在哪里?
    2022-07-24
    3
  • Geek_5ada4a
    第二,通过对 BPF 代码中的访问偏移量进行重写,解决了不同内核版本中数据结构偏移量不同的问题。第三,在 libbpf 中预定义不同内核版本中数据结构的修改,解决了不同内核中数据结构不兼容的问题。 老师,我不太理解第二点和第三点的区别。 “预定义不同内核版本中数据结构的修改”,就是为了实现对“访问偏移量进行重写”吧?这两点落到实处,应该就是一点? ps vmlinux 已经提供了内核数据结构,为什么libbpf中还要“预定义不同内核版本中数据结构的修改”?
    2022-11-18归属地:广东
    2
  • lyonger
    总结下来,好像对于4.9的内核支持,还是不是特别友好,线上要使用还是很麻烦。
    2022-08-31归属地:广东
  • James
    Ubuntu 20.04,内核5.4.0,但是CONFIG_DEBUG_INFO_BTF没打开,怎么打开呢?
    2022-08-27归属地:中国台湾
  • 十七
    兼容性让人头疼
    2022-07-27
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部