linux内核开发_Linux 内核的代码仓库管理与开发流程简介

3c533295282c4eafcb514212f9a048f8.gif

作者简介:老 U,致力于开源自由软件推广。

原创雄文:由泰晓读者投递的各类社区原创好文。

版权声明:本文最先发表于 “泰晓科技” 微信公众号,欢迎转载,转载时请在文章的开头保留本声明。

入门 Linux 内核学习时,首先得先了解一下 Linux 这个项目的源码仓库和版本的发布策略还是有必要的,今天就给大家简单掰一下,有什么说得不到位的,敬请拍砖补充。

Linux 的源码仓库主要有下面三个:

1. linux 仓库

f619bf80f87e4e3959a7b6d4d32acc1e.png

Linus Torvalds

这个一般指的是 Linus Torvalds 本尊亲自维护的那个仓库。该仓库的官方位置在:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/。大部分情况下我们访问的都是它的镜像,其中 “第二官方” 的镜像在 github,地址是:https://github.com/torvalds/linux。对于国内的朋友,推荐访问国内的 mirror,这里我就不列举了,大家网上搜搜。

这个仓库只有一个 master 分支,该分支由 Linus Torvalds 维护,对于不同的版本的内核是采用打 tag 的方式进行发布的,一般在发布一个正式版本之前,都会先发布一系列的候选(Release Candidate, 简称 RC)版本,比如 v5.4 最终版发布之前先发布了 v5.4-rc1 到 v5.4-rc8 共计 8 个 RC 版本,rc 值越大越接近最终版本,每个大版本,譬如 5.3 到 5.4 之间的发布周期目前稳定在大致在两个月左右。linux 仓库 中的 master 即我们常说的 mainline。

$ git tag | grep 5.4
v5.4
v5.4-rc1
v5.4-rc2
v5.4-rc3
v5.4-rc4
v5.4-rc5
v5.4-rc6
v5.4-rc7
v5.4-rc8

从 3.0 之后的版本,mainline 中的内核版本号只涉及主版本号和次版本号两个:x.y。我们会看到形如 x.y.z 版本的内核一般都是指 stable 版本,这也是接下来要给大家介绍的第二个仓库:linux-stable 仓库

2. linux-stable 仓库

ebdb7cb78c164a9fa2721e61e5f753cd.png

Greg Kroah-Hartman

这个仓库的官方位置在 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/。其 “第二官方” 的镜像在 github,地址是:https://github.com/gregkh/linux。其主要维护者是 Linux 社区的另一位大佬 Greg Kroah-Hartman。

linux-stable 仓库 基本上是前面介绍的 Linus 维护的 linux 仓库 的克隆,但在其基础上又创建了许多新的分支(branch),比如 linux-5.6.y 分支,用这些分支来维护 5.6 版本 stable 内核,linux-stable 仓库linux 仓库 的合作关系如下(以 5.6 版本为例):

  • 当 Linus Torvalds 在其维护的 linux 仓库 中发布了 5.6 版本后,commit 节点被 Linus 标记(tag)为 5.6,此时 Greg 就会从 linux 仓库 的 master 上 pull 一份过来,同时 checkout 出来一个分支 linux-5.6.y

  • 后续 linux-5.6.y 分支的维护将由 linux-stable 仓库 维护者进行维护,内核版本号变为 5.6.y,这里的 y 从 1 开始以此递增,也就是说 stable 版本会在主版本和次版本之后再多一个版本号,用来记录稳定版的更新序列号。

  • 自此之后 linux-5.6.y 分支将和 Linus 维护的 mainline 分支分道扬镳,mainline 继续新特性的开发,stable 则只会合入特定的一些 patch 以保证稳定性,并且定期打上 tag:譬如 v5.6.1v5.6.2 ......

  • 某些 Linux 版本会被宣布为长期维护(Long Term Support,简称 LTS)版本,譬如 5.4,则于其对应的 stable 分支  linux-5.4.y 会得到额外的垂青,也就是说该分支的维护时间会较长,多达几年,所以 v5.4.y 的 y 值会变得很大。

3. linux-next 仓库

29f66603b7cfa2d9995d855170444db3.png

Stephen Rothwell

linux-next 仓库 用于存放那些希望在下一个 merge 窗口被合入 mainline 的补丁代码。由 Stephen Rothwell 维护。官方原始仓库位置在:https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Linus 一般会在某个正式版本(譬如 v5.4)发布的同时就会为下一个版本(譬如 v5.5)开启一个 merge windows,所谓的窗口期你可以理解成一段时间,大概在两周左右,在此期间,linux 仓库 的 master 分支会从 linux-next 仓库 以及各个子模块的维护者处接收 patch 并合入 master,当合入一些 patch 后,就会形成下一个版本的候选版本(这里是 v5.5-rc1),然后一般会经历多个 RC 版本,等待时机成熟后就会正式发布下一个版本的 Mainline 内核(这里是 v5.5)。

所以说 linux-next 仓库 已经成为内核开发过程中不可或缺的一部分;也就是说,如果你希望你的补丁进入 mainline 内核,特别是进入下一个主线版本,那你就得在相应的合并窗口打开之前的一段时间争取将你的补丁被接纳进入 linux-next 仓库,当然这要取决于你的能力外加一点点运气 ;)。

以上就是和 Linux 相关的三个主要开发代码仓库,大家搞明白了么?

参考文献

  • Kernel 官网有关 release 分类的说明: https://www.kernel.org/category/releases.html
  • Working with linux-next: https://www.kernel.org/doc/man-pages/linux-next.html
  • The linux-next and -stable trees: https://lwn.net/Articles/571980/

奖金+赠书+星球会员,"泰晓科技" 社区推出三大举措加速原创孵化,速速看过来(请点击下方图片链接):

997fdf0d245c05057eeaef7bd1a6a296.png

c1f6d18fc52ff970e1059875d8f962f8.png

扫 码 关 注 我 们   

再 + 好 友 tinylab

进 泰 晓 技 术 群

泰  晓  科  技

1c3a68f857e3e5e9d971bab52d081afd.png

f57202ec36bc37cffe650581a4ea44d8.png关注“泰晓科技”!点“在看”

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

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

相关文章

Java中八种基本数据类型占用字节空间总结

一、Java四大数据类型分类 1、整型 byte 、short 、int 、long 2、浮点型 float 、 double 3、字符型 char 4、布尔型 boolean 二、八种基本数据类型 三、数据类型详细介绍 整型(byte、short、int、long) 虽然byte、short、int、long 数据类型…

String类能被继承吗,为什么?

不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的。 Java对String类的定义: final修饰符的用法: 1.修饰类 当用final修饰一个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为…

webstorm 不知道手贱点了什么,有时候会自动删除分号

https://segmentfault.com/q/1010000009184137?_ea1845711 webstorm 不知道手贱点了什么,有时候会自动删除分号 webstorm javascript 繁忙的耗子 4月25日提问关注 4 关注收藏 0 收藏,470 浏览问题对人有帮助,内容完整,我也想…

mysql中的所有类型_mysql中常用的数据类型

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策&#xff0c…

final和static的区别

很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。看下面这个例子 每次打印的两个j值都是一样的,而i的值却是不同的。从这里就可以知道final和static变量的区别了。…

用Visual C#创建Windows服务程序

用Visual C#创建Windows服务程序一.Windows服务介绍:Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C功底。然而…

清除掉AD的相关属性!

今天有朋友问我怎么清除掉AD 的相关属性,由于他们的用户都设置了登录到属性,这样我们的用户就仅仅能登陆他须要设置的计算机。对于兴许规则的变更的时候,我们的管理员配置起来就比較复杂。他须要非常长的时间去一个一个清除掉相关的属性。这对…

《Ext详解与实践》节选:自定义单元格的显示格式

有时候,需要在Grid中显示一个链接,或根据数字的大小显示不同的颜色,又或者使用固定格式显示记录编号等,这就需要自定义单元格的显示格式。在Ext的Grid可以很容易的实现自定义单元格的显示格式。在定义Grid的ColumnModel的时候&…

正则化线性回归

1. 模型的欠拟合、过拟合无论是回归问题还是分类问题都可能存在模型的欠拟合和过拟合的情况。下图是回归问题中的例子:第一个模型欠拟合,第二个模型刚好拟合,第三个过拟合。下图是分类问题中的例子:第一个模型欠拟合,第…

Photoshop的批处理(有海量的数码照片,想传上网的话就看下)

每次狂按快门的结果就是得到海量的数码照片,想传上网的话,最起码也要做一些尺寸方面的处理,这么多照片,真的要一张一张处理吗?Photoshop自有好用的Action工具帮我们做批处理。 一、前期准备 在图片所在文件夹里添加一个…

推荐系统中的矩阵分解演变方式

推荐算法主要分为基于内容的算法和协同过滤. 协同过滤的两种基本方法是基于邻居的方法(基于内容/物品的协同过滤)和隐语义模型. 矩阵分解乃是实现隐语义模型的基石.矩阵分解依据用户对物品的评分, 判断出用户和物品的隐语义向量, 然后依据用户和物品的隐语义向量来进行推荐.推荐…

Java中Class.forName和 ClassLoader.loadClass()区别

一、类加载过程 装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象; 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选…

变量在内存中的值[c][code]

#include <stdio.h>main() { /*%d所能输出的范围*/printf("%d \n", 0xffffffff); //%d所能输出的32位整数, 最大负整数printf("%d \n", 0x7fffffff); //%d所能输出的32位整数, 最大正整数/*单双精度浮点变量a,b,c,d在内存中的地址和内容 * …

Servlet 生命周期

Servlet 生命周期&#xff1a;Servlet 加载--->实例化--->服务--->销毁。init&#xff08;&#xff09;&#xff1a;在Servlet的生命周期中&#xff0c;仅执行一次init()方法。它是在服务器装入Servlet时执行的&#xff0c;负责初始化Servlet对象。可以配置服务器&…

java mysql防重复提交_防止数据重复提交的6种方法(超简单)!

有位朋友&#xff0c;某天突然问磊哥&#xff1a;在 Java 中&#xff0c;防止重复提交最简单的方案是什么&#xff1f;这句话中包含了两个关键信息&#xff0c;第一&#xff1a;防止重复提交&#xff1b;第二&#xff1a;最简单。于是磊哥问他&#xff0c;是单机环境还是分布式…

HttpRequest 类

关于此类的介绍&#xff1a;查看HttpRequest类 点击查看&#xff1a;HttpRequest中方法的封装 跟这个类对应的HttpResponse类 定义&#xff1a;使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。 public sealed class HttpRequest 注&#xff1a;本篇主要介绍可以根据…

TreeMap是按照key的字典顺序来排序

一、TreeMap TreeMap 默认排序规则&#xff1a;按照key的字典顺序来排序&#xff08;升序&#xff09; 字典排序&#xff08;lexicographical order&#xff09;是一种对于随机变量形成序列的排序方法。即按照字母顺序&#xff0c;或者数字小大顺序&#xff0c;由小到大的形成…

Fireflow 终于发布啦!

Fireflow终于发布啦。虽然离工程应用还有一段距离&#xff0c;但是我还是想放出来让大家看看&#xff0c;听听大家的意见和建议。Fireflow的特点是模型和engine理论严密&#xff0c;因此可以在设计器中模拟流程的执行。另外Fireflow的系统设计也还可以的~_^文档还很欠缺&#x…

我为什么fuck GFW同时FUCK 开心网

我很生气&#xff0c;后果很严重&#xff0c;你要问我为什么&#xff0c;那是因为GFW 屏蔽了一个对我有用的站点[url]www.github.com[/url]&#xff0c; 什么玩意&#xff08;省略1亿遍fuck 他们的话&#xff09;。 开心网删除我的日记&#xff0c; 并没用通知过我&#xff0c…