公司打算上Docker服务,目前须要安装运行环境,Docker新的功能除了须要Centos 7系统以外,内核的版本高低也决定着使用的效果,因此在此记录下系统内核版本升级过程。php
注:对于线上环境的内核版本还须要根据实际状况谨慎选择,越新的版本将来可能遇到的问题越多,此文只是记录升级方法而已。linux
关于内核版本的定义:docker
版本性质:主分支ml(mainline),稳定版(stable),长期维护版lt(longterm)vim
版本命名格式为 “A.B.C”:centos
数字 A 是内核版本号:版本号只有在代码和内核的概念有重大改变的时候才会改变,历史上有两次变化:
第一次是1994年的 1.0 版,第二次是1996年的 2.0 版,第三次是2011年的 3.0 版发布,但此次在内核的概念上并无发生大的变化
数字 B 是内核主版本号:主版本号根据传统的奇-偶系统版本编号来分配:奇数为开发版,偶数为稳定版
数字 C 是内核次版本号:次版本号是不管在内核增长安全补丁、修复bug、实现新的特性或者驱动时都会改变安全
# uname -r 3.10.0-514.el7.x86_64 # cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
Centos 6和Centos 7的升级方法相似,只不过就是选择的YUM源或者rpm包不一样罢了,下面主要是Centos 7的安装方法,中间也会有对于Centos 6 升级的方法提示。服务器
方法一:spa
Centos 6 YUM源:http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm Centos 7 YUM源:http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
升级内核须要先导入elrepo的key,而后安装elrepo的yum源:.net
# rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
仓库启用后,你可使用下面的命令列出可用的内核相关包,以下图:3d
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
上图能够看出,长期维护版本lt为4.4,最新主线稳定版ml为4.12,咱们须要安装最新的主线稳定内核,使用以下命令:(之后这台机器升级内核直接运行这句就可升级为最新稳定版)
# yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64
方法二:
对于一些没法上网的服务器,或者须要安装指定版本内核的需求,咱们能够把kernel image的rpm包下载下来安装,下载地址以下:
下载指定版本 kernel: http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=3&dl=40&search=kernel
下载指定版本 kernel-devel:http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=3&dl=40&search=kernel-devel
官方 Centos 6: http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
官方 Centos 7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
将rpm包下载上传到服务器上,使用下面的命令安装便可:
# yum -y install kernel-ml-devel-4.12.4-1.el7.elrepo.x86_64.rpm # yum -y install kernel-ml-4.12.4-1.el7.elrepo.x86_64.rpm
方法三:
还能够经过源码包编译安装,这种方式可定制性强,但也比较复杂,有须要的可自行查找资料安装,下面只给出各系统版本内核源码包的下载地址:https://www.kernel.org/pub/linux/kernel/
内核升级完毕后,目前内核仍是默认的版本,若是此时直接执行reboot命令,重启后使用的内核版本仍是默认的3.10,不会使用新的4.12.4,首先,咱们能够经过命令查看默认启动顺序:
# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg CentOS Linux (4.12.4-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-a43cc2091b4557f1fd10a52ccffa5db2) 7 (Core)
由上面能够看出新内核(4.12.4)目前位置在0,原来的内核(3.10.0)目前位置在1,因此若是想生效最新的内核,还须要咱们修改内核的启动顺序为0:
# vim /etc/default/grub
注:Centos 6 更改的文件相同,使用命令肯定新内核位置后,而后将参数default更改成0便可。
接着运行grub2-mkconfig命令来从新建立内核配置,以下:
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot
系统启动完毕后,能够经过命令查看系统的内核版本,以下:
# uname -r 4.12.4-1.el7.elrepo.x86_64
到此,Centos 7内核升级完毕。