开源社区很多人士对于Linux内核变动频仍感到担忧,认为在2.6版内核中频繁加入新功能,并过于专注于桌面应用,使内核变得臃肿。而Linux内核开发人员则认为这样做未尝不可,毕竟新功能是可选的,用户在编译内核时自由可自由选择需要的功能。所以内核版本管理成为了内核开发维护的关键之一。
Linux2.6发行版共有27149个不同补丁和600万行代码,开发周期长达680天。在2004年Linux内核峰会上,即稳定版内核发行约8个月之后,又增加了123万行代码,删除了849366行代码,这意味又有1/3的内核被改动了。Novell公司Linux开发人员格雷格·克洛·哈特曼(Greg Kroah-Hartman,《Linux设备驱动程序》一书的作者,他自1999年起成为Linux内核维护人员,主要负责USB、PCI、I2C、驱动核心和sysfs文件系统)认为这说明稳定版内核还有很多工作要做。于是开发社区作出决定,不升级内核版本,所有成熟的新功能和补丁都加入到2.6稳定版内核中。
哈特曼上周在一年一度的O'Reilly开源大会上介绍说,这一举措始于2004年Linux内核峰会,当时决定不将2.6版升级至2.7版,而是在2.6稳定版的基础上增加新功能和新补丁。
这样一来,现在一共有三个2.6版内核:第一个是稳定版内核2.6.x,由托沃兹负责维护;第二个是2.6-mm版内核,用于新技术加入稳定版前进行测试;第三个是2.6.x.y版内核(简称为.y版内核),它的用途是测试补丁。哈特曼说,按Linux的惯例,偶数版本的内核是稳定的,奇数版本的只是开发用的;但这种版本管理办法不受开发人员的欢迎,所以才有了-mm和.y版内核。
开源权威人士指出,独立设置专门测试新功能和修复Bug的两个内核版本,等新功能和补丁成熟后再把它们集成到稳定版的内核,这一分工已取得很大成效,内核开发人员和开源操作系统销售商为此都很满意。
Linux之父李纳斯·托沃兹(Linus Torvalds)向媒体表示,“我本人很满意。从渥太华举行的Linux内核峰会的反馈来看,绝大多数人也都很满意。”托沃兹介绍说,不把内核升级到2.7版而仍然维持在2.6.x版的最大好处是开发人员无需在2.6.x和2.7版之间移植补丁,这让开发人员很高兴。
Linux销售商也欢迎这一举措,因为这样一来升级是循序渐进的,而突然升级到更高版本会给他们带来很多麻烦。
. y版内核对于补丁有很严格的要求,如补丁代码不能超过100行,补丁修复的要是关键错误,而且要想加入稳定版需要经过内核维护人员全票通过。
2.6.11.y内核共有12个发行版,不过只增加了507行代码,删除了303行代码。哈特曼介绍说,“通过审核的补丁将加入稳定版,这种修复Bug的方式很不错。这些补丁都加到稳定版里了。当2.6.12版内核发布后,2.6.11.y就完成使命了。2.6.12.y到目前为止共有四个发行版,最新一个是上周五发布的。”2.6.12.y版目前只增加了169行代码,删除了199行代码。
但是内核开发人员还需要一个专门测试最新技术的版本,以用于测试、修改、升级以及移除新技术。因此开发社区就用2.6-mm版内核专门测试新技术。
这三个版本明确分工后显著改善了内核开发进程,托沃兹为此很高兴。他说,过去开发人员不得不同时维护开发版和非开发版的内核,这让他们很烦心。
不过托沃兹并未完全关死通向2.7版内核的大门,“如果我们的内核有了重大改进,会升级到2.7版的。”
然而,内核开发进程并非顺风顺水。托沃兹说道,“人们偶尔也会抱怨,他们担心2.6版内核加进很多新成果后会变得不稳定。但事实上维护内核开发的人员很多,我们工作量也很大。”有些人担忧会出现很多新问题,而他认为开发人员在维护内核稳定性方面做的很成功。
事实上,维护内核的稳定性在任何时候都是重中之重。当然发生错误也是难以避免的,托沃兹说,“稳定性是我们工作的中心,我们以前重写过几个内核版本的核心代码,后来变得很难管理。动了大手术后,再想回到稳定版就很难了。”
哈特曼同意托沃兹的说法,他认为2.4版做的很差,不得不决定在2.4.9发行版中重新编写整个虚拟管理器(virtual manager )。哈特曼回顾道,“2.5版内核也增加了很多新功能,当时所有销售商都急于尽早得到这一版本,但最终导致向下移植(back-port)。我们可不想再发生这种事了。2.4版内核不好,搞的一塌糊涂。“从事2.4版内核开发的开发人员共有961位,到了2.6版的时候人数上升到1000多。
哈特曼评价道,”李纳斯做的最重要的事就是更加信任子系统的维护人员,这有助于加快开发进程。“