如何进行linux内核开发,2. 开发流程如何工作 — The Linux Kernel documentation
2.1.总览¶
内核开发人员使用一个松散的基于时间的发布过程,每两到三个月发布一次新的主要
内核版本。最近的发布历史记录如下:
4.11
四月 30, 2017
4.12
七月 2, 2017
4.13
九月 3, 2017
4.14
十一月 12, 2017
4.15
一月 28, 2018
4.16
四月 1, 2018
每4.x版本都是一个主要的内核版本,具有新特性、内部API更改等等。一个典型的4.x
版本包含大约13000个变更集,变更了几十万行代码。因此,4.x是Linux内核开发的前
沿;内核使用滚动开发模型,不断集成重大变化。
对于每个版本的补丁合并,遵循一个相对简单的规则。在每个开发周期的开始,“合并
窗口”被打开。当时,被认为足够稳定(并且被开发社区接受)的代码被合并到主线内
核中。在这段时间内,新开发周期的大部分变更(以及所有主要变更)将以接近每天
1000次变更(“补丁”或“变更集”)的速度合并。
(顺便说一句,值得注意的是,合并窗口期间集成的更改并不是凭空产生的;它们是
提前收集、测试和分级的。稍后将详细描述该过程的工作方式)。
合并窗口持续大约两周。在这段时间结束时,LinusTorvalds将声明窗口已关闭,并
释放第一个“rc”内核。例如,对于目标为4.14的内核,在合并窗口结束时发生的释放
将被称为4.14-rc1。RC1版本是一个信号,表示合并新特性的时间已经过去,稳定下一
个内核的时间已经开始。
在接下来的6到10周内,只有修复问题的补丁才应该提交给主线。有时会允许更大的
更改,但这种情况很少发生;试图在合并窗口外合并新功能的开发人员往往会受到不
友好的接待。一般来说,如果您错过了给定特性的合并窗口,最好的做法是等待下一
个开发周期。(对于以前不支持的硬件,偶尔会对驱动程序进行例外;如果它们不
改变已有代码,则不会导致回归,并且应该可以随时安全地添加)。
随着修复程序进入主线,补丁速度将随着时间的推移而变慢。Linus大约每周发布一次
新的-rc内核;一个正常的系列将在-rc6和-rc9之间,内核被认为足够稳定并最终发布。
然后,整个过程又重新开始了。
例如,这里是4.16的开发周期进行情况(2018年的所有日期):
一月 28
4.15 稳定版发布
二月 11
4.16-rc1, 合并窗口关闭
二月 18
4.16-rc2
二月 25
4.16-rc3
三月 4
4.16-rc4
三月 11
4.16-rc5
三月 18
4.16-rc6
三月 25
4.16-rc7
四月 1
4.16 稳定版发布
开发人员如何决定何时结束开发周期并创建稳定的版本?使用的最重要的指标是以前
版本的回归列表。不欢迎出现任何错误,但是那些破坏了以前能工作的系统的错误被
认为是特别严重的。因此,导致回归的补丁是不受欢迎的,很可能在稳定期内删除。
开发人员的目标是在稳定发布之前修复所有已知的回归。在现实世界中,这种完美是
很难实现的;在这种规模的项目中,变量太多了。有一点,延迟最终版本只会使问题
变得更糟;等待下一个合并窗口的一堆更改将变大,从而在下次创建更多的回归错误。
因此,大多数4.x内核都有一些已知的回归错误,不过,希望没有一个是严重的。
一旦一个稳定的版本发布,它正在进行的维护工作就被移交给“稳定团队”,目前由
Greg Kroah-Hartman组成。稳定团队将使用4.x.y编号方案不定期的发布稳定版本的更
新。要加入更新版本,补丁程序必须(1)修复一个重要的bug,(2)已经合并到
下一个开发主线中。内核通常会在超过其初始版本的一个以上的开发周期内接收稳定
的更新。例如,4.13内核的历史如下
九月 3
4.13 稳定版发布
九月 13
4.13.1
九月 20
4.13.2
九月 27
4.13.3
十月 5
4.13.4
十月 12
4.13.5
…
…
十一月 24
4.13.16
4.13.16是4.13版本的最终稳定更新。
有些内核被指定为“长期”内核;它们将得到更长时间的支持。在本文中,当前的长期
内核及其维护者是:
3.16
Ben Hutchings
(长期稳定内核)
4.1
Sasha Levin
4.4
Greg Kroah-Hartman
(长期稳定内核)
4.9
Greg Kroah-Hartman
4.14
Greg Kroah-Hartman
为长期支持选择内核纯粹是维护人员有必要和时间来维护该版本的问题。目前还没有
为即将发布的任何特定版本提供长期支持的已知计划。
如何进行linux内核开发,2. 开发流程如何工作 — The Linux Kernel documentation相关推荐
- Linux内核构建与开发
Linux内核构建与开发 rtoax 2021年3月 1. Linux 内核的构建 1.1. 介绍 我不会告诉你怎么在自己的电脑上去构建.安装一个定制化的 Linux 内核,这样的资料太多了,它们会对 ...
- Android系统 linux内核按键驱动开发
Android系统 linux内核按键驱动开发 前言 刚入门的小白,在csdn的帮助下完成了第一个按键驱动,特写此文记录学习并分享给有需要的人. 1.修改设备树.dts 我是用的开发板是rp-rk32 ...
- linux内核下网络驱动流程,基于Linux内核驱动的网络带宽测速方法与流程
本发明涉及一种测速方法,尤其是一种网络带宽测速方法. 背景技术: :电信运营商为客户提供一定带宽的Internet接入:为了检验带宽是否达标,一般均由客户使用个人电脑在网页上直接测速.但是随着智能网关 ...
- Linux内核网络数据包发送(四)——Linux netdevice 子系统
Linux内核网络数据包发送(四)--Linux netdevice 子系统 1. 前言 2. `dev_queue_xmit` and `__dev_queue_xmit` 2.1 `netdev_ ...
- 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》...
优化Linux内核参数/etc/sysctl.conf sysctl <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...
- win10支持linux内核,Win10将允许您加载自定义Linux内核
微软正在为Win10添加一个Linux内核,以支持Linux的Windows子系统.但是,猜测一下:你不必使用微软的Linux内核.您可以构建自己的自定义Linux内核供Windows使用. 此功能是 ...
- debian 编译linux内核源码,安装debian总结以及编译linux内核
1. 安装debian 使用unetbootin(http://unetbootin.sourceforge.net/)来创建启动盘,并且下载debian的基本包. 将磁盘进行压缩操作,并且保留出一个 ...
- linux内核led驱动开发,从Linux内核LED驱动来理解字符设备驱动开发流程
目录 博客说明 开发环境 1. Linux字符设备驱动的组成 1.1 字符设备驱动模块加载与卸载函数 1.2 字符设备驱动的file_operations 结构体中的成员函数 2. 字符设备驱动--设 ...
- zedboard移植linux内核,[干货]手把手教你用Zedboard学习Linux移植和驱动开发
作者:殷建飞 本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计 ...
最新文章
- 用动态实现扩展TVM
- python语言的主要网站是_python语言主要是做什么的
- php获取循环,PHP循环获取GET和POST值的代码
- Matlab字符串函数
- javascript注意点(1)
- Apache应用实例:建立yum服务器
- 机器学习均方误差_机器学习:均方误差和回归线简介
- ADMT3.2域迁移之Server2003至Server2012系列(五)添加域管理员权限
- OpenGL EGL GPU工作流程理解(十四)
- ES6与ES2015、ES2016以及ECMAScript的区别
- 浅谈“如何学习编程——学会用编程软件编程”
- Java与网络调试助手TCP通信
- linux 命令之(2)grep
- 在线破解hash的优秀网站
- 数据库表设计 基本思路
- 太原今年实施一批大数据重大项目
- 基督信仰与电脑软件 随笔
- P9065 [yLOI2023] 云梦谣 题解
- 稀疏矩阵的十字链表存储表示和实现(第五章 P104 算法5.4)
- 使用Anaconda下载工具包