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 ([email protected]) (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   #原本是1修改成 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.*)