LKD 3rd 读书笔记——第1章/Linux Kernel Versions

Linux Kernel Versions

Linux内核有两种口味:稳定版和开发版。稳定版是产品级的发行版,适合大范围地布署。发布新的稳定版内核,通常只是为了修复Bug或支持新的驱动。与此不同的是,几乎任何变化都会带来开发版的版本变化。当开发者尝试新的解决方案时,内核代码基的变动通常是剧烈地。

 

Linux内核使用简单的命名体系来区分稳定版和开发版(见Figure 1.2)。Linux内核的版本号由三个或四个用圆点分隔的数字组成。第一个数字是主发行号,第二个是次发行号,每三个是修订号,可选的第四个数字是稳定号。次发行号也用来判断内核是稳定版还是开发版,偶数代表稳定版、奇数代表开发版。例如2.6.30.1就表示稳定版,这个版本的主发行号为2,次发行号为6,修订号为30,稳定版号为1。前两个数字描述“内核系列”——在这个例子中,指2.6系列的内核。

 

内核开发由若干阶段组成。起初,内核开发者们从事新特性的开发,并且混乱随之而来。随着时间的推移,内核变得成熟,最后这些新特性被宣布冻结,此时,Linus不会再接受新的特性。然而,完善现有特性的工作,可以继续进行。当Linus认为内核趋近于稳定时,代码被冻结,只有修复bug的代码被接受。此后不久(希望如此),Linus发布新稳定版系列的第一个版本。例如,开发版1.3系列变为稳定版2.0系列,2.5系列变为稳定版2.6系列。

 

在给定的内核系列之内(如2.6系列),Linus发布新的内核时,只改变版本的修订号。例如,2.6系列的第一个版本为2.6.0,第二个版本为2.6.1。修订版包含bug修复、新驱动、以及新特性,但相邻的两个修订版——例如2.6.3和2.6.4——之间的差别,是微小的。

 

以上的开发流程一直持续到2004年。在2004年,在受邀模式(只有邀请的人才能参加)的内核开发者首脑会议里,负责组装内核的开发人员决定延长2.6系列内核,并延迟引入2.7开发版系列。理由是2.6系列的内核,已得到很好的认可、稳定并且足够成熟,以至于引入欠稳定的特性显得没有必要。这条决定被证明是明智的,随后的几年已经证明2.6系列是成熟和能干的产品。在写作本书的时候,2.7系列的开发版仍没有出来,看起来也不太可能出来。取而代之,每个2.6系列的修订版的开发周期变得更长,每一次修订版的发布被看作是迷你的开发版系列。Andrew Morton,Linux的二把手,已经改变他的2.6-mm tree的意图——曾用于内存管理相关的测试环境——变为通用的测试环境。不稳定的修改,进入到2.6-mm,当它成熟时,才进入2.6系列的迷你开发版。因此,在最近几年里,每个2.6系列——例如2.6.29——都会花上几个月的时间,带来了与它的前辈显著的变化。这种“迷你型的开发系列”被证明更加成功,既保持了高水平的稳定性也能继持引入新特性,这种开发模式在未来一段时间内应该不会改变。的确,在内核开发者中已经达成了共识——这种新的发布流程会无限期的延续。

 

为了弥补发布频率的减少。内核开发者们引入了前述的稳定号。这些稳定号(指2.6.32.8中的8)包括了重大的bug修复,通常是从更新的修订版(在这个例子中,2.6.33)中向后移值而来(即把在2.6.33版中发现并修复的bug补丁程序,移值到2.6.32版中,因为在发布2.6.32版时并没有发现这些bug)。采用这种方式,前面发行的版本仍然可以受到关注,并专注于提高稳定性。

展开阅读全文

没有更多推荐了,返回首页