Linus树

最具有代表性的源码树,应属Linux内核的最初创始人——Linus Torvalds所管理的Linus树。新版本Linux内核的发布,就意味着Linus树的源代码被贴上了新发布版本的标签。到2011年为止,Linux内核的版本号一直是用2.6.x这样的三个数字来表示的[1]。Linus树一直被认为是Linux内核源代码的“根源”,因此一旦其发布了新版本,其他的开发树就会将自己独特的开发成果移植到这个版本上,在此基础上再次进行开发。Linus树由于其“根源”的地位而称为主线(mainline)。

一旦发布新版本Linus树,就会立刻打开一个“合并窗口”(merge window),接受下一版本需要作出的改变。合并窗口将开启约两周时间。合并窗口关闭后,就会发布下一版本的候选版,即所谓的“rc内核”[2]。从rc内核发布后到下一版本发布的期间为测试期,这一期间基本只接受关于bugfix的修改。rc版内核每隔约一周时间会依次推出rc1、rc2……当Linus判断其质量已经达到可以发布的水平时,就会作为新版本发布。按照最近的实际情况来看,基本上在rc6~rc9左右就会发布新版本,也就是说Linux内核每隔2~3个月就会发布新版本。新版本发布后,又会打开下一版本的合并窗口,然后对rc版进行测试。Linux内核就是按照这样的周期来开发的。

小贴士:Linus树的内核由于完全没有任何华而不实的东西,因此称为“香草”(vanilla)内核或“库存”(stock)内核。

linux-next树

这是一个为发布将来的版本而积累新代码并进行测试的源码树,主要由Stephen Rothwell等人进行管理和运营。原则上要添加新功能或者进行安装配置时,首先要在linux-next树中进行测试,在确认各自之间可以兼容之后再添加到Linus树内。

stable树

这是一个主要只针对过去发布的内核版本进行bug修改,使其更加稳定的树,由Greg Kroah-Hartman、Chris Wright进行维护管理。这个树的版本号是在Linus树的版本号后面加一位数字,以2.6.x.y这样的4个数字来表示。针对某个Linus树版本的稳定(stable)版维护一般持续6个月左右,但也有持续更久的。

开发树

Linux内核可以说是各种功能的集合体。例如内存管理、文件系统、网络、各种设备驱动程序、CPU架构固有部分等。这些功能部分称为“子系统”,各子系统分别在不同的源码树中进行开发。在开发、修改过程中也有一些不属于特定子系统的内容,这些内容首先会被发送到Andrew Morton管理的mm树(准确地说是mmotm:mm on the moment,补丁包的缩写)。这样的源码树统称为“开发树”。

在各开发树中开发出的源代码在经过linux-next中的测试后再植入Linus树。

开发树的数量多如繁星。如果哪天你因为想要开发某个功能而在手边的源代码上进行了修改,这也可以说是一个“开发树”。

Linus树、开发树等作为所有树的根源,也称为“upstream”,即“上游”。但这是广义上的叫法,有时也仅指最上游的Linus树。

发布版内核

最后要介绍的是发布版内核(distribution kernel)。应该有很多人使用的都是作为Linux发布版的一部分发布的内核。这些来源于发布版的内核几乎都是在Linus树或stable树内核的基础上进行发布版特有的扩展和bug修改而得到的。像这样添加了发布版特有的修改,并作为发布版的一部分发布的内核,就称为“发布版内核”。

[1]Linux 2.6.39的下一版本将是Linux 3.0。

[2]rc是release candidate(发布候选)的缩写。