告别CentOS7的坑,RHEL8内核升级保姆级教程:从ELRepo配置、清华源加速到grubby设置默认启动项
RHEL8内核升级全流程实战:从ELRepo配置到启动项优化
作为一名长期使用CentOS7的运维工程师,最近在迁移到RHEL8时遇到了一个棘手问题:原本熟悉的ELRepo源在CentOS7上已经清空,而RHEL8的内核管理方式又有诸多变化。经过一周的实践和踩坑,我总结出这套完整的内核升级方案,不仅解决了依赖冲突、下载速度慢等常见问题,还通过grubby工具实现了启动项的精准控制。下面将分享我的完整操作流程,特别适合需要快速搭建生产环境的实用主义者。
1. 环境准备与源配置
在开始内核升级前,我们需要确保基础环境配置正确。RHEL8与CentOS7在软件源管理上有显著差异,这也是许多迁移者第一个容易踩坑的地方。
首先导入ELRepo的GPG密钥,这是保证软件包完整性的关键步骤:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org接下来安装ELRepo源,这里推荐使用清华镜像源加速下载:
rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/elrepo/elrepo-release-8.el8.elrepo.noarch.rpm配置完成后,检查源是否生效:
yum repolist | grep elrepo应该能看到类似以下输出:
elrepo-kernel ELRepo.org Community Enterprise Linux Kernel Repository - el8重要提示:如果企业网络有安全限制,可能需要先配置代理或联系网络管理员开放相关域名访问权限。常见的网络问题包括:
- 连接超时(检查防火墙规则)
- 证书验证失败(确保系统时间准确)
- 依赖解析错误(清理yum缓存后重试)
2. 内核版本选择与安装
ELRepo提供两种内核版本选择,它们的特性和适用场景如下表所示:
| 内核类型 | 版本特点 | 适用场景 | 更新频率 |
|---|---|---|---|
| kernel-lt | 长期支持版本 | 生产环境、稳定性优先 | 每2-3年大版本更新 |
| kernel-ml | 主线稳定版本 | 开发测试、需要新特性 | 每2-3个月更新 |
对于大多数生产环境,我推荐使用kernel-lt版本。安装命令如下:
yum --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel -y --allowerasing这个命令有几个关键参数需要注意:
--enablerepo=elrepo-kernel:明确指定使用ELRepo的内核仓库--allowerasing:自动解决可能的包冲突(这是RHEL8比CentOS7改进的地方)kernel-lt-devel:同时安装开发包,方便后续编译驱动
安装完成后,检查已安装的内核版本:
rpm -qa | grep kernel- | sort典型输出应该包含新旧内核版本,类似:
kernel-core-4.18.0-348.el8.x86_64 kernel-lt-5.4.179-1.el8.elrepo.x86_64 kernel-lt-devel-5.4.179-1.el8.elrepo.x86_643. 启动项管理与grubby使用技巧
RHEL8默认使用grubby工具管理启动项,这比CentOS7时代的grub2-mkconfig更加灵活。以下是关键操作步骤:
首先查看当前所有可用内核:
grubby --info=ALL输出示例:
index=0 kernel="/boot/vmlinuz-5.4.179-1.el8.elrepo.x86iv_64" args="ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet" root="/dev/mapper/rhel-root" initrd="/boot/initramfs-5.4.179-1.el8.elrepo.x86iv_64.img" title="Red Hat Enterprise Linux (5.4.179-1.el8.elrepo.x86iv_64) 8.5 (Ootpa)" index=1 kernel="/boot/vmlinuz-4.18.0-348.el8.x86iv_64" ...设置新内核为默认启动项:
grubby --set-default /boot/vmlinuz-5.4.179-1.el8.elrepo.x86iv_64验证设置是否生效:
grubby --default-kernel高级技巧:如果需要修改内核参数(比如添加console=ttyS0),可以使用:
grubby --update-kernel=ALL --args="console=ttyS0"4. 后续维护与问题排查
内核升级完成后,还需要进行一些清理和验证工作。建议的操作流程:
重启系统并验证新内核:
uname -r应该显示新安装的内核版本号
确认系统服务正常运行:
systemctl list-units --state=failed安全移除旧内核(可选):
yum remove kernel-core-4.18.0-348.el8.x86iv_64
常见问题及解决方案:
问题1:启动时卡在dracut界面
- 原因:通常是initramfs镜像未正确生成
- 解决:
dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
问题2:网络驱动不工作
- 原因:新内核可能缺少特定驱动
- 解决:
yum install kernel-lt-modules-extra modprobe <驱动名>
问题3:性能下降
- 检查是否启用了正确的CPU微码:
如果没有加载,安装对应微码包:dmesg | grep microcodeyum install intel-microcode 或 amd-microcode
这套方案已经在我们的测试环境和部分生产服务器上验证通过,相比网上零散的教程,主要优化了以下几点:
- 使用国内镜像源加速下载
- 明确区分kernel-lt和kernel-ml的选择标准
- 提供完整的grubby操作指南
- 包含常见问题的排查方法
在实际操作中,建议先在测试环境验证,特别是对于运行关键业务的服务器。每次内核升级后,至少要监控系统日志和性能指标24小时,确保没有隐性兼容问题。
