Fork me on GitHub

CentOS7.×系统及内核升级指南

最近在学习 Docker,想在服务器上实践一下.Docker 需要安装在 CentOS 7 64 位的平台,并且内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于 CentOS 7 内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定.需要升级到最新的 CentOS 版本,并且内核也更新到最新的稳定版本.这是我对升级 CentOS 系统版本及内核的记录,方便以后查阅,也分享给大家.

注意:这篇文章只在 CentOS 7.× 系列版本上验证过,其他 CentOS 版本请谨慎使用.

备份重要数据

备份重要数据(例如:/etc ,/var ,/opt文件夹)如果 CentOS 是安装在虚拟机上,那么可以使用快照进行备份.像 VMware 虚拟机可以快照备份.也可以针对重要程序数据进行备份,例如 MySQL、Appache、Nginx、DNS 等等.云主机的话,阿里云和腾讯云都可以创建快照备份数据.

检查当前 CentOS 系统版本

1
2
[root@centos ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

检查当前 CentOS 系统内核版本

1
2
[root@centos ~]#  uname -sr
Linux 3.10.0-327.10.1.e17.x86_64

可以看出当前系统为 CentOS 7.1,系统内核版本为 3.10.

运行 yum 命令升级

CentOS 中 update 命令可以一次性更新所有软件到最新版本。

注意:不推荐使用 update-y选项,-y 选项会让你在安装每项更新前都进行确认,这样会非常费时间.对于 CentOS 5.× 和 6.× 的系统我们在更新后需要重新安装应用程序恢复数据,庆幸的是 CentOS 7.× 不需要这么麻烦,可以直接升级.

1
2
[root@centos ~]#  yum clean all
[root@centos ~]# yum update

期间会有确认提示,直接回车确认即可.

重启系统

1
[root@centos ~]# reboot

检查当前 CentOS 系统版本

1
2
[root@centos ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

检查当前 CentOS 系统内核版本

1
2
[root@centos ~]#  uname -sr
Linux 3.10.0-327.10.1.e17.x86_64

可以看到当前系统为 CentOS 7.6 已经升级成功了,但系统内核版本依旧为 3.10 并没有升级,这是因为 CentOS 为了安全和稳定并不会把系统内核升级到最新的版本,所以 yum update 命令只会升级系统版本和更新软件.接下来我们就来升级系统内核.

升级 CentOS 7.× 内核,启用 ELRepo

大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。

但是,这只会升级内核到仓库中可用的最新版本,而不是在 The Linux Kernel Archives 中可用的最新主线稳定内核.不幸的是, Red Hat 只允许使用 yum 升级内核.与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新主线稳定内核.

要在 CentOS 7.× 上启用 ELRepo 仓库,请运行:

1
2
[root@centos ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@centos ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

仓库启用后,你可以使用下面的命令列出可用的系统内核相关包:

1
[root@centos ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

接下来,安装最新的主线稳定内核:

1
[root@centos ~]# yum --enablerepo=elrepo-kernel install kernel-ml

由于网络原因,以上操作可能需要不少时间.

重启机器,检查当前 CentOS 系统内核版本

1
2
[root@centos ~]# uname -sr
Linux 3.10.0-327.10.1.e17.x86_64

可以看到系统内核已经依旧是以前的内核.

切换系统内核

为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置

查看可用的内核

1
2
3
4
5
[root@centos ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
1 : CentOS Linux (5.0.0-2.el7.elrepo.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-cfd235063d384cfb8a47c90b7da6e75f) 7 (Core)

查看当前默认内核启动项

1
2
[root@centos ~]# grub2-editenv list
saved_entry=0

更改默认启动内核项

1
2
3
[root@centos ~]# grub2-set-default 1
[root@centos ~]# grub2-editenv list
saved_entry=1

再次查看默认内核启动项,发现saved_entry字段变为1

重启机器,查看系统当前内核版本,验证最新的内核已作为默认内核

1
2
[root@centos ~]#  uname -sr
Linux 5.0.0-2.el7.elrepo.x86_64

删除 CentOS 更新后的旧内核

查看系统中全部的内核 RPM 包:

1
2
3
4
5
6
7
8
9
[root@centos ~]# rpm -qa | grep kernel
abrt-addon-kerneloops-2.1.11-52.el7.centos.x86_64
kernel-3.10.0-327.el7.x86_64
kernel-tools-3.10.0-957.5.1.el7.x86_64
kernel-tools-libs-3.10.0-957.5.1.el7.x86_64
kernel-headers-3.10.0-957.5.1.el7.x86_64
kernel-3.10.0-957.5.1.el7.x86_64
kernel-ml-5.0.0-2.el7.elrepo.x86_64
kernel-devel-3.10.0-957.5.1.el7.x86_64

删除旧内核的 RPM 包

1
[root@centos ~]# yum remove kernel-3.10.0-327.el7.x86_64 kernel-tools-3.10.0-957.5.1.el7.x86_64 ......

这个需要大家根绝自己的情况自行修改

重启系统

1
[root@centos ~]# reboot

参考文献

本文标题:CentOS7.×系统及内核升级指南

文章作者:孤城落寞

发布时间:2019年03月07日 - 15:36:27

最后更新:2019年03月07日 - 15:49:48

原始链接:https://blog.gclmit.club/archives/7f0f908d.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。



-------------本文结束 感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!