Rocky Linux 9 升到最新主线内核

root
root
root
管理员
3
文章
0
粉丝
LinuxRocky Linux 9 升到最新主线内核已关闭评论38阅读模式

Rocky Linux 9 升到当前 9 系最新版可以做;生产环境不要轻易换 kernel.org 最新主线内核。 截至 2026-07-05,Rocky 官网显示 Rocky Linux 9.8 已发布;Rocky 9.8 发行内核仍是 5.14.0-687.x,这是 RHEL/Rocky 的企业内核路线:版本号不新,但会回补安全修复和驱动补丁。

一、先定策略

推荐优先级

项目 Rocky 官方 5.14 ELRepo 6.1
定位 企业发行版内核 上游 LTS 内核
稳定性 更适合生产 也稳定,但集成风险更高
Secure Boot 默认兼容 未受信任的内核默认拦截
内核功能 版本号旧,但有大量回补 原生功能更新
硬件支持 够用,偏保守 新硬件支持更好
Docker/K8s 推荐 可用,但要测试
数据库服务器 推荐 一般没必要
kmod/DKMS 兼容性更好 更容易遇到模块问题
生产默认 推荐 谨慎

ELRepo 自己也说明,kernel-lt 基于长期支持分支,kernel-ml 基于 mainline stable 分支;这些内核包可与 RHEL/Rocky 官方内核并存,但 ELRepo 也强调这类内核更偏硬件支持/测试,且 “As-Is”、不保证支持,还不支持 Secure Boot 签名。

所以我的结论是:

生产环境:先只做 Rocky 9.8 + 官方 kernel。 只有在你遇到明确问题,例如新网卡、新 NVMe、GPU、主板芯片、无线网卡、ZFS、Btrfs、特定 eBPF 功能不够,再考虑 ELRepo kernel-ltkernel-ml 不建议作为长期生产内核。


二、升级前检查

先采集现状,方便回滚和排查。

cat /etc/os-release
cat /etc/redhat-release
uname -r

hostnamectl
uptime
df -hT
lsblk -f

dnf repolist
dnf list installed kernel\*
rpm -qa | egrep 'kernel|kmod|dkms|nvidia|zfs|virtualbox|wireguard|falco|sysdig' | sort

grubby --default-kernel
grubby --info=ALL | egrep '^index=|^kernel=|^title='

重点看这几个风险点:

df -h /boot
df -h /
dnf check
dnf repoquery --duplicates
dnf repoquery --unsatisfied

如果 /boot 小于 500MB,或者已经塞满很多旧内核,先不要直接升级。RHEL/Rocky 默认通过 installonly_limit 保留有限数量内核;Red Hat 文档也说明可以用 installonly_limit=3 这类参数控制保留数量。

检查:

grep -E '^installonly_limit' /etc/dnf/dnf.conf

建议保留:

installonly_limit=3

不要设成 1。至少保留一个旧内核用于回滚。


三、升级最新版

Rocky 9 小版本升级一般就是正常 dnf upgrade。这不是 9 升 10。Rocky 官方对跨大版本的态度是:不支持原地大版本升级,推荐重装迁移

先清缓存:

sudo dnf clean all
sudo dnf makecache

查看会升级什么:

sudo dnf check-update

执行升级:

sudo dnf upgrade -y

升级完成后重启:

sudo reboot

重启回来检查:

cat /etc/redhat-release
uname -r
rpm -q rocky-release
dnf list installed kernel\* | sort

如果你是从 Rocky 9.2、9.3、9.4 之类升上来,完成后应该进入当前 9 系最新 release。

Rocky 官网当前显示 9.8 已发布,Rocky 9.8 对应发行内核是 5.14.0-687.10.1。


四、升级后基础验证

1. 系统服务

systemctl --failed
journalctl -p err -b --no-pager
dmesg -T | egrep -i 'error|fail|warn|panic|segfault|oom|firmware' | tail -100

2. 网络

ip a
ip r
resolvectl status 2>/dev/null || cat /etc/resolv.conf
ping -c 3 223.5.5.5
ping -c 3 www.baidu.com

如果是服务器,重点确认 SSH 不断:

ss -lntp
systemctl status sshd --no-pager

3. Docker / containerd / K8s

systemctl status docker --no-pager 2>/dev/null
systemctl status containerd --no-pager 2>/dev/null
docker ps 2>/dev/null
crictl ps 2>/dev/null

K8s 节点额外看:

systemctl status kubelet --no-pager
kubectl get nodes -o wide
kubectl get pods -A | egrep -v 'Running|Completed'

4. 数据库类服务

PostgreSQL / Redis / MySQL 这类建议检查监听、日志、实际连接:

ss -lntp | egrep '5432|6379|3306'
journalctl -u postgresql --no-pager -n 100 2>/dev/null
journalctl -u redis --no-pager -n 100 2>/dev/null

Docker 场景:

docker ps
docker logs --tail=100 <container_name>

五、升级到“最新稳定内核”

这里要分清楚:

A. 官方 Rocky 9 最新内核

这个最稳:

sudo dnf upgrade -y kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra
sudo reboot

验证:

uname -r
rpm -q kernel

这是我最推荐的生产方案。


B. ELRepo kernel-lt

安装elrepo前需要确认bios的Secure Boot有没有关闭,Secure Boot 是启动签名校验;关掉后,ELRepo 6.1 不会再因为签名被拦。

适合:新硬件、驱动、较新 eBPF/文件系统/网卡支持,但又不想追 mainline。

安装 ELRepo:

sudo dnf install -y elrepo-release
sudo dnf makecache

Rocky Wiki 说明 ELRepo 是社区认可仓库,主要提供新内核和 kmod 驱动包,但 kernel 仓库需要单独启用。

查看可用内核:

sudo dnf --disablerepo='*' --enablerepo=elrepo-kernel list available 'kernel-lt*' 'kernel-ml*'

安装 kernel-lt

sudo dnf --enablerepo=elrepo-kernel install -y kernel-lt kernel-lt-devel

不要乱装 kernel-lt-headers。ELRepo 文档明确提醒,很多情况下你需要的是 kernel-lt-devel,不是 kernel-lt-headers

查看启动项:

grubby --info=ALL | egrep '^index=|^kernel=|^title='

设置默认启动到 kernel-lt,例如:

sudo grubby --set-default "$(ls /boot/vmlinuz-*elrepo* | sort -V | tail -1)"
grubby --default-kernel

重启:

sudo reboot

验证:

uname -r

C. ELRepo kernel-ml

不建议生产长期用,安装方式类似:

sudo dnf --enablerepo=elrepo-kernel install -y kernel-ml kernel-ml-devel

但是我不建议你把它作为生产默认内核。ELRepo 对 kernel-ml 的说明更偏“硬件测试/临时解决硬件不工作问题”,不是企业生产默认路线。


六、内核升级后的重点排查

1. 确认当前内核

uname -r
grubby --default-kernel
grubby --default-title

2. 确认模块是否正常

lsmod | head
dmesg -T | egrep -i 'module|firmware|taint|error|fail' | tail -100

如果你有 DKMS、NVIDIA、ZFS、VirtualBox、Falco、Sysdig、WireGuard 这类内核模块,重点检查:

dkms status 2>/dev/null
rpm -qa | egrep 'dkms|kmod|nvidia|zfs|virtualbox|falco|sysdig|wireguard' | sort

常见问题是:内核升了,但第三方模块没编译成功。比如 NVIDIA 驱动、ZFS、VirtualBox 驱动都容易中招。

3. Secure Boot

如果开启了 Secure Boot,ELRepo 文档明确说 kernel-lt 包没有 Secure Boot 签名。

检查:

mokutil --sb-state

如果是 SecureBoot enabled,你要么关闭 Secure Boot,要么走自签名/MOK 流程,否则 ELRepo 内核可能无法正常启动。

4. 网络驱动

lspci -nnk | egrep -A3 -i 'ethernet|network'
ethtool -i eth0 2>/dev/null
ip link

eth0 换成实际网卡名。

5. 存储驱动

lsblk
blkid
mount -a
findmnt
dmesg -T | egrep -i 'nvme|scsi|xfs|ext4|btrfs|zfs|io error|reset' | tail -100

七、回滚方案

1. 临时从 GRUB 选择旧内核

重启时在 GRUB 菜单选择旧的 Rocky 官方内核启动。 这也是为什么升级前不要删除旧内核。

2. 设置默认回官方 Rocky 内核

查看所有内核:

grubby --info=ALL | egrep '^index=|^kernel=|^title='

找官方 Rocky 内核,一般路径类似:

/boot/vmlinuz-5.14.0-xxx.el9_x.x86_64

设置默认:

sudo grubby --set-default /boot/vmlinuz-5.14.0-xxx.el9_x.x86_64
sudo reboot

Oracle Linux 文档对 grubby --set-default 的说明也适用于 RHEL 系 GRUB2 管理思路:指定完整 /boot/vmlinuz-* 路径后,默认内核设置会立即生效并在重启后使用。

3. 删除 ELRepo 内核

确认已经启动回官方内核后:

uname -r

如果当前不是 elrepo 内核,可以删除:

sudo dnf remove -y 'kernel-lt*' 'kernel-ml*'
sudo dnf config-manager --set-disabled elrepo-kernel
sudo dnf clean all

八、实际执行流程

# 1. 记录现状
cat /etc/redhat-release
uname -r
df -hT
dnf repolist
rpm -qa | egrep 'kernel|kmod|dkms|nvidia|zfs|virtualbox' | sort
grubby --info=ALL | egrep '^index=|^kernel=|^title='

# 2. 检查包状态
dnf check
dnf repoquery --duplicates
dnf repoquery --unsatisfied

# 3. 升级 Rocky 9 到当前 9 系最新
sudo dnf clean all
sudo dnf makecache
sudo dnf upgrade -y

# 4. 重启
sudo reboot

# 5. 验证
cat /etc/redhat-release
uname -r
systemctl --failed
journalctl -p err -b --no-pager

如果一切正常,到这里就够了。

只有确实需要较新内核时,再加:

sudo dnf install -y elrepo-release
sudo dnf --disablerepo='*' --enablerepo=elrepo-kernel list available 'kernel-lt*' 'kernel-ml*'

# 更推荐 kernel-lt,而不是 kernel-ml
sudo dnf --enablerepo=elrepo-kernel install -y kernel-lt kernel-lt-devel

sudo grubby --set-default "$(ls /boot/vmlinuz-*elrepo* | sort -V | tail -1)"
sudo reboot

九、最终建议

目标如果是“系统保持最新、稳定、安全”,建议:Rocky Linux 9 → 升到 9.8,保留官方 5.14 企业内核,不换 kernel-ml。

目标如果是“硬件太新,官方内核不识别网卡/NVMe/GPU/某些驱动”,再考虑:Rocky 9.8 + ELRepo kernel-lt。

目标如果是“体验最新 Linux kernel 功能”,才考虑:ELRepo kernel-ml,但不要直接上生产默认启动。

 
root
  • 本文由 root 发表于2026年7月5日 14:35:38
  • 转载请务必保留本文链接:https://www.wtcat.com/36.html