网页浏览总次数

2011年3月12日星期六

编译 CentOS 5 内核

如果只是编译驱动程序,只要安装kernel-devel包就可以。

为了安装rpm源码,需要安装 rpm-build,redhat-rpm-config和unifdef:

[root@host]# rpm install rpm-build redhat-rpm-config unifdef

因不建议以root身份编译内核,以普通用户身份创建目录树 ~/rpmbuild:

[user@host]$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

从CentOS镜像站点下载 kernel 源码包:

[user@host]$ wget http://mirror.neu.edu.cn/centos/5.5/os/SRPMS/kernel-2.6.18-194.el5.src.rpm
[user@host]$ rpm -i kernel-2.6.18-194.el5.src.rpm 2>&1 | grep -v mockb

版本号 2.6.28-194 需根据实际情况替换。由于 ~/.rpmmacros配置了rpm源码安装环境,kernel源码会被安装到 ~/rpmbuild 目录下。

产生编译用的源码目录树:

[user@host]$ cd ~/rpmbuild/SPECS
[user@host SPECS]$ rpmbuild -bp --target=`uname -m` kernel-2.6.spec 2> prep-err.log | tee prep-out.log

在 ~/rpmbuild/BUILD 目录会发现生成的源码目录树。

安装编译环境:

[root@host]# yum groupinstall "Development Tools"
[root@host]# yum install ncurses-devel

配置内核:
[user@host]$ cd ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.`uname -m`
[user@host]$ cp configs/kernel-2.6.18-`uname -m`[-type].config .config

[-type] 是可选的配置类型。

编译内核:

首先运行 make oldconfig,然后按照编译内核的步骤进行。为了自定义编译后的内核版本,可编辑Makefile里的 EXTRAVERSION 变量。


参考:
http://wiki.centos.org/HowTos/I_need_the_Kernel_Source
http://wiki.centos.org/HowTos/Custom_Kernel

没有评论:

发表评论