如何查看linux kernel邮件列表
1. 前言
本文主要总结浏览kernel patch的方法,以此希望促成自己养成阅读patch的习惯。用一个朋友的话说,这样才能更好的融入社区。
2. linux版本发展简介
2.1 史前时代(0.01~1.0)
版本更迭过程为:0.01 -> 0.02 -> 0.10 -> 0.11 -> 0.12 -> 0.95 -> 0.96 -> 0.97.x -> 0.98.x -> 0.99.x -> 1.0
2.2 奇偶时代(1.0~2.6.10)
- 版本号
用 a.b.c 表示,其中 a 为主版本号,b 为次版本号,c 为修订号 - 版本号变更的原则
发生重大改变时升级主版本号,发生非重大改变时升级次版本号;
次版本号为奇数表示开发版,次版本号为偶数表示稳定版;
稳定版和开发版在修订号上各自升级演进,开发版达到稳定状态时,发布下一个稳定版。 - 版本举例
比如 1.0.x 在尽量不引入新功能的前提下不断升级;
同时 1.1.x 在不断开发新功能的状态下不断升级;
当 1.1.x 的开发到足够稳定时,转变成 1.2.x 成为稳定版;同时新的开发版 1.3.x 诞生……
2.3 快速演进时代(2.6.11~2.6.39)
- 版本号
a.b.c.d 表示,其中 a 为主版本号,b 为次版本号,c 为主修订号,d 为次修订号。 - 版本号变更的原则
主修订号 c 的升级既包括新特性引入,也包括缺陷修订(Bugfix),次修订号 d 的升级只包括 Bugfix
2.4 极速演进时代(3.0~5.x)
- 版本号
版本号回归 a.b.c 表示法,a 为主版本号,b 为次版本号,c 为修订号。
a 相当于之前的 a.b,新的 b 相当于之前的 c,新的 c 相当于之前的 d - 版本号变更的原则
次版本号 b 的升级既包括新特性引入,也包括缺陷修订(Bugfix),修订号 c 的升级只包括Bugfix。
3. Linux 内核的开发模式
在代码仓库管理上,有主线仓库(Mainline)、稳定仓库(Stable)、未来仓库(Linux-next)和子系统仓库(Subsystem)
仓库名称 | maintainer | Git 仓库地址 |
---|---|---|
Subsystem | e.g. rostedt | e.g. https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git |
Linux-next | Stephen Rothwell | git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git |
Stable | Greg Kroah-Hartman 等 | git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git |
Mainline | Linus Torvalds | git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git |
上图来自用芯探核
3.1 子系统仓库(Subsystem)
绝大多数开发者所贡献的代码首先要接受子系统管理员(Maintainer)的审核,才能进入某个特定的子系统仓库;
3.2 未来仓库(Linux-next)
未来仓库的前身为 Andrew Morton 维护的 Linux-mm,代码变更在进入下一版主线内核之前先到达这里,类似于奇偶时代的奇数版本(开发版),有的也直接进入主线仓库。
3.3 主线仓库(Mainline)
主线仓库是最重要的仓库,其升级规则是在次版本号上面升级演进,两个正式版之间会发布若干个候选版(RC 版),如:
3.0 ->3.1-rc1 ->3.1-rcN ->3.1 -> 3.2-rc1 -> ……
某一个正式版和下一个候选版之间的时期叫做合并窗口期,比如 3.0 至 3.1-rc1 之间就是 3.1 的合并窗口。
只有在合并窗口里面才允许增加新特性,其他阶段只允许缺陷修订(Bugfix)。
也就是说,如果开发者想让某个新特性进入到 3.1 内核,那么必须保证在 3.1-rc1之前进入,否则就只能等待 3.2 的合并窗口了
二次审核通过以后,最后将进入主线仓库(偶尔也有跳过未来仓库,从子系统仓库直接进入主线仓库的情况)。
代码进入了主线内核,就相当于达到 RC 状态或者 Final 状态。
3.4 稳定仓库(Stable)
稳定仓库基于主线仓库的正式版产生,在修订号上面升级演进,如:
3.0 ->3.0.1 -> 3.0.2 -> 3.0.3 -> 3.0.N -> ……
3.1 -> 3.1.1 -> 3.1.2 -> 3.1.3 -> 3.1.N ->……
稳定仓库的代码变更全都是缺陷修订(Bugfix),不引入新的特征
4. 跟踪内核patch
如下以trace子系统提交的一个patch为例,进行跟踪,学习内核邮件沟通的过程,同时介绍patch的流动路径。
4.1 查看邮件列表
进入https://lore.kernel.org/ 可以看到所有子系统的邮件列表:
最开始通过邮件发送给maintainer的patch,可以通过 https://lore.kernel.org/lkml/ 进行查看,
后续经过邮件讨论,最后形成的patch,先会进入到子系统的git仓库中。
通过搜索作者名字,可以看到作者提交的patch,以及maintainer的两次回复。
点击[PATCH] trace: Add trace any kernel object可以进入看到作者提交patch的邮件,可以看到邮件是发送给 rostedt@goodmis.org ,它也是trace子系统的maintainer,通过MAINTAINERS文档也可以看到rostedt不仅维护了trace子系统,还维护多个子系统,如:PRINTK,RCUTORTURE TEST FRAMEWORK,READ-COPY UPDATE (RCU), SCHEDULER, SLEEPABLE READ-COPY UPDATE (SRCU),TRACING MMIO ACCESSES (MMIOTRACE),VSPRINTF,绝对的大神!
接下来我们可以看下这个patch的大致内容:
Introduce a method based on function tracer and kprobe event
to trace any object in the linux kernel.
Usage:
When using the kprobe event, only need to enable trace_object,
we can trace any function argument or the return value. When
the object passes through a function, it can be traced.
主要是基于function tracer和kprobe event引入了一个新的trace方法,可以跟踪某一个内核对象的生命周期,途经了哪些函数路径,不得不说,预感到这可能对于我们研究内核会很有帮助。比如我们通过观察一个page的执行流来研究内存管理方面。跟踪request或bio来研究IO子系统等。
接下来我们看下maintainer的第一封回复:
Re: [PATCH] trace: Add trace any kernel object
这里maintainer的回复显示对这个patch还是很感兴趣的,希望一同完善这个patch。
待续。。。
参考文档
用"芯"探核-基于龙芯的Linux内核探索解析
Linux内核版本新功能
Kernel coverage at LWN.net
如何查看linux kernel邮件列表相关推荐
- 拥抱开源,如何关注Linux Kernel 邮件列表?
如今开源如此火爆,以至于张口闭口不提到都仿佛不是搞IT 的,那么如何拥抱开源?本文适合初学者,如有大神至此,goto exit ! 一.如何加入开源 以Linux 为例,这么一个成功的开源项目需要做哪 ...
- linux创建邮件列表,如何订阅linux-kernel邮件列表
花了很长时间才将linux kernel邮件列表订阅成功,与大家分享 简单的方法附在最后,前面的方法不知道为什么不成功 使用163,sina,qq,hotmail邮箱均失败 方法 1 用邮箱向majo ...
- 【Linux开发】如何查看Linux kernel的内置模块驱动列表和进程ID
[Linux开发]如何查看Linux kernel的内置模块驱动列表和进程ID 标签:[Linux开发] 命令: cat /lib/modules/$(uname -r)/modules.builti ...
- 订阅Linux内核邮件列表
订阅Linux内核邮件列表 参考自:http://www.wowotech.net/linux_application/lkml.html 一.简介 The Linux kernel mailing ...
- 订阅Linux的邮件列表
学习Linux内核可以订阅Linux的邮件列表,订阅的方法如下: 1.登录网站:http://vger.kernel.org/vger-lists.html 2.选择用户感兴趣的Linux内核模块,例 ...
- 如何订阅Linux内核邮件列表
1. 发送subscribe linux-kernel xxx@gmail.com 到 majordomo@vger.kernel.org 2. 几十分钟后会收到2封邮件,其中一封 Someone ( ...
- 订阅linux邮件列表,怎么订阅Linux内核邮件列表
官方页面: As of now, subscription support is not handled at the web! 从现在开始,订阅操作不在通过web方式操作啦. All VGER li ...
- 订阅Linux kernel邮件及可能遇到的问题
订阅Linux kernel的邮件,也就是将自己的邮箱加入对应的邮件Group中,这是一个自动处理的流程,给majordomo@vger.kernel.org发送命令,请求加入对应的邮件group中, ...
- Linux内核邮件列表发送和回复格式研究
1.使用的内容格式为[纯文本],这个在国内的客户端已经没有了,大公司只有微软的outlook. 2.回复引用时,使用符号[>]作为标记,且回复的内容不能在最顶部,应该在最下面.参考:http:/ ...
最新文章
- 从程序媛到启明星辰集团云安全总经理,郭春梅博士揭秘云时代安全攻防之道...
- 深度神经网络(DNN)损失函数和激活函数的选择
- bzoj 2756 [SCOI2012]奇怪的游戏 二分+网络流
- 23亿美元大市场,NFV做好了准备吗?
- android中获取打气筒的几种方式
- attack lab 做不出来_让人念念不忘的香油,到底是怎么做的,我们自己就是做不出来?...
- html中的css样式表达式,CSS表达式
- 《今日简史》谈到的生物技术和人工智能技术
- 新手指南:到国外域名注册商注册域名
- 温言QQ全能网络工具箱
- 假设今天你开了一家经营生鲜品类的淘宝店,你怎么获取第一批用户, 并能够运营起来
- R 中关闭科学记数法
- 2019复旦大学计算机分数线,复旦大学2019年各省各批次录取分数线和招生专业
- 小米mix2s android8,小米MIX2S谷歌Pixel安卓刷机包(完整系统固件升级包安卓8.1)
- ESP8266实战(一)--wifi时钟的制作
- 用java做一个最小的操作系统内核2.
- iOS客户端公共WIFI解决方案
- 王炸!!Spring 终于对 JVM 动手了…
- php http长轮询,http长轮询短轮询
- 【洛谷OJ】P1862—输油管道问题