大兵是
一个想全能的运维

CentOS 6内核2.6到3.x版本升级

说在前面的话:

    因为公司环境都是centos6.5-6.8版本的,用了docker之后有的功能要求内核版本,但是重装系统是不可能的,只能升级内核了。

    对了,操作之前去看看第四项”安装与错误说明”,避免一些错误,以免浪费时间。

一、基础环境

[root@data01 ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)
[root@data01 ~]# uname -a
Linux data01 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

二、准备升级环境

#安装这个是为了保证在后面编译的时候具备相关的工具。
yum groupinstall "Development Tools"

#你必须这样才能让 make *config 这个指令正确地执行
yum install -y ncurses-devel

#创建 CentOS-6 内核时需要它们
yum install -y hmaccalc zlib-devel binutils-devel elfutils-libelf-devel	

    下载内核版本,我们去kernel的官网下载:http://www.kernel.org。版本自己选,此次升级我选用的版本是3.10.107。

[root@data01 ~]# wget https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.10.107.tar.xz

三、编译安装

[root@data01 ~]# tar xf linux-3.10.107.tar.xz -C /usr/src/
[root@data01 ~]# cd /usr/src/linux-3.10.107/
#我们在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份到当前目录下,命名为.config
[root@data01 linux-3.10.107]# cp /boot/config-2.6.32-642.el6.x86_64 .config
[root@data01 linux-3.10.107]# ll -a 
total 672
drwxrwxr-x   23 root root   4096 Jul  8 15:20 .
drwxr-xr-x.   5 root root   4096 Jul  8 15:17 ..
...
-rw-r--r--    1 root root 108103 Jul  8 15:20 .config
...
#make oldconfig会在生成新的.config之前备份为.config.old,并生成新的.config文件
[root@data01 linux-3.10.107]# sh -c 'yes "" | make oldconfig'
[root@data01 linux-3.10.107]# ll -a 
total 792
drwxrwxr-x   23 root root   4096 Jul  8 15:24 .
drwxr-xr-x.   5 root root   4096 Jul  8 15:17 ..
drwxrwxr-x   32 root root   4096 Jun 27 17:49 arch
drwxrwxr-x    3 root root   4096 Jun 27 17:49 block
-rw-r--r--    1 root root 120062 Jul  8 15:24 .config
-rw-r--r--    1 root root 108122 Jul  8 15:24 .config.old
...

    ok,我们要开始编译安装了。

[root@data01 ~]# make -j4 bzImage #生成内核文件
[root@data01 ~]# make -j4 modules #编译模块
[root@data01 ~]# make -j4 modules_install #编译安装模块
#-j使用4核编译,加快速度,这几步执行时间很长。

四、安装及错误说明

[root@data01 linux-3.10.107]# make install
sh /usr/src/linux-3.10.107/arch/x86/boot/install.sh 3.10.107 arch/x86/boot/bzImage \
		System.map "/boot"
ERROR: modinfo: could not find module vmware_balloon
#出现这步实际上是影响升级内核的,如果要去除的话。需要在编译前在配置中加参数
[root@data01 linux-3.10.107]# vim .config 
...
1348 CONFIG_VMWARE_BALLOON=m
1349 HYPERVISOR_GUEST=y
...
#但是在使用虚拟机的时候,加了参数还是会报这个错误。

#下面这次错误是磁盘不足产生的,安装需要大概3.3g左右
{standard input}: Assembler messages:
{standard input}:72233: Fatal error: can't write drivers/scsi/bfa/.tmp_bfa_core.o: No space left on device
{standard input}:72233: Fatal error: can't close drivers/scsi/bfa/.tmp_bfa_core.o: No space left on device

    修改grub引导菜单。

[root@data01 linux-3.10.107]# vim /etc/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/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0 #修改这行
#装完新的在开机引导菜单的第一项的,所有这里我们要修改默认引导项。

五、大功告成

    重启,可看开机引导项,可看见新装的内核版本,sorry,这步没有来及截图。

#验证
[root@data01 ~]# uname -a
Linux data01 3.10.107 #1 SMP Sat Jul 8 16:51:11 CST 2017 x86_64 x86_64 x86_64 GNU/Linux

打赏

未经允许不得转载: » CentOS 6内核2.6到3.x版本升级

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)