Chinaunix首页 | 论坛 | 博客
  • 博客访问: 375957
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 356
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-01 14:18
文章分类

全部博文(163)

文章存档

2020年(4)

2019年(5)

2018年(4)

2017年(15)

2016年(11)

2015年(10)

2014年(4)

2013年(8)

2012年(13)

2011年(23)

2010年(2)

2009年(16)

2008年(20)

2007年(13)

2006年(12)

2005年(3)

分类:

2009-01-08 11:11:10

 
曾经被问及为何在Redhat AS4中找不到内核源代码目录,开始时回答对方在安装时漏选了源码包,对方回答我已经重装过四遍,一个包一个包找过来眼都对起来了也没找到。真见鬼,我在电话里说要不你先到/usr/src目录下找找看,试着做做。
后来他发了一个邮件给我,包含如下错误:
# make mrproper
scripts/Makefile.clean:10: Documentation/DocBook/Makefile: No such file or directory
make[1]: *** No rule to make target `Documentation/DocBook/Makefile'.  Stop.
make: *** [_mrproper_Documentation/DocBook] Error 2
于是研究了一下AS4,才发现自己很落伍,传统的编译步骤有所变化。 
在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命令查对一下。
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
备注:
本站文章若非注明,均属原创。转载请保持文章完整性, 不足之处欢迎来信交流指教. 作者邮箱: 网站:
阅读(2587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~