最近想学习内核编译相关的东西,将虚拟机上的RHEL5.2升级了一把,以下是详细过程[升级日期:2009-02-06]:
1.先看看本机目前的内核版本:
#uname -a
2.6.18-92.el5
2.上网下载最新的内核
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.gz # -c 表示支持断点续传
新版本内核一般分两种,一种是完整源码,一种是patch文件即补丁。完整源码的压缩文件一般有几十M,解压缩后有几百M,补丁文件一般都是几M或者十几M而已。
bzip2 -d linux-2.6.28.tar.bz2
tar xvf linux-2.6.28.tar
或者直接执行 tar jxvf linux-2.6.28.tar.bz2
cp -R linux-2.6.28 /usr/src #拷贝解压缩后的新内核目录到/usr/src下
3.执行内核升级步骤
新版本内核编译后占用空间比较大,大概有2G多,所以事先要准备足够的空间,以免编译到中间空间不足(一般真实环境下不会出现这个问题,特别是虚拟机)
# vi Makefile
可以把EXTRAVERSION=改成自己喜欢的特色的文字默认是空的,例如先前2.6.18版的EXTRAVERSION = -92.el5,这里随便改一下,EXTRAVERSION = -Mebuild (此步可根据个人喜好决定是否省略)
# make mrproper
#make menuconfig #如果不定制模块可以跳过这步
编译内核,时间比较长,大概花了45分钟#make #make modules_install #make install 如果没有意外的话基本上是成功了,重启机器: #reboot 编译成功后系统启动菜单grub.conf会被修改,在机器启动时会有新旧两个内核版本可以选择. 查看新内核版本:#uname -r2.6.28注:2.6以后的内核编译的时候已经不再需要make dep,make zImage,make modules命令。