Rocky Linux 9 -> 10.1跨主版本升级(major upgrade)

Rocky Linux 9 → 10 这种**跨主版本升级(major upgrade)**在企业运维中确实要非常谨慎。
目前(截至 2025 年底),Rocky 10 已经发布,但官方还没正式提供像 leapp 那样“一键无损升级”的稳定路径。


一、官方现状与支持情况

项目 状态(2025年) 说明
Rocky 9 → 9.x ✅ 支持 dnf upgrade 即可滚动升级
Rocky 9 → 10 ⚠️ 实验性 RHEL 官方还未发布基于 leapp 的稳定迁移工具(leapp-data-rocky10 仍在测试)
RHEL 9 → 10(预览) 🔬 开发中 红帽官方计划在 2026 Q1 正式提供
推荐做法 ✅ 全量迁移安装(fresh install) 使用 Ansible/Kickstart/镜像重装 + 数据迁移脚本

二、推荐方案(稳妥生产可行)

方案 1:全新安装 Rocky 10 + 迁移数据

最安全、也是企业普遍采用的方式。

步骤示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 备份配置、用户、数据
sudo rsync -avz /etc /root/etc_backup_$(date +%F)/
sudo rsync -avz /home /root/home_backup_$(date +%F)/
sudo rsync -avz /var/www /root/www_backup_$(date +%F)/

# 2. 备份包列表
sudo dnf list installed > /root/pkglist.txt

# 3. 安装 Rocky 10(可用 ISO / kickstart / PXE)

# 4. 恢复数据与配置
sudo rsync -avz /mnt/backup/etc_backup/ /etc/
sudo dnf install $(awk '{print $1}' /root/pkglist.txt)

# 5. 验证服务运行状态
sudo systemctl list-units --type=service --state=failed

💡 适合生产环境、有配置管理(如 Ansible、Salt、Puppet)的系统。


方案 2:实验性 in-place 升级(仅实验 / 内测)

⚠️ 不建议直接在生产环境执行,可能破坏依赖或 SELinux label。

升级整体思路

  • Rocky 9 → 10 = ABI / glibc / toolchain 断代升级
  • leapp + 预检查 + 阻断机制(inhibitor)

本质不是“升级”,而是:

在原系统旁边构建一个 Rocky 10 用户空间
再切换引导。

flowchart LR
    A[Rocky Linux 9 运行态] --> B[leapp preupgrade]
    B -->|风险可控| C[构建 Rocky 10 用户空间]
    C --> D[切换内核 / initramfs]
    D --> E[重启]
    E --> F[Rocky Linux 10]
    B -->|inhibitor| G[升级被阻断]

正确的包安装方式
1.安装 leapp 核心

1
dnf install -y leapp

2.安装 EL9 → EL10 升级规则集(关键)

1
dnf install -y leapp-upgrade-el9toel10

说明一句人话:

  • leapp:引擎
  • leapp-upgrade-el9toel10:升级“法律条文”

  1. 升级前的硬性准备(不做=必翻车),系统必须是 最新的 Rocky 9
1
2
dnf update -y
reboot
[root@rocky9 ~]# cat /etc/os-release 
NAME="Rocky Linux"
VERSION="9.7 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.7"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.7 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
VENDOR_NAME="RESF"
VENDOR_URL="https://resf.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.7"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.7"
1
dnf repolist

只保留 rocky 官方仓库


4.关键一步:预升级检查,执行预检查

1
2
3
4
leapp preupgrade

export LEAPP_UPGRADE_PATH_TARGET_RELEASE=10.1
leapp preupgrade --target 10.1

经过验证发现不支持,10还没GA

5.你一定会看到两类结果

  • Report:警告
  • Inhibitor:直接阻断升级(必须修)

报告位置:

1
/var/log/leapp/leapp-report.txt

可以把它当成:
操作系统的体检报告 + 法医鉴定书


  1. 真正执行升级(只在 preupgrade 通过后,执行升级
1
leapp upgrade

系统会:

  • 下载 Rocky 10 用户空间
  • 生成新 initramfs
  • 写入新引导项

7.重启

1
reboot

启动菜单中会自动进入 Rocky Linux 10。


  1. 升级后的必做检查,确认版本
1
cat /etc/os-release
  1. 极其现实的一句话
  • 不是所有 Rocky 9 都“应该”升级到 10
    leapp 的设计哲学是:不升级,也比升级后死机强