一. 下载内核源码包
注意,这里要下载的内核源码不是标准的Linux内核源码,而是Red Hat发行版的内核源码。
另外需要注意,Red Hat发行版的内核有不同的版本。具体下载哪个版本呢?
如果是想学习内核开发(例如,写驱动/做内核实验),则选择与自己PC机上当前跑的内核版本一致的即可。如果是想升级内核,那就选择一个高版本的下载。
我们这里就下载一个与PC机上当前跑的内核版本一致的吧。
可以通过如下命令,查看自己PC上当前跑的Red Hat的内核版本。
[root@12 ~]# uname -a
Linux 12 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
上面的 红色文字部分 就是笔者环境中的内核版本号了。
得到了内核版本号,就可以下载内核源码了。
以上面的版本为例,下载地址如下:
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/kernel-2.6.18-194.el5.src.rpm
二. 生成内核源码
上面下载的只是内核源码的rpm安装包。
针对此安装包,我们需要通过如下步骤,才能得到完整的redhat linux内核源码。
1) 用root用户登陆pc linux
2) 使用如下命令安装源码包
rpm -i kernel-2.6.18-194.el5.src.rpm
安装完成后,在 /usr/src/redhat/SOURCES 目录下,会产生很多文件。
其中包括:
linux-2.6.18.tar.bz2 ---- 标准的Linux内核源码包
一大堆.patch的文件 ---- 这些是源码补丁文件
若干个.config ---- 这些是内核配置文件
其他的文件 ---- 在下目前也不理解 :)
3) 使用如下命令得到完整的redhat linux内核源码
cd /usr/src/redhat/SPECS
rpmbuild -bp kernel-2.6.spec --target=x86_64
如果一切顺利,那么在“/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64”目录中,就会生成一份内核源码。
这个源码,是在标准Linux内核源码的基础上,打上了RedHat的补丁及相关配置的源码。
注意:
a)如果你的机器是32位的,可以将x86_64换成i686。笔者没试过,不保证成功哦。
b)如果你很不幸,命令执行时出现类似“unifdef is needed by kernel-2.6.18 ...”这样的错误,请下载安装unifdef。
如果你的Linux可以直接访问外网,一条“yum installunifdef”命令就OK了。
如果你的Linux不能直接上网,但是你有代理服务器可用。
那么先执行“export http_proxy=http://user_name:password@proxy_ip”命令,
再来一条“yum install unifdef”命令就OK了。
如果你很不幸,上面的yum install操作无法顺利执行。
那么,自己下载安装unifdef吧。
下载地址如下
ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/7/Everything/x86_64/os/Fedora/unifdef-1.171-5.fc6.x86_64.rpm
安装命令
rpm -i unifdef-1.171-5.fc6.x86_64.rpm
三、编译内核
通过如下命令配置并编译内核
. cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64
. make menuconfig
. make
剩下的事情,在下就不用说了吧 :)
Red Hat Enterprise Linux(RHEL)内核源码编译
原文:http://blog.csdn.net/crazycoder8848/article/details/18810889