Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1944201
  • 博文数量: 1000
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7921
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:23
个人简介

storage R&D guy.

文章分类

全部博文(1000)

文章存档

2019年(5)

2017年(47)

2016年(38)

2015年(539)

2014年(193)

2013年(178)

分类: 服务器与存储

2014-05-03 10:22:50

RHEL是一个商业支持的Linux版本,他的软件可以免费获得,免费使用,但是补丁和技术支持则需收费。

但是根据GPLv2协议,对内核的任何改动都必须公布代码,所以只将源码公布在官方的FTP上,没有给出二进制包。对于没有买RHEL服务的人来说,则需要自己手动将源码编译成RPM二进制包。

在RHEL5上,编译kernel.src.rpm时候,非常轻松,一个命令就可以搞定,但是在RHEL6.1的时候,杯具了。。。。一方面,RedHat为了遏制的OEL,改变了一些打包方式。另一方面,内核变化很大,从2.6.18变成2.6.32,跨度太大,有些地方有改变。

OS:RHEL6U1,kernel:2.6.32-131.0.15.el6.x86_64

请保证/root可用空间在20G以上。

1)获取kernel.src.rpm

lftp ftp.redhat.com:/pub/redhat/linux/enterprise/6Server/en/os/SRPMS

get kernel-2.6.32-131.6.1.el6.src.rpm    #这个是最新的kernel.

2)安装依赖包
yum -y install rpm* xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel hmaccalc perl*

注意,此时会提示,asciidoc,newt-devel不存在。我在这里没有注意,忽略了,在下面build的时候提示缺少依赖包时候就病急乱投医了。注意,在编译RHEL的src.rpm时候千万不要乱去google缺少的依赖包。

3)编译kernel
groupadd mockbuild
useradd -g mockbuild mockbuild
rpm -ivh kernel-2.6.32-131.6.1.el6.src.rpm

cd /root/rpmbuild/SPEC/
rpmbuild -bb --with fireware --target=`uname -m` kernel.spec

此时会提示,缺少一些依赖包,只要yum安装上即可,最终提示asciidoc,newt-devel没有。的确在ISO里也没有

4)解决依赖关系
这里,开始时候我第一反应是去google,其实完全不用。再进入RedHat的FTP

lftp ftp.redhat.com:/pub/redhat/linux/enterprise/6Server/en/os/SRPMS

get asciidoc-8.4.5-4.1.el6.src.rpm,newt-0.52.11-2.el6.src.rpm

rpmbuild --bb --target=`uname -m` asciidoc.spec 

这样即可解决依赖asciidoc问题。而newt-devel会稍微麻烦些。

在rpmbuild newt的时候,会提示依赖slang这个包,一样,光盘里没有提供,再从ftp上取得slang- 2.2.1-1.el6.src.rpm,而在rpmbuild  slang时候提示依赖oniguruma,也是光盘里没有的,再从ftp上取得oniguruma-5.9.1-3.1.el6.src.rpm

所以是先build出oniguruma,然后是slang,最后是newt-devel.

至此,依赖性解决。

5)重新开始编译
rpmbuild --bb --with firmware --target=`uname -m` kernel.spec.

然后是漫长的等待,显示 gpg: WARNING: unsafe permissions on homedir `.'的时候,耐心等待。

6)编译时间很长。。多喝几杯咖啡。:D

阅读(907) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~