Centos 7 升级系统内核

我们使用 Linux 来表示整个操作系统,但严格地来说,Linux 只是个内核。各种发行版(RedHat、ubuntu、CentOS等)是一个完整功能的系统,它建立在内核之上,具有各种各样的应用程序工具和库。

在正常操作期间,内核负责执行两个重要任务:

1、作为硬件和系统上运行的软件之间的接口。

2、尽可能高效地管理系统资源。

为此,内核通过内置的驱动程序或以后可作为模块安装的驱动程序与硬件通信。例如,当你计算机上运行的程序想要连接到无线网络时,它会将该请求提交给内核,后者又会使用正确的驱动程序连接到网络。

1、检查已安装的内核版本

让我们安装了一个发行版,它包含了一个特定版本的内核。为了展示当前系统中已安装的版本,我们可以使用以下命令:

 uname -sr
 uname -a
 cat /proc/version
复制代码

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

但是,这只会升级内核到仓库中可用的最新版本而不是在 www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。

与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。

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

 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
复制代码
 [root@vm1 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
 [root@vm1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
 获取http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
 获取http://elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
 准备中...                          ################################# [100%]
 正在升级/安装...
    1:elrepo-release-7.0-4.el7.elrepo  ################################# [100%]
复制代码

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

 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available -y
复制代码
 [root@vm1 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available -y
 已加载插件:fastestmirror
 Loading mirror speeds from cached hostfile
  * elrepo-kernel: hkg.mirror.rackspace.com
 elrepo-kernel                                                                                                                                                                        | 3.0 kB  00:00:00
 elrepo-kernel/primary_db                                                                                                                                                             | 2.0 MB  00:00:02
 可安装的软件包
 elrepo-release.noarch                                                                                 7.0-5.el7.elrepo                                                                         elrepo-kernel
 kernel-lt.x86_64                                                                                      5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-lt-devel.x86_64                                                                                5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-lt-doc.noarch                                                                                  5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-lt-headers.x86_64                                                                              5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-lt-tools.x86_64                                                                                5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-lt-tools-libs.x86_64                                                                           5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-lt-tools-libs-devel.x86_64                                                                     5.4.131-1.el7.elrepo                                                                     elrepo-kernel
 kernel-ml.x86_64                                                                                      5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 kernel-ml-devel.x86_64                                                                                5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 kernel-ml-doc.noarch                                                                                  5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 kernel-ml-headers.x86_64                                                                              5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 kernel-ml-tools.x86_64                                                                                5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 kernel-ml-tools-libs.x86_64                                                                           5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 kernel-ml-tools-libs-devel.x86_64                                                                     5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 perf.x86_64                                                                                           5.13.1-1.el7.elrepo                                                                      elrepo-kernel
 python-perf.x86_64                                                                                    5.13.1-1.el7.elrepo                                                                      elrepo-kernel
复制代码

2、安装最新的主线稳定内核

 yum --enablerepo=elrepo-kernel install kernel-ml -y
复制代码

最后,重启机器并应用最新内核,接着运行下面的命令检查最新内核版本:

 uname -sr
 uname -a
 cat /proc/version
复制代码

3、设置 GRUB 默认的内核版本

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

打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核。

 GRUB_TIMEOUT=5
 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
 GRUB_DEFAULT=0
 GRUB_DISABLE_SUBMENU=true
 GRUB_TERMINAL_OUTPUT="console"
 GRUB_CMDLINE_LINUX="spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
 GRUB_DISABLE_RECOVERY="true"
复制代码

接下来运行下面的命令来重新创建内核配置。

 grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码
 [root@vm1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
 Generating grub configuration file ...
 Found linux image: /boot/vmlinuz-5.13.1-1.el7.elrepo.x86_64
 Found initrd image: /boot/initramfs-5.13.1-1.el7.elrepo.x86_64.img
 Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
 Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
 Found linux image: /boot/vmlinuz-0-rescue-ffc96c7270434df89589ee6f41b1bd57
 Found initrd image: /boot/initramfs-0-rescue-ffc96c7270434df89589ee6f41b1bd57.img
 done
复制代码

重启并验证最新的内核已作为默认内核。

 [root@vm1 ~]# uname  -rs
 Linux 5.13.1-1.el7.elrepo.x86_64
复制代码
 [root@vm1 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
 [root@vm1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
 [root@vm1 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
 [root@vm1 ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y
 [root@vm1 ~]# sed -i 's/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/' /etc/default/grub
 [root@vm1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
 [root@vm1 ~]# reboot
复制代码
 1、查看当前系统内核
 [root@host-machine ~]# uname -r
 5.14.0-1.el7.elrepo.x86_64
 ​
 2、查看可以使用的内核列表
 [root@host-machine ~]# awk -F' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
 0 : CentOS Linux (5.14.0-1.el7.elrepo.x86_64) 7 (Core)
 1 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
 2 : CentOS Linux (0-rescue-b83eeb5f840a4b71b5ca692bf5be7649) 7 (Core)
 ​
 3、查看当前默认内核启动项
 [root@host-machine ~]# grub2-editenv list
 saved_entry=1
 ​
 4、更改默认启动内核项
 [root@host-machine ~]# grub2-set-default 0
 ​
 [root@host-machine ~]# grub2-editenv list
 saved_entry=0
复制代码

Guess you like

Origin juejin.im/post/7039648123987165215