CentOS6.4内核升级, 2.6.*版本升级 Kernel 3.10.*

Posted 无锋剑客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS6.4内核升级, 2.6.*版本升级 Kernel 3.10.*相关的知识,希望对你有一定的参考价值。


Kernel当前最新的稳定版为3.10.4,而CentOS6.4的内核一直还是2.6.x,内核版本2.6.28系列有一些内核BUG,最终决定升级linux系统内核版本。


在测试环境进行内核升级测试,步骤如下:


一:升级环境介绍:


内核升级测试环境介绍:



虚拟机软件:VMWare 9.0.0


测试系统: CentOS 6.4 x86_64


确认升级前内核版本:

more /proc/version

Linux version 2.6.32-358.14.1.el6.x86_64 (mockbuild@c6b10.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Tue Jul 16 23:51:20 UTC 2013


uname -a

Linux master 2.6.32-358.14.1.el6.x86_64 #1 SMP Tue Jul 16 23:51:20 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux


升级前grup文件信息:


[more /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_slave2-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-220.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/vg_slave2-lv_root nomodeset rd_NO_LUKS rd_NO_MD quiet rhgb crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=vg_slave2/lv_root K
EYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_slave2/lv_swap rd_NO_DM
initrd /initramfs-2.6.32-220.el6.x86_64.img

二:安装系统所需要的编译工具:


yum install wget gcc gc bc gd make perl ncurses-devel xz -y


如果执行上面的安装命令后,在编译过程中提示缺少依赖软件包请执行下面的软件安装命令

yum  install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp  libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel Tcl/Tk  cmake  ncurses-devel bison setuptool popt-devel rsynx openssh system-config-network-tui gcc gc bc gd make perl ncurses-devel xz -y




三:下载当前最稳定的Kernel并解压

cd /usr/src  

wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.4.tar.xz

xz -d linux-3.10.4.tar.xz

tar -xvf linux-3.10.4.tar.xz

cd linux-3.10.4


四:清理系统内的环境变量及依赖

make mrproper         #清除环境变量(清除配置文件)


make dep    #清除依赖


cp /boot/config-* /usr/src/kernels/  #为了方便编译配置,将/boot下的配置文件复制到当前目录下的/usr/src/kernels/文件中


五:准备开始啦


make menuconfig出现General setup菜单,根据自己的需要对Kernel进行增、减。完后按Tab键跳到下面菜单中的 < Exit > 上,回车,系统问

Do you wish to save your new configuration ?to continue.

                                < Yes >< No >


菜单默认在< Yes >上,按回车确认保存。


报错处理:

make menuconfig后命令,提示make: No rule to make target ‘menuconfig’.Stop. 

解决办法:

在编译内核时,无论使用哪种方式都提示:make ***No rule to make target "menuconfig".stop.  

原因是没有在内核源码目录下进行。

例如,要编译或升级的内核解压后的目录为/usr/src/linux-2.4.24,一定要进入到该目录后使用make menuconfig命令,这样就不会提示上面的错误了。        

如果还不行,将内核文件放到此目录下,从新解压,再运行命令即可


make clean    #确保所有东西均保持最新状态

make bzImage    #生成内核文件

make modules    #编译模块(注:此处需要很长时间,请耐心等待)

make modules_install  #安装模块

make install    #安装,此处报了一个vmware的错,详见最后故障排查


如果以上步骤都顺利执行完成,那么恭喜你内核升级已基本完成。



六:修改系统启动菜单并重启服务器,使服务器在下次启动使用新的内核。

[root@master ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_master-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.4)
root (hd0,0)
kernel /vmlinuz-3.10.4 ro root=/dev/mapper/vg_master-lv_root nomodeset rd_LVM_LV=vg_master/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD rd_NO_LUKS quiet rhgb crashkernel=auto LANG=en_US.UTF-8 rd_LVM_LV=vg_master/lv_root rd_NO_DM
initrd /initramfs-3.10.4.img
title CentOS (2.6.32-358.14.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/mapper/vg_master-lv_root nomodeset rd_LVM_LV=vg_master/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD rd_NO_LUKS quiet rhgb crashkernel=auto LANG=en_US.UTF-8 rd_LVM_LV=vg_master/lv_root rd_NO_DM
initrd /initramfs-2.6.32-358.14.1.el6.x86_64.img


此时需要重启以便启动新的内核,

init 6


七:确认内核版本升级成功:


[root@master ~]# uname -a

Linux master 3.10.4 #内核版本已升级


[root@master ~]# cat /proc/version

Linux version 3.10.4 (root@master) #内核版本已升级



八:故障排查:

在执行 make install 内核升级完成后报错如下:


ERROR: modinfo: could not find module vmware_balloon

找不到 vmware_balloon 模块,

原因有2:

首先,确认你的 .config 文件里面有  CONFIG_VMWARE_BALLOON=m 这一行,或者你可以用 make menuconfig 进去内核编译菜单,选中 Device Drivers -> MISC devices -> VMware Balloon Driver 为 M 或者 *

其次,而这个模块在后面的版本中,已经更名为 vmw_balloon,所以 可以用下面的命令来解决:

cd /lib/modules/3.x.xx/kernel/drivers/misc #将版本号改成你自己的

ln -s vmw_balloon.ko vmware_balloon.ko #建立软连接


#回头找一台正式服务器试一下,应该不会报这个错误。


以上是关于CentOS6.4内核升级, 2.6.*版本升级 Kernel 3.10.*的主要内容,如果未能解决你的问题,请参考以下文章

centos6.4下面升级内核版本至3.13之后不好用,想恢复原来的内核版本2.6,请问各位如何操作?具体点哈。

centos6.5内核升级

新装Centos系统服务器升级Linux内核至3.0.88

CentOS 6.4系统中编译和升级内核

centos 6.5内核升级

linux内核版本分别带表啥含义?