RHEL4内核升级过程
一、下载内核源码
http://www.kernel.org/ 我之前下载的是linux-2.6.36.2.tar.bz2
[root@bogon ~]# uname –r //查看内核版本
2.6.9-55.ELsmp
二、升级过程
[root@bogon ~]#tar zxvf linux-2.6.36.2..tar.gz -C /usr/src/ //解压到该目录/usr/src/ [root@bogon ~]# cd /usr/src/linux-2.6.36.2
[root@bogon linux-2.6.36.2]# make mrproper //去除内核的依赖关系以及编译后的垃圾信息
[root@bogon linux-2.6.36.2]#make menuconfig //进入菜单方式界面配置内核
[root@bogon linux-2.6.36.2]#make bzImage //编译内核
[root@bogon linux-2.6.36.2]# make modules //编译可加载模块
[root@bogon linux-2.6.36.2]#make modules_install //安装模块
[root@bogon linux-2.6.36.2]#make install //安装新内核
错误提示:
[root@bogon linux-2.6.36.2]#vi /usr/src/ linux-2.6.36.2/drivers/char/vt.c
解决方法:
删除以下行
vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT);
在相同位置添加:
vc_cons[currcons].d = vc = alloc_bootmem(sizeof(struct vc_data));
[root@bogon linux-2.6.36.2]#make bzImage
错误提示
[root@bogon linux-2.6.36.2]#vi /usr/src/ linux-2.6.36.2/drivers/char/vt.c
解决方法:
删除以下行
vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT);
在相同位置添加:
vc_cons[currcons].d = vc = alloc_bootmem(sizeof(struct vc_data));
[root@bogon linux-2.6.36.2]#make bzImage
错误提示
原因:vt.c中引用了alloc_bootmem,但是找不到相关.h定义文件或没有在相关的头文件.h中定义
解决方法:
[root@bogon linux-2.6.36.2]#vi /usr/src/ linux-2.6.36.2/drivers/char/vt.c
添加以下这行:
#include <linux/bootmem.h>
[root@bogon linux-2.6.36.2]# make modules
错误提示:
原因:
mptsas_port_delete中引用了mptsas_set_rphy,但mptsas_set_rphy的定义却在mptsas_port_d之后。
解决方法:
vi /usr/src/linux-2.6.36.2/drivers/message/fusion/mptsas.c,将mptsas_set_rphy的定义移动到mptsas_port_delete的定义前面即可
static inline void
mptsas_set_rphy(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info, struct sas_rphy *rphy)
{
if (phy_info->port_details) {
phy_info->port_details->rphy = rphy;
dsaswideprintk(ioc, printk(MYIOC_s_DEBUG_FMT "sas_rphy_add: rphy=%p\n",
ioc->name, rphy));
}
if (rphy) {
dsaswideprintk(ioc, dev_printk(KERN_DEBUG,
&rphy->dev, MYIOC_s_FMT "add:", ioc->name));
dsaswideprintk(ioc, printk(MYIOC_s_DEBUG_FMT "rphy=%p release=%p\n",
ioc->name, rphy, rphy->dev.release));
}
}
剪切到
static void
mptsas_port_delete(MPT_ADAPTER *ioc, struct mptsas_portinfo_details * port_details)
{
之前
[root@bogon linux-2.6.36.2]#reboot //重启
进入不了系统,错误提示:
原因:升级最新内核的缘故,解决方法:
进入旧内核,设置.config文件,CONFIG_SYSFS_DEPRECATED_V2=Y,可以在
make menuconfig时使用查找功能
然后重新编译内核、编译模块、安装模块、安装内核,重启系统。
文章参考http://twentyfour.blog.51cto.com/945260/403288