非常好的主题 👍
下面是系统管理员最常用、最安全的 CentOS 7 系统更新与内核升级完整指南(含命令、风险说明和最佳实践)。


🧩 CentOS 7 系统更新与内核升级完整教程


一、系统更新与内核升级的区别

操作说明是否重启是否影响系统稳定
系统更新(yum update)更新系统软件包(安全补丁、依赖等)否(一般)安全
内核升级(kernel update)升级 Linux 内核版本✅ 需要⚠️ 有风险(驱动、内核模块不兼容)

建议:
⚙️ 先更新系统,再考虑升级内核。


二、检查系统版本与内核版本

# 查看系统版本
cat /etc/redhat-release

# 查看当前内核版本
uname -r

输出示例:

CentOS Linux release 7.9.2009 (Core)
3.10.0-1160.el7.x86_64


三、系统更新(推荐)

1️⃣ 更新 yum 源

确保系统源可用(推荐使用阿里云或清华镜像)。

# 备份原始源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 使用阿里云镜像
curl -o /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo

# 清除缓存并重新生成
yum clean all
yum makecache

2️⃣ 更新系统所有软件包

yum update -y

3️⃣ 检查更新结果

yum list updates

若无输出,则说明系统已是最新状态。


四、内核升级(推荐使用 ELRepo 源)

CentOS 7 默认内核为 3.10。
可以通过 ELRepo 升级到稳定版(例如 5.x)。


1️⃣ 安装 ELRepo 仓库

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

验证是否安装成功:

yum repolist | grep elrepo

输出类似:

elrepo-kernel/7/x86_64


2️⃣ 查看可用内核版本

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

示例输出:

kernel-lt.x86_64     5.4.262-1.el7.elrepo
kernel-ml.x86_64     6.9.9-1.el7.elrepo

内核类型说明
kernel-ltLong Term(长期支持,推荐生产环境)
kernel-mlMainline(最新版,适合测试或研究环境)

3️⃣ 安装新内核(推荐长期支持版)

yum --enablerepo=elrepo-kernel install -y kernel-lt

或安装最新主线版:

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


4️⃣ 查看所有已安装内核

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

示例输出:

CentOS Linux (6.9.9-1.el7.elrepo.x86_64)
CentOS Linux (3.10.0-1160.el7.x86_64)


5️⃣ 设置新内核为默认启动项

# 查看当前默认启动项
grub2-editenv list

# 获取启动项索引
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

# 设置默认内核(例如第0项)
grub2-set-default 0

# 重新生成grub配置(UEFI系统使用不同命令)
grub2-mkconfig -o /boot/grub2/grub.cfg
# 如果是UEFI系统(/boot/efi 目录存在)
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg


6️⃣ 重启并验证内核

reboot

重启后验证:

uname -r

输出应类似:

5.4.262-1.el7.elrepo.x86_64


五、保留旧内核(防止升级失败)

CentOS 默认会保留最近的几个内核版本。
可以手动查看并删除旧版本:

# 查看已安装的内核包
rpm -qa | grep kernel

# 删除旧版本(小心操作)
yum remove kernel-3.10.0-1160.el7.x86_64 -y

⚠️ 建议至少保留一个旧内核,以防新内核无法启动时回滚。


六、常见问题与解决方案

问题原因解决方案
启动后黑屏 / 卡死新内核驱动不兼容从 GRUB 菜单选择旧内核启动
网络失效新内核未加载网卡驱动重新安装驱动或回退旧内核
yum update 卡死镜像源不稳定换用阿里云 / 清华源
grub 配置错误手动修改失败重新执行 grub2-mkconfig

七、安全建议

升级前

  • 备份 /boot/etc/grub2.cfg
  • 使用快照(云服务器推荐)。

升级后

  • 检查驱动(如网卡、RAID、虚拟机工具);
  • 检查启动日志: dmesg | grep error

八、一键脚本(自动更新 + 内核升级)

#!/bin/bash
# CentOS7 一键系统更新与内核升级(使用ELRepo)

echo "=== 更新系统 ==="
yum clean all
yum makecache
yum update -y

echo "=== 安装 ELRepo 源 ==="
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

echo "=== 升级内核 ==="
yum --enablerepo=elrepo-kernel install -y kernel-lt

echo "=== 更新 grub ==="
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg

echo "=== 操作完成,请重启生效 ==="

保存为:

nano update_kernel.sh
chmod +x update_kernel.sh
./update_kernel.sh


✅ 总结

操作命令是否重启建议
系统更新yum update -y定期执行
内核升级yum --enablerepo=elrepo-kernel install -y kernel-lt每年或必要时升级
查看内核uname -r检查版本
回退内核GRUB 菜单选择旧版本出问题时使用