如何获取上游内核
在了解Linux内核的各种衍生版本后,我们首先尝试一下获取上游内核(upstream kernel)。Linus树、linux-next树,以及绝大部分的开发树都可以从http://www.kernel.org/获取(见图1-1)。
Linux内核的开发都是在最新版上游内核的基础上进行的。其中最重要的就是作为所有树的根源的Linus树。下面介绍获取Linus树的两种方法。
图 1-1 http://www.kernel.org
下载tar文件
获取Linus树最简单的方法就是从kernel.org下载tar文件。2.6内核所有发布版本的tar文件都能够从http://www.kernel.org/pub/linux/kernel/v2.6/获取。
这里有很多种类的文件。例如,表1-1所示的是与2.6.38对应的文件,可以从中随意选择一个下载。无论下载的是哪个,解压缩后或打补丁后的tar文件都是一样的。
除这些以外,还有一些文件名后缀为“.sign”的文件。这些文件都是用来确保各个文件兼容性的GnuPG签名。可以在验证下载是否正常时使用这些文件。
小贴士:使用GnuPG来检测兼容性时可以执行下列命令。
$gpg—keyserver wwwkeys.pgp.net—recv-keys 0x517DoFoE
$gpg-verify<签名文件><下载的文件>
详细内容请参考http://www.kernel.org/signature.html。
rc版或者更新更为频繁的快照tar文件存放在子目录下。主要的子目录如表1-2所示。
使用Git
Linus树和开发树通过修复各种补丁而不断更新。在最新的树中进行开发是最基本的原则,因此为了保持最新,必须每天多次下载tar文件修复补丁。这项工作是非常花费精力的,但是也不需要担心,因为可以用Git来解决。
Git是Linux内核所采用的SCM(Source Code Management system),具备分散开发所需的多个功能。Git命令更为详细的使用方法将在Hack#4中介绍,这里就先了解一下怎样使用Git命令来获取最新的Linus树。要在适当的目录下执行下列命令,但是在此之前必须注意的是,因为这条命令会将包括修改记录在内的所有仓库数据复制到本地磁盘中,所以必须要有1GB以上的磁盘容量。在操作时请注意磁盘和网络的容量。
$git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
命令执行完成后,应该就会生成一个标题为linux-2.6的目录。这就是包括修改记录在内的Linus树的最新、最完整的副本。
为了让手头的源码树时刻保持最新,需要在源码树的根目录(linux-2.6)下执行下列命令。
$git pull
如果没有对手头的源码树代码作出任何修改,该命令会使得手头的源码树与Linus树的最新状态保持一致。当使用git clone进行复制时,git命令会记住复制源目录的URL,因此执行git pull时不需要指定URL。
使用git命令还可以获取除Linus树以外的开发树的最新版本。在http://git.kernel.org/上能看到放置在kernel.org下的其他开发树一览表。如果希望开发或者追踪各领域最新开发情况,也可以从这里找到开发树的URL。