# rpm -ivh kernel-2.6.9-42.EL.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target=i686 kernel-2.6.spec
遇到下面的错误
error: Bad exit status from /var/tmp/rpm-tmp.50919 (%prep)
 
记得之前安装过2.6.67-EL.src.rpm,
到/usr/src/redhat/SOURCES下删除所有文件,重来
重新运行rpmbuild 。这次过了。哈哈
 
在Linux AS 4的发行注记中找到解释:
当内核源码已经存在在内核的 .src.rpm 文件中时,为内核源码提供一个独立的软件包就变得没有必要。因此,红帽企业
Linux 4 不再包括 kernel-source 软件包。需要这些内核源码的用户可以在 kernel .src.rpm 文件中找到。通过这个文
件建立一个快速扩展的资源树…
这就是说当红帽企业认为为内核源码提供一个独立的软件包不再重要时,作为用户的我们如果想定制、升级、重编内核就
得折腾一下了。/usr/src/kernels 目录不是源代码目录,rpm源代码包也不在AS 4的七张安装光盘中(至少我没能找到)
1. 获得 kernel.src.rpm 包
通过uname命令确定自己需要的rpm的源代码包为
kernel-2.6.9-22.EL.src.rpm
没有许可证,所以无法直接用up2date下载。网上找了半天,下载地址为:
(Redhat相关下载的东西一向比较杂乱,如果当你看到此文时无法通过以上地址下载,请您继续折腾着寻找)
2. 生成kernel源代码安装包
# rpm -ivh  kernel-2.6.9-22.EL.src.rpm
源码被解压至 /usr/src/redhat/SOURCES 目录,并且在 /usr/src/redhat/SPECS 目录中建立 kernel-2.6.spec 文件。
 
# cd /usr/src/redhat/SPECS/
# vi kernel-2.6.spec
%define buildup 1
%define buildsmp 1
%define buildsource 1
%define buildhugemem 1
将buildsource的值从0改为1 
# rpmbuild -ba --target=x86_64 ./kernel-2.6.spec
如果遇到类似以下的错误:
make[1]: *** [nonint_oldconfig] Error 7
make: *** [nonint_oldconfig] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.10626 (%build)
一定要仔细核对rpmbuild命令中的target参数,你所要被安装的机器的体系究竟是i686,i386,还是64位的。不妨用
uname -m
命令查对一下。
3.最终目录结构
成功安装后,数据分布如下:
·所有的kernel配置文件生成在 /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/configs 目录下
kernel-2.6.9-x86_64.config
kernel-2.6.9-x86_64-smp.config
·内核树生成在 /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 目录下
·内核RPM安装包生成在 /usr/src/redhat/RPMS/{机器体系} 目录下
kernel-2.6.9-22.EL.x86_64.rpm
kernel-debuginfo-2.6.9-22.EL.x86_64.rpm
kernel-devel-2.6.9-22.EL.x86_64.rpm
kernel-smp-2.6.9-22.EL.x86_64.rpm
kernel-smp-devel-2.6.9-22.EL.x86_64.rpm
kernel-sourcecode-2.6.9-22.EL.x86_64.rpm
·内核 kernel.src.rpm 包在 /usr/src/redhat/SRPMS 目录下
kernel-2.6.9-22.EL.src.rpm
4. 安装内核源码包,生成源代码目录
# cd /usr/src/redhat/RPMS/{机器体系}
# rpm -ivh kernel-sourcecode-2.6.9-22.EL.x86_64.rpm
查看/usr/src目录下是否已生成 linux-2.6.9-22.EL 目录了。
接下来可以按照传统方法定制编译内核了!具体方法请参考本站其它相关文章:内核编译
附:简单编译过程如下:
# cd /usr/src/linux-2.6.9-22.EL/configs
# cp kernel-2.6.9-x86_64-smp.config    ../.config
# make oldconfig
# vi Makefile
# make menuconfig
# make all
# make modules_install
# make install
# vi /boot/grub/menu.lst
# reboot