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

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

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

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

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

1. linux 仓库

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.4v5.4v5.4-rc1v5.4-rc2v5.4-rc3v5.4-rc4v5.4-rc5v5.4-rc6v5.4-rc7v5.4-rc8

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

2. linux-stable 仓库

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 仓库

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/

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

扫 码 关 注 我 们

再 + 好 友 tinylab

进 泰 晓 技 术 群

泰  晓  科  技


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

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

  1. iso linux 内核版本号_Linux内核全面介绍

    Linux内核(kernel)和linux操作系统区别 Linux内核指的是一个提供硬件抽象层.磁盘及文件系统控制.多任务等功能的系统软件.一个内核不是一套完整的操作系统.通常我们所说的linux操作 ...

  2. linux操作系统原理_Linux内核分析-操作系统是如何工作的(二)

    linux操作系统的主要构架如图1所示,我们知道,操作系统是通过管理CPU进程.存储器.文件系统.设备驱动.以及网络接口等相关部分来工作的,我们这里主要是通过分析关于CPU的操作即进程的管理执行来分析 ...

  3. linux刷新磁盘_Linux内核Page Cache和Buffer Cache关系及演化历史

    在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘.这里提到的脏页(dirty ...

  4. linux 单步启动_Linux内核如何装载和启动一个可执行程序

    实验步骤: 1.先把menu删掉,在克隆一个,用test_exec.c覆盖掉test.c. 2.打开test.c.发现增加了一句MenuConfig. 3.打开Makefile,首先静态编译了hell ...

  5. linux c++开发_Linux/Windows下进行C/C++开发的差异

    1. 平台差异简介 Windows 和Unix是当前两大主流操作系统平台,基于C/C++的开发人员经常会面临这两个平台之间的移植的问题.Unix作为一个开发式的系统,其下有出现了很 多个分支,包括Su ...

  6. linux pjsip 编译_Linux下移植pjsip使用QT开发

    Linux下移植pjsip,使用QT开发 1.移植pjsip env:fedora14 arm-linuc-gcc:gcc version 4.5.1 (ctng-1.8.1-FA) #./confi ...

  7. 低代码开发-牛刀低代码和专业开发云 JNPF 3.4.5 旗舰版 /微服务、单体 、JAVA 和.net6版本

    牛刀 Low-Code低代码开发云:开发效率和专业能力,缺一不可.牛刀Low-Code低代码开发云,高效全栈开发.跨端App开发,自由发布,灵活部署.提供开发.测试.部署.运维的一体化支持,真正低代码 ...

  8. 低代码开发-牛刀低代码和专业开发云 JNPF 3.4 3.3 旗舰版 /微服务、单体 、JAVA 和netcore版本

    牛刀 Low-Code低代码开发云:开发效率和专业能力,缺一不可.牛刀Low-Code低代码开发云,高效全栈开发.跨端App开发,自由发布,灵活部署.提供开发.测试.部署.运维的一体化支持,真正低代码 ...

  9. 低代码开发-牛刀低代码和专业开发云 JNPF 3.4.5 3.4 旗舰版 /微服务、单体 、JAVA 和netcore版本

    牛刀 Low-Code低代码开发云:开发效率和专业能力,缺一不可.牛刀Low-Code低代码开发云,高效全栈开发.跨端App开发,自由发布,灵活部署.提供开发.测试.部署.运维的一体化支持,真正低代码 ...

最新文章

  1. Oracle游标学习笔记
  2. 原理+实战掌握SQL注入方法
  3. 最小生成树练习1(克鲁斯卡尔算法Kruskal)
  4. Spring下Redis的响应式编程
  5. 国内外优秀音视频博客
  6. JavaScript 编程精解 中文第三版 十六、项目:平台游戏
  7. 计算机博士专业学位,计算机博士
  8. UEditor上传文件大小超限,上传失败问题解决
  9. SSD掉电保护也是一门艺术
  10. 基于VTK的PACS系统的开发 心路历程2
  11. 交换机和路由器的关系
  12. eclipse的光标变粗,及其解决办法
  13. Android设备通过USB共享网络给OpenWrt路由器
  14. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个可拖动的拼图游戏动画效果~适合初学者~超简单~ |it前端开发
  15. respond.js IE8使用
  16. 计算机的外围设备简介
  17. 判断单链表成环与否?
  18. SecureCRT SecureFX
  19. 自助微信公众号客服提醒功能开发的实现
  20. EDMA SEED 例程

热门文章

  1. mongodb集群与分片的配置说明
  2. Fedora 20 安装后的一些事情
  3. 演示:EIGRP非等价负载均衡(故障分析与解决篇)
  4. 单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴
  5. C# 使用 Windows API 操作控件: SendMessage
  6. vxWorks下常用的几种延时方法
  7. c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
  8. 高级会计师计算机考试中级,会计师需要计算机等级考试吗
  9. 三丰三坐标编程基本步骤_三丰三坐标CRYSTA APEX S776
  10. vue跳转页面增加等待_vue跳转页面方法