开发流程
------
Linux内核开发流程当前包括一些主内核分支,和很多不同的子系统专有的内核分支。它们是:
- 主 2.6.x 内核树
- 2.6.x.y -stable 内核树
- 2.6.x -git 内核补丁
- 2.6.x -mm 内核补丁
- 子系统专有内核树和补丁
2.6.x 内核树
-----------
2.6.x 内核树是有Linus Torvalds维护的,可以在kernel.org的pub/linux/kernel/v2.6目录里找到。它的开发流程是这样的:
-当一个新的内核发布之后,一个为期两个星期的窗口打开,在这段时间里维护者可以提交大的补丁给Linus,通常是已经在-mm内核中存在了一定时间的补丁。推荐的提交补丁的方式是通过git(有关git的更多信息可以在http://git.or.cz/找到),但是普通的补丁也是可以的
-两个星期之后一个-rc1内核发布,然后现在只可以再加入不会为内核添加新功能的补丁,因为那样的补丁可能会影响这个内核的稳定性。请注意这个时候一个整的新驱动(或者文件系统)可以被接受。因为只要这个变动是自成一体的并且不影响它之外的代码的话,就不会有产生回归的危险。在-rc1发布之后,git可以用来发送补丁给Linus,但是这些补丁也需要发到一个公开的邮件列表里以备审查。
- 当Linus确信当前的git(内核代码管理工具)树已经处于一个合理的健全状态,足够测试时,一个新的-rc就会发布了。目标是每周发布一个新的-rc内核。
- 这个过程将会持续到内核被认为可以发布为止,整个流程会持续大概6个星期。
Andrew Morton在linux-kernel邮件列表里写的有关内核发布的一句话值得提一下:
“没有人知道什么时候一个内核会发布,因为它发布的依据已经掌握的bug状态,而不是事先设想好的一个时间线。“
2.6.x.y -stable 内核树
---------------------
有四个数字版本号的内核是-stable内核。他们包含一些相对较小的和重要的修正。这些修正针对的是在一个给定2.6.x内核中发现的安全问题或者重大的回归。
对于想使用最新的稳定内核并且对于帮助测试开发/实验版本不感兴趣的用户,这是推荐使用的版本。
如果没有2.6.x.y版本,那么最高版本号的2.6.x内核是当前稳定内核。
2.6.x.y由“stable”团队<stable@kernel.org>维护,每周发布一次。
内核树里的文件Documentation/stable_kernel_rules.txt描述了什么样的改动可以被-stable树所接受,以及发布流程是怎样工作的。
2.6.x -git 补丁
--------------
这些是在git仓库里管理的Linus内核树的每日快照。这些补丁每天发布一次,代表Linus树的当前状态。它们比-rc内核更具实验性质,因为它们是自动生成的,以至没有人曾经瞟上一眼来检查它们是否处于健全状态。
2.6.x -mm 内核补丁
----------------
这些是Andrew Morton发布的实验性质的内核补丁。Andrew取得所有不同子系统的内核树和补丁,连同从linux-kernel邮件列表里拉过来的补丁,把它们融合在一起。这个树是新功能和补丁证明自己的场所。如果一个补丁在-mm里证实了自己的价值,Andrew或者子系统维护者就会把它提交给Linus,以求被收录于主线内核中。
强烈建议所有的新补丁在发送给Linus之前都先发到-mm树里测试一下。
打了此种补丁的内核不适用于追求稳定的系统中,运行它们比运行其他任何分支都更具冒险性。
如果你想帮助内核开发流程,请测试并使用这些内核发布,并在linux-kernel邮件列表里提供回馈,如果你发现任何问题的话,哪怕什么问题也没有。
在所有其他实验性质的补丁之外,这些内核补丁通常还会包含在发布时在主线-git内核中已经包含的改动。
-mm内核没有一个固定的发布计划,但是通常在每两个-rc内核发布间歇期会发布一些-mm内核(1到3个都很常见)。
子系统专有内核树和补丁
-----------------
一些不同的内核子系统开发者公布他们的开发树,这样其他人可以看到在内核的不同领域里正在发生什么。这些树都会被包含在-mm内核发布中。
下面是一些不同的内核树的列表:
git树:
- Kbuild 开发树, Sam Ravnborg <sam@ravnborg.org>
kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
- ACPI 开发树, Len Brown <len.brown@intel.com>
kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
- 块设备开发树, Jens Axboe <axboe@suse.de>
kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
- DRM 开发树, Dave Airlie <airlied@linux.ie>
kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
- ia64 开发树, Tony Luck <tony.luck@intel.com>
kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
- ieee1394 开发树, Jody McIntyre <scjody@modernduck.com>
kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394.git
- infiniband, Roland Dreier <rolandd@cisco.com>
kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
- libata, Jeff Garzik <jgarzik@pobox.com>
kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
- 网络驱动, Jeff Garzik <jgarzik@pobox.com>
kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
- pcmcia, Dominik Brodowski <linux@dominikbrodowski.net>
kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
- SCSI, James Bottomley <James.Bottomley@SteelEye.com>
kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
其他git内核树可以在http://kernel.org/git找到
quilt trees:
- USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de>
kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|