非常好的主题 👍
下面是系统管理员最常用、最安全的 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-lt | Long Term(长期支持,推荐生产环境) |
kernel-ml | Mainline(最新版,适合测试或研究环境) |
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 菜单选择旧版本 | ✅ | 出问题时使用 |
发表回复