HACK #1 如何获取Linux内核(3)
Fedora
在Fedora中,内核源码是作为源码RPM(SRPM)提供的。使用yum-units包里所带的yumdownloader下载SRPM。此后要使用的yum-builddep也是yum-units包中所带的,所以如果事先没有安装,首先请安装这个工具包。
可以执行下列命令来下载内核的SRPM。$ yumdownloader --source kernel
在笔者的环境下,下载的是kernel-2.6.35.11-83.fc14.src.rpm。
如前文所述,发布版内核都带有自身特有的补丁。SRPM是将vanilla内核的源代码和补丁分开放置的,补丁在创建过程中被分配给vanilla内核的源代码。所以要获取发布版内核的源代码,就要完全执行RPM的创建过程,但并不完全执行。虽然每个SRPM在创建RPM时都需要用到不同的源码包,但只要执行下列命令,就能够安装创建Linux内核所需的所有源码包。这条命令请在root权限下执行。# yum-builddep kernel-2.6.35.11-83.fc14.src.rpm
安装SRPM需要执行下列命令。安装SRPM,就是指将所包含的文件解压缩。SRPM包含的文件将解压缩到在主目录下生成的rpmbuild的几个子目录下。
小贴士:生成rpmbuild目录的位置,是通过%_topdir这个rpm的宏变量来设置的。在以前的发布版中是在/usr/src/redhat下的生成,近来的版本是在/usr/lib/rpm/macros下创建:%_topdir %{getenv:HOME}/rpmbuild
直接在用户目录下生成。$ rpm kernel-2.6.35.11-83.fc14.src.rpm
RPM包的创建是通过rpmbuild命令进行的。本次操作的目的是获取内核的源代码,所以为了让命令结束前能给源代码修复补丁,应在rpmbuild命令中加上-bp选项。命令中的参数会赋予一个用来创建源码包的设置文件,即SPEC文件。$ cd~/rpmbuild/SPEC
$ rpmbuild 朾p kernel.spec
这时就会生成一个标题为~/rpmbuild/BUILD/kernel-2.6.35.fc14/linux-2.6.35.x86_64的目录,在这个目录下会生成发布版内核的源代码。
使用源代码来创建内核二进制文件的方法,请参考Hack #2。
Ubuntu
在Ubuntu或基于Ubuntu的Debian下,内核源代码是作为deb包提供的。首先,与其他的源码包一样用apt-get来执行安装。标题为Linux-source的源码包就是***的内核源码包的元包。# apt-get install linux-source
在笔者的环境下,到这一步就完成了linux-source-2.6.35的安装。
在安装内核源代码的deb包后,会在/usr/src下生成tar文件,只要将这个文件复制到适当的目录下并解压缩,就能够获取内核源代码。$ cp /usr/src/linux-source-2.6.35.tar.bz2~
$ cd
$ tar xjf linux-source-2.6.35.tar.bz2
关于创建内核二进制码的方法,同样请参考Hack #2。
【责任编辑:book TEL:(010)68476606】
点赞 0