网站搜索

如何在 CentOS 7 中安装或升级到内核 5.0


尽管有些人使用Linux这个词来代表整个操作系统,但需要注意的是,严格来说,Linux只是内核。另一方面,发行版是一个建立在内核之上的全功能系统,具有各种应用程序工具和库。

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

  1. 充当系统上运行的硬件和软件之间的接口。
  2. 尽可能有效地管理系统资源。

为此,内核通过内置的驱动程序或以后可以作为模块安装的驱动程序与硬件进行通信。

例如,当计算机上运行的应用程序想要连接到无线网络时,它会将该请求提交给内核,内核又使用正确的驱动程序连接到网络。

建议阅读: 如何在 Ubuntu 中升级内核

随着新设备和技术的定期出现,如果我们想充分利用它们,保持内核最新非常重要。此外,更新内核将帮助我们利用新的内核功能并保护自己免受先前版本中发现的漏洞的影响。

准备好更新 CentOS 7 或其衍生产品之一(例如 RHEL 7Fedora)上的内核了吗?如果是这样,请继续阅读!

第1步:检查安装的内核版本

当我们安装发行版时,它包含特定版本的 Linux 内核。要显示系统上安装的当前版本,我们可以执行以下操作:

uname -sr

下图显示了上述命令在 CentOS 7 服务器中的输出:

如果我们现在访问 https://www.kernel.org/,我们将看到在撰写本文时最新的内核版本是 5.0(同一站点上还提供其他版本)。

这个新的Kernel 5.0版本是一个长期版本,将支持 6 年,之前所有 Linux 内核版本仅支持 2 年。

需要考虑的一件重要事情是内核版本的生命周期 - 如果您当前使用的版本即将结束生命,则在该日期之后将不再提供错误修复。有关更多信息,请参阅内核版本页面。

步骤2:在CentOS 7中升级内核

大多数现代发行版都提供了一种使用包管理系统(例如 yum )和官方支持的存储库来升级内核的方法。

重要:如果您希望运行自定义编译的内核,那么您应该阅读我们的文章,该文章解释了如何从源代码在 CentOS 7 上编译 Linux 内核。

但是,这只会升级到发行版存储库中可用的最新版本,而不是 https://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-3.el7.elrepo.noarch.rpm 

启用存储库后,您可以使用以下命令列出可用的 kernel.lated 软件包:


yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirror-hk.koddos.net
Available Packages
kernel-lt.x86_64                        4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-devel.x86_64                  4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-doc.noarch                    4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-headers.x86_64                4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools.x86_64                  4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs.x86_64             4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs-devel.x86_64       4.4.176-1.el7.elrepo        elrepo-kernel
kernel-ml.x86_64                        5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-devel.x86_64                  5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-doc.noarch                    5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-headers.x86_64                5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools.x86_64                  5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs.x86_64             5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs-devel.x86_64       5.0.0-1.el7.elrepo          elrepo-kernel
perf.x86_64                             5.0.0-1.el7.elrepo          elrepo-kernel
python-perf.x86_64                      5.0.0-1.el7.elrepo          elrepo-kernel

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


yum --enablerepo=elrepo-kernel install kernel-ml

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.net.in
 * elrepo: mirror-hk.koddos.net
 * elrepo-kernel: mirror-hk.koddos.net
 * epel: repos.del.extreme-ix.org
 * extras: centos.mirror.net.in
 * updates: centos.mirror.net.in
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:5.0.0-1.el7.elrepo will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================
 Package                Arch        Version                 Repository        Size
====================================================================================
Installing:
 kernel-ml              x86_64      5.0.0-1.el7.elrepo      elrepo-kernel     47 M

Transaction Summary
====================================================================================
Install  1 Package

Total download size: 47 M
Installed size: 215 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-5.0.0-1.el7.elrepo.x86_64.rpm                           |  47 MB  00:01:21     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-ml-5.0.0-1.el7.elrepo.x86_64                1/1 
  Verifying  : kernel-ml-5.0.0-1.el7.elrepo.x86_64                1/1 

Installed:
  kernel-ml.x86_64 0:5.0.0-1.el7.elrepo                                                                                                                                                                            

Complete!

最后,重新启动您的计算机以应用最新的内核,然后从菜单中选择最新的内核,如图所示。

以 root 身份登录,然后运行以下命令来检查内核版本:

uname -sr

步骤 3:在 GRUB 中设置默认内核版本

要使新安装的版本成为默认引导选项,您必须修改 GRUB 配置,如下所示:

打开并编辑文件 /etc/default/grub 并设置 GRUB_DEFAULT=0。这意味着 GRUB 初始屏幕中的第一个内核将被用作默认值。

GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

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


grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.0.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.0.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.20.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.20.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.19.11-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.19.11-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.19.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.19.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.1.3.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.1.3.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-1e2b46dbc0c04b05b592c837c366bb76
Found initrd image: /boot/initramfs-0-rescue-1e2b46dbc0c04b05b592c837c366bb76.img
done

重新启动并验证现在默认使用最新的内核。

恭喜!您已经升级了 CentOS 7 中的内核!

概括

在本文中,我们解释了如何轻松升级系统上的 Linux 内核。还有另一种方法我们没有介绍,因为它涉及从源代码编译内核,这需要一整本书,并且不推荐在生产系统上使用。

尽管它代表了最好的学习体验之一,并且允许对内核进行细粒度配置,但您可能会导致系统无法使用,并且可能必须从头开始重新安装。

如果您仍然对构建内核作为学习体验感兴趣,您可以在内核新手页面找到有关如何执行此操作的说明。

与往常一样,如果您对本文有任何疑问或意见,请随时使用下面的表格。