您的位置:首页 > 运维架构 > Linux

CentOS 6.4 内核升级(2.6.32 -> 3.18.19)

2015-07-26 14:23 471 查看
升级的目的是想在CentOS6.4上运行docker,官方建议内核版本在3.8.0及以上,于是就自己从Linux内核官方网站上下载源码,自己编译

安装软件

编译安装新内核,依赖于开发环境和开发库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 内核时需要它们

编译内核

获取并解压内核源码,配置编译项

http://www.kernel.org 首页,可以看到有stable, longterm等版本,longterm是比stable更稳定的版本,会长时间更新,因此我选择 3.18.19[root@root ~]# tar -xf linux-3.18.19.tar.xz
[root@root ~]# cd linux-3.18.19
我们在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份到当前目录下,命名为.config
[root@root llinux-3.18.19]# cp /boot/config-2.6.32-358.el6.x86_64 .config ( 注意要在解压缩的包的目录里面)
sh -c 'yes "" | make oldconfig'

##########################################################################################
######make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写。有的文档里介绍使用make memuconfig,它便是根据需要手动选择菜单定制模块,在这里我们不需要。make oldconfig会在生成新的.config之前备份为.config.old,并生成新的.config文件。
######(上面这个命令就自动按之前你装的os的模块来自动编译了sh -c 'yes "" | make oldconfig')
##########################################################################################

开始编译
[root@root linux-3.10.58]# make -j4 bzImage //生成内核文件
[root@root linux-3.10.58]# make -j4 modules //编译模块
[root@root linux-3.10.58]# make -j4 modules_install //编译安装模块
-j后面的数字是线程数,用于加快编译速度,一般的经验是,逻辑CPU,就填写那个数字,例如有8核,则为-j8。
安装
make install

实际运行到这一步时,出现
modinfo: could not find module vmware_balloon,但是不影响内核安装,是由于vsphere需要的模块没有编译,要避免这个问题,需要在make之前时修改.config文件,加入
HYPERVISOR_GUEST=y
CONFIG_VMWARE_BALLOON=m

修改Grub引导顺序
vim /etc/grub.conf
数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0

reboot




下面是找到的一篇yum方式升级的可以参考下:http://ljf.me/archives/use-yum-to-quickly-upgrade-centos-6-5-kernel-3-10-28/本文出自 “技术成就梦想” 博客,请务必保留此出处http://hxl2009.blog.51cto.com/779549/1678465
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: