1. 为什么需要升级RHEL8内核?
作为RHEL8系统管理员,你可能已经习惯了系统默认的内核版本。但随着时间的推移,你会发现新内核带来的性能优化、硬件兼容性提升和安全补丁非常重要。特别是在生产环境中,一个稳定的新内核往往能解决很多硬件驱动问题和性能瓶颈。
我遇到过不少案例,比如某次服务器部署新型NVMe SSD时,默认内核无法充分发挥其性能;还有一次是某款10G网卡在默认内核下频繁丢包。这些问题通过升级到ELRepo提供的最新稳定版内核都得到了完美解决。
ELRepo仓库提供了两种内核选择:kernel-lt(长期支持版)和kernel-ml(主线稳定版)。前者更适合追求稳定性的生产环境,后者则适合需要最新功能的测试环境。选择哪个版本取决于你的具体需求,但无论如何,升级过程都需要谨慎操作。
2. 环境准备与依赖安装
2.1 配置EPEL仓库
在开始内核升级前,我们需要确保系统已经配置了EPEL(Extra Packages for Enterprise Linux)仓库。EPEL提供了很多额外的软件包,是ELRepo依赖的基础。
# 安装EPEL仓库 sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm安装完成后,建议更新缓存:
sudo dnf makecache2.2 添加ELRepo仓库
ELRepo是专门提供硬件驱动和内核更新的高质量仓库。我们需要先导入其GPG密钥,再安装仓库配置:
# 导入GPG密钥 sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # 安装ELRepo仓库 sudo dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm如果你在国内,可以考虑使用清华大学的镜像源来加速下载:
sudo sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/elrepo.repo sudo sed -i 's|^#baseurl=http://elrepo.org/linux|baseurl=https://mirrors.tuna.tsinghua.edu.cn/elrepo|g' /etc/yum.repos.d/elrepo.repo3. 内核版本选择与安装
3.1 理解kernel-lt和kernel-ml的区别
ELRepo提供了两种内核版本:
- kernel-lt(Long Term Support):长期支持版本,经过充分测试,稳定性高,适合生产环境
- kernel-ml(Mainline Stable):主线稳定版本,包含最新功能和改进,但可能存在未知问题,适合测试环境
我个人的经验是:生产服务器用kernel-lt,开发测试机用kernel-ml。这样可以兼顾稳定性和新特性体验。
3.2 安装kernel-lt长期支持版
如果你需要长期稳定运行的环境,kernel-lt是最佳选择:
sudo dnf --enablerepo=elrepo-kernel install -y kernel-lt kernel-lt-devel kernel-lt-headers这里的--allowerasing参数会自动解决可能的包冲突问题,非常实用。
3.3 安装kernel-ml主线稳定版
如果你追求最新功能,可以安装kernel-ml:
sudo dnf --enablerepo=elrepo-kernel install -y kernel-ml kernel-ml-devel kernel-ml-headers安装完成后,建议检查已安装的内核版本:
rpm -qa | grep kernel4. 配置系统启动项
4.1 检查当前内核启动顺序
安装新内核后,我们需要确保系统会默认启动新内核:
sudo grubby --default-kernel查看所有可用内核:
sudo grubby --info=ALL4.2 设置默认启动内核
找到新安装的内核路径后,可以设置为默认启动项:
sudo grubby --set-default /boot/vmlinuz-5.4.17-1.el8.elrepo.x86_64也可以通过索引号设置:
sudo grub2-set-default 04.3 验证grub配置
最后,重新生成grub配置并验证:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg检查配置文件中是否包含新内核的启动项:
grep menuentry /boot/grub2/grub.cfg5. 升级后的维护工作
5.1 安全移除旧内核
为了节省空间和提高安全性,建议移除旧内核:
sudo dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q)这个命令会保留最新的两个内核版本(包括当前运行的),删除更旧的版本。
5.2 验证新内核运行状态
重启系统后,检查当前运行的内核版本:
uname -r同时建议检查系统日志,确认没有内核相关的错误:
journalctl -p 3 -xb5.3 常见问题排查
如果遇到启动问题,可以在grub界面选择旧内核启动,然后检查:
# 查看安装的内核包 rpm -qa | grep kernel # 检查grub配置 cat /boot/grub2/grub.cfg | grep -A10 menuentry我在实际运维中遇到过几次grub配置不完整的情况,通常重新安装一次内核包就能解决。