CentOS 更新内核并删除旧版内核

Eric 教程 496 次浏览 抢沙发

更新使用新版内核

添加 ELRepo 软件仓库(一个由社区维护的企业级 Linux 软件仓库),依次运行下面命令。

# 导入 ELRepo 公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

# 安装 ELRepo(适用 CentOS 7)
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

# 安装 ELRepo(适用 CentOS 6)
rpm -Uvh https://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm

编辑 ELRepo 配置文件,设置只用它的内核软件包(默认包含了其它类别软件)。

vi /etc/yum.repos.d/elrepo.repo

[elrepo]下的 enabled 改为 0,[elrepo-kernel] enabled 改为 1。保存后用 yum repolist all 检查软件仓库启用情况。

考虑之后安装&更新内核都通过 ELRepo 获取,为避免之后运行 yum update 影响默认内核版本设置。建议修改 Base.repo 配置文件,设置不通过 CentOS 自带源更新旧版内核。

vi /etc/yum.repos.d/CentOS-Base.repo

[updates] 下添加如下一行,排除 kernel 开头的软件包更新。

exclude=kernel*

之后可用 yum check-update kernel* 检查设置前后的变化(假设 Base.repo 存在内核更新)。

从 ELRepo 安装新版内核。这里有两个选择,分别是 kernel-lt 长期支持版本和 kernel-ml 最新主线版本。前者版本较低(写本文时测试版本是 4.4.179-1.el7.elrepo),因此如果用 TCP BBR 才升级内核的,只能选择 kernel-ml。

# 安装 kernel-lt 版本
yum --enablerepo=elrepo-kernel install kernel-lt

# 安装 kernel-ml 版本
yum --enablerepo=elrepo-kernel install kernel-ml

列出系统上已安装的内核版本。

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

设置使用指定内核版本。内核名称用上个命令查询。

grub2-set-default "CentOS Linux (4.4.179-1.el7.elrepo.x86_64) 7 (Core)"

运行 grub2-mkconfig -o /boot/grub2/grub.cfg 命令重新生成启动文件,reboot 重启生效。

确认当前使用的内核版本。

grub2-editenv list

注:该方式查询结果需取决 /etc/default/grub 文件里的 GRUB_DEFAULT 参数是默认 saved 值才准确。不然就用 uname -r 查询。

删除旧版内核和安装内核相关软件包

列出已安装的内核和相关软件包。

rpm -qa kernel\* | sort -V

这里用 package-cleanup 命令删除内核,需要先安装 yum-utils 软件包。

yum -y install yum-utils

删除内核旧版本(默认从最旧的开始删),修改其中数字以设置要保留几个旧内核版本。如果只有一个旧版内核,就不用操作了,建议保留以备不时之需。

package-cleanup --oldkernels --count=1

如果要限制内核或其它软件的版本并存数,修改 /etc/yum.conf 配置文件里的 installonly_limit 参数(默认为 5,最小只能设置 2,小于 2 将引发 yum 错误)。

删除旧版内核相关的软件包。

yum remove kernel-tools-libs kernel-tools

补安装新版内核相关软件包。其中 kernel-*-headers 是内核头文件,供 glibc 使用。有些软件需要用到,建议安装。

# 对应 kernel-lt 版本软件包
yum --enablerepo=elrepo-kernel install kernel-lt-tools kernel-lt-headers

# 对应 kernel-ml 版本软件包
yum --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-headers

运行 grub2-mkconfig -o /boot/grub2/grub.cfg 命令重新生成启动文件,reboot 重启生效。

发表评论

电邮地址用于 Gravatar 头像显示,不会被公开可见。