Red Hat内核升级过程记录

来源:互联网 发布:黑龙江省快乐十分软件 编辑:程序博客网 时间:2024/06/05 10:15

项目中因为要用到一些新的系统调用,需要升级当前所用的Red Hat5.2,于是就从Linux内核官方网站上下载源码进行编译。

准备工作

1.确认内核及版本信息
这里写图片描述

2.安装软件
编译安装新内核,依赖于开发环境和开发库

# yum grouplist  //查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库;# yum groupinstall "Development Tools"  //一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具# yum install ncurses-devel //你必须这样才能让 make *config 这个指令正确地执行# yum install qt-devel //如果你没有 X 环境(图形界面),这一条可以不用# yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel //创建 CentOS-6 内核时需要它们

编译内核

1.获取并解压内核源码,配置编译项
本次我选择的升级内核版本是2.6.32.23。

我们在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份原配置文件到当前目录下,命名为.config。

[root@src ~]# tar -jxvf linux-2.6.32.23.tar.bz2 -C /usr/src/[root@src ~]# cd /usr/src/linux-2.6.32.23/[root@src linux-2.6.32.23]# cp /boot/config-2.6.18-92.el5 .config

接下来继续配置:

[root@src linux-2.6.32.23]# sh -c 'yes "" | make oldconfig'

make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写。make oldconfig会在生成新的.config之前备份为.config.old,并生成新的.config文件。

有的文档里介绍使用make memuconfig(系统中必须安装有ncurses库),它是以菜单的方式,选择编译内核需要的模块,类似界面如下:
这里写图片描述

2.开始编译

[root@src linux-2.6.32.23]# make bzImage  //生成内核文件[root@src linux-2.6.32.23]# make modules  //编译模块[root@src linux-2.6.32.23]# make modules_install  //编译安装模块

生成内核文件
这里写图片描述

编译模块
这里写图片描述

编译安装模块
这里写图片描述

3.安装

[root@src linux-2.6.32.23]# make install

这里写图片描述

4.修改grub引导,重启
安装完成后,需要修改Grub引导顺序,让新安装的内核作为默认内核。

# vim /etc/grub.conf

这里写图片描述

数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0。

这里写图片描述

然后,重启后确认当前内核版本

[root@src ~]# shutdown -r now[root@src ~]# uname -r

显示内核版本为2.6.32.23,则表示升级内核成功。

异常

1.在升级编译完内核,重启后无法进入系统,提示如下错误信息:
这里写图片描述

解决方法:编译时修改.config文件中的“CONFIG_SYSFS_DEPRECATED_V2”,默认该选项是被注释掉的,为not set,,将其改为y,即修改为“CONFIG_SYSFS_DEPRECATED_V2=y”,修改后,再编译,重启即正常了。

2.如果编译失败(如缺少依赖包),可以先清除,再重新编译

[root@src ~]# cd /usr/src/linux-2.6.32.23[root@src linux-2.6.32.23]# make mrproper //完成或者安装过程出错,可以清理上次编译的现场[root@src linux-2.6.32.23]# make clean

参考资料:
https://segmentfault.com/a/1190000000733628

0 0