内核版本和系统(发行)版本

-- TOC --

Linux内核版本和Linux系统(发行)版本是有区别的。

内核版本

mainline,主线版本

rc,release candidate版本

mainline也被称为Linus树,属于Linux内核的最初创始人Linus Torvalds所管理。Linus树一直被认为是Linux内核源代码的根源,因此一旦其发布了新版本,其它的开发树就会将自己独特的开发成果移植到这个版本上,在此基础上再次进行开发。一旦发布新版本的Linus树,就会立即打开一个合并窗口(merge window),接受下一个版本需要做出的改变。合并窗口将开启大约两周的时间。合并窗口关闭后,就会发布下一版本的候选版本,即所谓的rc内核版本。从rc(release candidate)内核发布到下一版本发布的期间,是测试期,这一期间基本只接受bugfix。rc版内核每隔一周时间会依次推出rc1,rc2......当Linus判断其质量已经达到可以发布的水平时,就会作为新版本发布。基本上都在rc6到rc9左右时,就会发布新版本,也就是说Linux内核每隔2到3个月就会发布新版本。新版本发布后,又会打开下一个版本的合并窗口。

stable,稳定版本,主要是针对过去发布的内核版本进行bugfix,使其更加稳定可靠。

LTS(Long Term Support),长期支持版本。不是所有的stable版本都会成为LTS。选择linux内核,在功能满足的提前下,选择一个LTS,而且最后的那个版本号越大越好。

linux-next

原则上要添加新功能,或者进行安装配置时,首先要在linux-next树中进行测试,在确认各自之间可以兼容之后,再在合并窗口期,添加到Linus树即主线版本中。

还有更新频率更快的snapshot版本!每天更新1-2次。

***Linux内核版本的命名: ***

在 2.6.x 版本以前,kernel的版本有奇数和偶数之分,次版本为奇数表示发展中版本(development) 如2.5.xx,这种版本主要用在测试与测试新功能,次版本为偶数表示稳定版本 (stable) 如 2.6.xx,等到核心功能发展成熟后会加到这类版本中,提供使用者一个相对稳定的 Linux 作业环境平台。自 2.6.0(2003年12月)发布后,人们认识到,更短的发布周期将是有益的。自那时起,版本的格式为A.B.C.D,其中A,B,C,D代表:A和B是无关紧要的,C是内核的版本,D是安全补丁。自 3.0(2011年7月)发布后,版本的格式为3.A.B,其中A,B代表:A是内核的版本(mainline),B是安全补丁(stable)。而4.0(2015年4月)发布后,则延续3.A.B的命名格式,只是将主版号变更为4。现在主版本号是5!

linux3.0

查看内核版本的方法:

$ uname -r
5.14.14
$ cat /proc/version
Linux version 5.14.14 (xinlin@K) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1 SMP Tue Oct 26 10:20:53 CST 2021

mainline,stable有时也被称为upstream,上游版本!

系统(发行)版本

系统版本(或者发行版本)对应的是Linux发行版本,比如CentOS,Ubuntu等,都是不同的Linux发行版本。这些版本的版本号规则与Linux内核肯定不一样!而且,发行版本使用的内核也会再stable版本的基础上,进行一些修改。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:    20.04
Codename:   focal
# might be OK for all Linux Distribution
$ cat /etc/issue
Ubuntu 20.04.3 LTS \n \l

一般 uname -a 命令就能够看到内核版本和系统版本:

$ uname -a
Linux K 5.11.0-38-generic #42~20.04.1-Ubuntu SMP Tue Sep 28 20:41:07 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

内核版本后面的 -38 表示Ubuntu自己的内核补丁版本号,-generic 表示这是一个通用版本。

用git跟踪Linux内核版本

Linux官方的git repo地址:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git,最下面就是。

我自己git clone了一下,5.2G,从2.6.11.y开始的所有版本代码都有。有了这棵树,以后需要任何版本,checkout出来即可,查看最新代码,git pull就行。

本文链接:https://cs.pynote.net/sf/linux/sys/202110265/

-- EOF --

-- MORE --