RHEL内核编译几种编译方法(本人亲自操作)

 

本文以RHEL5内核源码为例,介绍内核的自动编译和手动编译。

非RHEL内核编译

对于非RHEL内核,编译内核只需四个步骤:

(1)    配置内核

可以通过执行menuconfig命令或将其他内核版本的config配置文件保存为待编译内核源码目录下.config文件。

(2)    make

若当前系统有多个CPU核,可以通过make –j <进程数>来加快内核编译速度。如:

#make –j32

(3)    make modules_install

(4)    make install

重启系统,选择新内核版本即可。

自动编译

可以从redhat官方网站下载源码rpm包,然后通过rpmbuild命令,自动编译生成内核安装包。

操作步骤:

1、载Redhat内核源码包

RHEL5系列内核源码链接为:

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

RHEL5.3内核源码包文件为kernel-2.6.18-128.el5.src.rpm。

RHEL6系列内核源码链接为:

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

RHEL6内核源码包文件为kernel-2.6.32-71.el6.src.rpm。

2、将下载到的源码包文件拷贝到机器上。

3、创建mockbuild用户和组

[root@houyi-vm33 ~]# groupadd mockbuild

[root@houyi-vm33 ~]# useradd mockbuild -g mockbuild

4、安装内核源码包到系统中

[root@houyi-vm33 ~]# rpm -ivh kernel-2.6.18-128.el5.src.rpm

warning: kernel-2.6.18-128.el5.src.rpm: V3 DSA signature: NOKEY, key ID 37017186

1:kernel                 ########################################### [100%]

[root@houyi-vm33 ~]#

5、下载unifdef-1.171-5.fc6.src.rpm源码包,生成并安装rpm包。(RHEL4系列系统中必需)

(1)安装源码包

[root@houyi-vm33 ~]# rpm -ivh unifdef-1.171-5.fc6.src.rpm

warning: unifdef-1.171-5.fc6.src.rpm: V3 DSA signature: NOKEY, key ID 37017186

1:unifdef                warning: user brewbuilder does not exist – using root

warning: group brewbuilder does not exist – using root

warning: user brewbuilder does not exist – using root

warning: group brewbuilder does not exist – using root

########################################### [100%]

(2)编译源码包

[root@houyi-vm33 ~]# cd /usr/src/redhat/SPECS/

[root@houyi-vm33 SPECS]# ls

kernel-2.6.spec  unifdef.spec

[root@houyi-vm33 SPECS]# rpmbuild -ba unifdef.spec

(3)安装RPM安装包

[root@houyi-vm33 SPECS]# rpm -ivh /usr/src/redhat/RPMS/x86_64/unifdef-1.171-5.x86_64.rpm

Preparing…                ########################################### [100%]

[root@houyi-vm33 SPECS]#

6、进入/usr/src/redhat/SPECS目录,会发现kernel-2.6.spec文件

[root@houyi-vm33 ~]# cd /usr/src/redhat/SPECS/

[root@houyi-vm33 SPECS]# ls

kernel-2.6.spec  unifdef.spec

[root@houyi-vm33 SPECS]# pwd

/usr/src/redhat/SPECS

[root@houyi-vm33 SPECS]#

7、使用rpmbuild编译内核RPM包

[root@houyi-vm33 SPECS]# rpmbuild -ba kernel-2.6.spec

执行上面命令后,在当前Westmere服务器中编译等待约20分钟,内核RPM安装包制作完成。我们就可以直接使用rpm命令升级到新内核了。

… …

Wrote: /usr/src/redhat/SRPMS/kernel-2.6.18-128.el5.src.rpm

Wrote: /usr/src/redhat/RPMS/x86_64/kernel-2.6.18-128.el5.x86_64.rpm

Wrote: /usr/src/redhat/RPMS/x86_64/kernel-devel-2.6.18-128.el5.x86_64.rpm

… ..

 

常见问题:

在编译内核源码过程中,通常会出现以下提示,编译无法正常继续运行。

gpg: WARNING: unsafe permissions on homedir “.”

gpg: keyring `./secring.gpg’ created

gpg: keyring `./pubring.gpg’ created

++++++++++++++++++++.++++++++++++++++++++.++++++++++.

+++++++++++++++++++++++++.++++++++++.+++++++++++++++..

 

Not enough random bytes available.  Please do some other work to give

the OS a chance to collect more entropy! (Need 276 more bytes)

解决办法:

(1)创建一个大文件

[root@houyi-vm33 ~]#

[root@houyi-vm33 ~]#dd if=/dev/zero of=zero.img bs=1M count=512

(2)将文件内容cat到/dev/null设备中

[root@houyi-vm33 ~]# cat zero.img > /dev/null

(3)将大文件发送到root用户

[root@houyi-vm33 ~]# sendmail root@root < zero.img

一会编译内核就可继续进行。

手工编译

若希望修改部分内核源码,然后再升级内核,可采用手工编译内核的方式。

下载源码和安装RPM源码包步骤同上。

操作步骤:

1、载Redhat内核源码包

2、将下载到的源码包文件拷贝到机器上。

3、创建mockbuild用户和组

[root@houyi-vm33 ~]# groupadd mockbuild

[root@houyi-vm33 ~]# useradd mockbuild -g mockbuild

4、安装内核源码包到系统中

[root@houyi-vm33 ~]# rpm -ivh kernel-2.6.18-128.el5.src.rpm

5、下载unifdef-1.171-5.fc6.src.rpm源码包,生成并安装rpm包。(RHEL4系列系统中必需)

6、进入/usr/src/redhat/SPECS目录,会发现kernel-2.6.spec文件

7、使用rpmbuild –bp参数生成RHEL相应版本内核源码

[root@houyi-vm33 SPECS]# rpmbuild -bp kernel-2.6.spec

这个过程就是给解压缩标准内核源码和安装patch。若提示错误,可以在rpmbuild命令中加上—nodeps参数。

8、进入/usr/src/redhat/BUILD目录,就可以找到生成的源码目录

[root@houyi-vm33 BUILD]# pwd

/usr/src/redhat/BUILD

[root@houyi-vm33 BUILD]# ls

kernel-2.6.18  unifdef-1.171

一般Redhat生成的内核源码目录名为kernel-2.6.18,如我们编译RHEL5.3源码,则该目录的源码实际为kernel-2.6.18-128.el5。

9、进入/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64目录

[root@houyi-vm33 linux-2.6.18.x86_64]# pwd

/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64

 

10、根据编译内核版本,调整.config和Makefile文件

(1)调整config文件

若希望编译标准RHEL5.3 xen内核,直接将configs/ kernel-2.6.18-x86_64-xen.config拷贝成.config文件即可。

[root@houyi-vm33 linux-2.6.18.x86_64]# ls configs/*

configs/kernel-2.6.18-x86_64.config        configs/kernel-2.6.18-x86_64-xen.config

configs/kernel-2.6.18-x86_64-debug.config

[root@houyi-vm33 linux-2.6.18.x86_64]# cp configs/kernel-2.6.18-x86_64-xen.config .config

cp: overwrite `.config’? y

[root@houyi-vm33 linux-2.6.18.x86_64]#

(2)调整Makefile文件中对应的内核版本名称

[root@houyi-vm33 linux-2.6.18.x86_64]# vim Makefile

VERSION = 2

PATCHLEVEL = 6

SUBLEVEL = 18

EXTRAVERSION = -prep   //若我们编译内核版本为2.6.18-128.el5xen,将-prep改为-128.el5xen即可。

RHEL_MAJOR = 5

RHEL_MINOR = 3

NAME=Avast! A bilge rat!

11、编译和安装内核

[root@houyi-vm33 linux-2.6.18.x86_64]# make -j32 && make modules_install && make install

在Westmere 服务器上(2颗CPU),编译内核过程中只要需要约5分钟时间即可完成。

编译和安装成功后,重启机器在Grub中就可以选择新内核版本启动了。

常见问题:

在RHEL4系列系统中,若安装内核过程中出现提示无法生成或更新/boot目录下的initrd文件,可以mptscsi一行注释掉即可。

[root@chen]# vim /etc/modprobe.conf

alias scsi_hostadapter mptbase

#alias scsi_hostadapter1 mptscsi

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值