Red Hat内核升级过程记录

项目中因为要用到一些新的系统调用,需要升级当前所用的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库),它是以菜单的方式,选择编译内核需要的模块,类似界面如下:
Red Hat内核升级过程记录_第1张图片

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  // 编译安装模块

生成内核文件
Red Hat内核升级过程记录_第2张图片

编译模块
Red Hat内核升级过程记录_第3张图片

编译安装模块
Red Hat内核升级过程记录_第4张图片

3.安装

[root@src linux-2.6.32.23]# make install

这里写图片描述

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

# vim /etc/grub.conf

Red Hat内核升级过程记录_第5张图片

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

Red Hat内核升级过程记录_第6张图片

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

[root@src ~]# shutdown -r now

[root@src ~]# uname -r

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

异常

1.在升级编译完内核,重启后无法进入系统,提示如下错误信息:
Red Hat内核升级过程记录_第7张图片

解决方法:编译时修改.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

你可能感兴趣的:(Linux)