Yum更新系统内核:一份清晰、安全的操作指南

为系统更新内核,听起来是个大工程,但其实只要步骤清晰,就能安全、顺利地完成。关键在于,你得先搞清楚自己到底需要哪种更新:是打个小补丁,还是来一次大版本升级?这决定了后续完全不同的操作路径。
一、准备与版本确认
动手之前,先摸清家底。这就像医生开药前得先问诊,至关重要。
- 确认系统版本与当前内核:
- 查看系统发行版:
cat /etc/redhat-release - 查看内核版本:
uname -r或uname -a
- 查看系统发行版:
- 建议先安装常用内核开发包(编译驱动/模块需要):
yum install -y kernel-devel kernel-headers - 核心说明:这里有个常见的理解误区。如果仅仅使用发行版自带的官方仓库,执行
yum update kernel通常只能获得同大版本下的安全补丁和小版本更新。如果你想把内核升级到更新的主线或长期支持版本,那就必须引入第三方仓库(比如ELRepo),然后从那里安装新内核包。
二、方式A:小版本更新(发行版仓库)
如果你只想获取官方提供的安全修复和稳定性更新,这个方法最直接、最安全。
- 操作步骤:
- 列出可升级的内核版本:
yum list kernel --showduplicates - 执行更新:
yum update -y kernel - 重启生效:
reboot - 验证新内核:
uname -r
- 列出可升级的内核版本:
- 特点:流程简单,风险极低。但缺点是版本上限被官方仓库牢牢锁死,无法获得更前沿的内核特性。
三、方式B:大版本更新(ELRepo仓库)
当你需要新硬件支持、特定功能或更高的性能时,就需要借助ELRepo这样的第三方仓库来升级内核大版本了。别担心,跟着步骤走,一样稳妥。
- 导入GPG密钥并启用ELRepo仓库(以CentOS 7为例,其他版本请相应替换版本号):
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
- 查看ELRepo提供的内核包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list a vailable
- 选择并安装内核(二选一):
- 主线稳定版(最新特性):
yum --enablerepo=elrepo-kernel install -y kernel-ml - 长期支持版(追求稳定):
yum --enablerepo=elrepo-kernel install -y kernel-lt - 如果需要头文件或开发包:
yum --enablerepo=elrepo-kernel install -y kernel-{ml,lt}-devel
- 主线稳定版(最新特性):
- 设置默认启动内核(这是关键一步,确保重启后进入新内核):
- 查看GRUB启动项顺序:
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg - 按序号设置默认项:
grub2-set-default 0(将0替换为目标内核的序号) - 或者,你也可以编辑
/etc/default/grub文件,设置GRUB_DEFAULT=0,然后重新生成配置。 - 生成GRUB配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
- 查看GRUB启动项顺序:
- 重启并验证:执行
reboot,重启后运行uname -r确认新内核已生效。
重要说明:ELRepo仓库中的 kernel-ml 代表最新的主线稳定内核,而 kernel-lt 则是长期支持版本。采用yum install方式安装新内核是“新增”而非“替换”,旧内核会被保留,这为万一出现问题提供了宝贵的回滚机会。
四、验证与回滚
更新完成不是终点,验证和掌握回滚方法才能让你高枕无忧。
- 验证要点:
- 当前运行内核:
uname -r - 系统已安装的所有内核包:
rpm -qa | grep kernel - 默认启动项:
grub2-editenv list
- 当前运行内核:
- 回滚方法:
- 如果新内核有问题,重启时在GRUB菜单手动选择旧内核进入系统。进入后,将默认启动项改回旧内核序号(例如
grub2-set-default <旧序号>),并重新生成GRUB配置。 - 确认系统在旧内核下运行稳定后,可以移除有问题的内核包(注意:切勿删除当前正在运行的内核):
yum remove -y kernel-{ml,lt}-<版本号>。或者,使用package-cleanup --oldkernels清理旧内核,通常建议保留1-2个旧版本以备不时之需。
- 如果新内核有问题,重启时在GRUB菜单手动选择旧内核进入系统。进入后,将默认启动项改回旧内核序号(例如
五、注意事项
最后,几个关键提醒能帮你避开大多数坑。
- 备份先行:升级前务必备份重要数据和配置文件,并在业务低峰期操作。
- 理解“安装”与“更新”:使用
yum/dnf install安装新内核是安全做法,因为它会保留旧内核。而某些“升级”操作可能会覆盖旧版,一旦新内核启动失败,恢复起来会非常麻烦。 - 环境兼容性:某些特定环境(如容器、虚拟化平台)对内核版本非常敏感,升级前请务必确认兼容性。对于生产服务器,如果追求极致稳定,应优先选择长期支持版(kernel-lt)。
- 慎用自动更新排除:如果因特殊原因需要禁止内核自动更新,可以在
/etc/yum.conf中添加exclude=kernel*。但需要警惕的是,在需要持续获得安全修复的环境中,长期排除内核更新会带来严重的安全风险。
