在2021年12月31日CentOS 8结束其生命周期之后,我们在更新CentOS 8服务器时基本上都会遇到报错。
报错信息为“Failed to download metadata for repo 'AppStream'”,这意味着我们将不能再收到来自官方CentOS 8项目的任何开发更新。
但是,如果在CentOS 8生命周期结束之后,我们出于任何原因仍需要使用或已经在使用此操作系统,则需要将镜像更改为Vault,它将像其他旧CentOS版本一样永久存档。
首先,我们需要使用以下命令将YUM源中指向CentOS官方URL的repo URL 更改为 vault.centos.org。
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
修改配置之后,我们就可以使用yum命令再次尝试更新。
更新完成之后,我们可以看到系统版本已经升级到了8.5.2111,但是内核版本还是老版本。
为什么内核版本不能自动升级呢?简单理解一下,内核是任何Linux操作系统中最重要的组件,充当计算机硬件和软件进程之间的解释器或中介,负责流程管理、内存管理、设备驱动程序、系统调用和安全等任务。每个Linux发行版都附带一个稳定版本的Linux内核以及支持的软件和驱动程序,这个内核可能不是最新的,一般需要升级整个操作系统才能迁移到另一个Linux内核。
当然,最新的Linux内核也可以通过ELRepo yum仓库来获取。
首先安装ELRepo。
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
然后导入ELRepo yum仓库的公钥。
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
构建缓存。
然后我们就可以在CentOS 8上安装最新的Linux内核了。
搜索elrepo-kernel频道和kernel-ml相关的软件包。kernel-ml是主线稳定内核,对应的,还有一个kernel-lt,是长期支持内核,都是基于RHEL的发行版的。目前,此频道中没有任何长期支持的内核可用,所以我们使用基于Linux Kernel 5.7的最新的稳定版本内核。
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-ml
然后使用以下命令直接安装kernel-ml包就可以了。
yum --enablerepo="elrepo-kernel" install -y kernel-ml
因为这个服务器在美国,访问特别的慢,只有三四十KB,一共61MB的文件,大概要下半个小时左右。
要加载新的 Linux 内核,我们需要重新启动 CentOS 8 机器。
从这里我们也可以看到,其实现在不算是把内核升级到5.18.5了,我们可以看到有两个内核版本的系统在。所以更合适地讲,应该是重新安装了一个内核,在启动时可以选择要启动的内核。
启动之后,我们再查看内核版本信息。
如果我们想用回之前的内核,可以在启动时选择之前的内核版本。
此时内核版本就是4.18.0。
当然,我们也可以使用以下命令移除掉5.18.5版本的内核。
yum remove -y kernel-ml
需要注意的是,不能移除正在运行的内核版本,需要更换到其他内核之后再移除目标的内核版本。
再次重启,启动页面就恢复了往日的平静了。
不过,即使移除了高版本内核,当前版本内核的gcc还是更新了的。
我们之前的gcc版本是8.3.1 20190507 (Red Hat 8.3.1-4) (GCC),现在版本停留在了8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)。