Linux 内核版本命名在不同的时期有其不同的规范,我们熟悉的也许是 2.x 版本奇数表示开发版、偶数表示稳定版,但到 2.6.x 以及 3.x 甚至将来的 4.x ,内核版本命名都不遵守这样的约定。本文就简单总结一下关于 Linux 内核版本号那点事:

Linux 内核版本号命名四个不同的阶段

  1. 从内核第一个0.01 版本发布到 1.0 版本。接下来是 0.02, 0.03, 0.10, 0.11, 0.12 (第一个 GPL 版本), 0.95, 0.96, 0.97, 0.98, 0.99,最后才到 1.0。

  2. 1.0发布之后,直到2.6版本之前,命名格式为 “A.B.C”:

    • 数字 A 是内核版本号,版本号只有在代码和内核的概念有重大改变的时候才会改变,历史上有两次变化:

      • 第一次是1994年的 1.0 版
      • 第二次是1996年的 2.0 版
      • 2011年的 3.0 版发布,但这次在内核的概念上并没有发生大的变化
    • 数字 B 是内核主版本号,主版本号根据传统的奇-偶系统版本编号来分配:奇数为开发版,偶数为稳定版
    • 数字 C 是内核次版本号,次版本号是无论在内核增加安全补丁、修复bug、实现新的特性或者驱动时都会改变
  3. 2004年 2.6 版本发布之后,内核开发者觉得基于更短的时间为发布周期更有益,所以大约七年的时间里,内核版本号的前两个数一直保持是“2.6”,第三个数随着发布次数增加,发布周期大约是两三个月。考虑到对某个版本的bug和安全漏洞的修复,有时也会出现第四个数字。

  4. 2011年5月29号,Linus 宣布为了纪念Linux发布 20周年,在 2.6.39 版本发布之后,内核版本将升到 3.0 。Linux 继续使用在 2.6.0 版本引入的基于时间的发布规律,但是使用第二个数——例如在3.0发布的几个月之后发布3.1,同时当需要修复bug和安全漏洞的时候,增加一个数字(现在是第三个数)来表示,如 3.0.18。

其它补充

  • 内核版本命名第一次使用第四个数字是在 2.6.8 的 NFS 代码中出现一个严重的错误需要立即修复,然而还没有足够多的其它改变可以发布一个新的版本(也就是2.6.9),所以,2.6.8.1 发布了,仅仅修正了那个错误。直到 2.6.11,这种版本命名策略被官方正式采纳。接着,这种通过改变第四个数字来显示修复主要bug和安全补丁而发布新内核的做法,成为一种普遍的做法。

  • 在正式发布之前,一般都冠以“待发布”(release candidates)字样,通过在内核版本的普通数字之后添加后缀 “rc”。

  • 有些时候,版本号后面有类似于 “tip”这样的后缀,表明另一个开发分支,这些分支通常(但不总是)是一个人开始发起的。举例来说,“ck” 代表 Con Kolivas,“ac” 代表 Alan Cox 等等。有时,字母和内核建立分支的主要开发领域相关,例如“wl” 表示该分支主要测试无线网络的。同时,不同的发行版也会根据需要有自己的后缀。

4.0 版本什么时候发布?

2013年11月3日,Linus Torvalds宣布发布Linux 3.12,同时还讨论了Linux 4.0发布计划:他考虑在Linux 3.19 之后发布Linux 4.0,和Linux 3.0发布策略相同,4.0并不代表着巨大变化,他只是想避免3.x 的版本号超过20,因为小版本号记忆起来比较简单。

下面是他在内核开发邮件中的原文:

we're getting to release numbers where I have to take off my socks to count that high again. I'm ok with3., but I don't want us to get to the kinds of crazy numbers we had in the 2.x series, so at some point we're going to cut over from 3.x to 4.x, just to keep the numbers small and easy to remember. We're not there yet, but I would actually prefer to not go into the twenties, so I can see it happening in a year or so, and we'll have 4.0 follow 3.19 or something like that.

按照 Linus 的发布 4.0 的预期以及现在每一个多月就更新一个版本的频率,大概在一年之内内核版本就可以变成 4.x。

内核版本分类

在 Linux 内核官网上你会看到主要有四种类型的内核版本,下图为我在2013.11.13 在官网的截图:

  1. mainline 是主线版本,目前主线版本为 3.12。
  2. stable 是稳定版,由 mainline 在时机成熟时发布,稳定版也会在相应版本号的主线上提供 bug 修复和安全补丁,但内核社区人力有限,因此较老版本会停止维护,而标记为 EOL (End of Life)的版本表示不再支持的版本。
  3. longterm 是长期支持版,目前还处在长期支持版的有五个版本的内核,分别为 3.10、3.4、3.2、2.6.34、2.6.32,长期支持版的内核等到不再支持时,也会标记EOL

查看机器使用的内核版本号

我们安装了不同的 Linux 发行版,那么如何去查看该发行版使用的内核版本号呢? 我们可以使用命令 uname -r 来查看:

[root@archlab-server2 ~]# cat /etc/issue
CentOS release 6.4 (Final)
[root@archlab-server2 ~]# uname -r
2.6.32-358.6.1.el6.i686

我测试的机器使用的是 CentOS 6.4 的发行版,显示的内核版本为 2.6.32。

参考资料

Linux 内核版本命名的更多相关文章

  1. Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...

  2. 【2016-08-21】Linux内核版本编号规则简介

    我们已经了解可以使用下面的几天命令来查看Linux内核版本及Ubuntu发行版本的信息: uname -r uname -a cat /proc/version lsb-release -a 等等 可 ...

  3. 查看Linux内核版本命令

    一.查看Linux内核版本命令(两种方法): .cat /proc/version .uname -a 二.查看Linux系统版本的命令(3种方法): .lsb_release -a即可列出所有版本信 ...

  4. 1.3查看Linux内核版本

    1.目前Linux内核主要维护的三个版本:Linux2.4.Linux2.6和Linux3.x,Android使用的是Linux2.6:Linux3.x是最新推出的Linux内核版本: 2.查看Lin ...

  5. 查看LINUX发行商版本与LINUX内核版本

    查看LINUX发行商版本:[root@server-mysql ~]# cat /etc/issue Red Hat Enterprise Linux Server release 6.3 (Sant ...

  6. 快速升级openwrt的linux内核版本

    一.分析 要升级openwrt的linux内核版本,关键是要制作内核配置文件 二.内核配置文件制作方法 2.1当前openwrt对应的某个开发板有对应的内核配置文件,比如此时的openwrt的linu ...

  7. Linux内核版本

    在Linux中找到/usr/src/kernels/目录,该目录下面有一个系统内核文件 例如:2.6.32-431.11.2.el6.x86_64 Linux内核版本规则 Linux内核版本有三组数字 ...

  8. 查看Linux内核版本

    您可能因多种原因需要确切知道GNU / Linux操作系统上运行的内核版本. 也许您正在调试与硬件相关的问题,或者了解影响旧内核版本的新安全漏洞,并且您想知道您的内核是否易受攻击. 无论是什么原因,从 ...

  9. 转: linux内核版本本地版本号的检查——setlocalversion

    转载:http://blog.csdn.net/adaptiver/article/details/7225980 1.   引子 编译2.6.35.7 kernel版本的时候发现,"2.6 ...

随机推荐

  1. JavaScript之单例实战

    一.概述 所谓单例模式,顾名思义即一个类只有一个实例. 所以,当我们创建一个实例时,就必须判断其是否已经存在了这个实例,如果已经存在了这个实例,那么就返回这个已经存在的实例,无需再创建一个(单例模式嘛 ...

  2. plsql查询乱码问题解决

    步骤一:新建变量,设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,确定即可: 步骤二: 退出plsql,重新登陆plsql.输入sql语句,执 ...

  3. 使用F#开发ASP.NET Core应用程序

    .NET Core 里的F# 在.NET Core刚发布时,就已经添加了对F#的支持.但因为当时F#组件还不完整,而一些依赖包并没有放在Nuget上,而是社区自己放到MyGet上,所以在使用dotne ...

  4. LCS记录

    如题:求两个序列的最长公共序列.(如:"ABCBDAB"与"BCDB"最长公共序列为"BCDB")代码如下: #define MAX_SIZ ...

  5. Create an offline installation of Visual Studio 2017 RC

    Create an offline installation of Visual Studio 2017 RC ‎2016‎年‎12‎月‎7‎日                             ...

  6. GET command找不到

    谷歌的: On running a cronjob with get command, I was getting the following error. /bin/sh: GET: command ...

  7. 随机数(random)

    需求 Random rd=new Random(); 需要十以内的随机数  (0---10) System.out.println((int)((rd.nextDouble()*100)/10)); ...

  8. Mybatis配置一对多的关联关系(五)

    问题:是查询一个部门中的员工? 一.web项目构架 二.lib文件的jar 三.配置大小配置和该工具类 1大配置mybatis-config.xml <?xml version="1. ...

  9. spider RPC高级特性

    多租户 spider原生支持多租户部署,spider报文头对外开放了机构号.系统号两个属性用于支持多租户场景下的路由. 多租户场景下的路由可以支持下述几种模式: n  系统号: n  系统号+服务号( ...

  10. hideSoftInputFromWindow

    有的时候会碰到软键盘不好关闭,然后就去调界面代码,发现不行,说到底还是对软键盘不熟悉的原因,软键盘windowSoftInputMode有很多种 如果你默认的activity的模式为默认的,或者sta ...