跳转到内容

迁移到 Rocky Linux

本文将指导你使用 Rocky Linux 官方迁移工具 migrate2rocky.sh,从 CentOS 8、CentOS Stream、RHEL、AlmaLinux、Oracle Linux 等 EL 兼容发行版迁移到 Rocky Linux。

在开始迁移之前,请确认以下事项:

  • 操作系统版本:CentOS 8、CentOS Stream 8/9、RHEL 8/9、AlmaLinux 8/9、Oracle Linux 8/9 等 EL8+ 兼容系统
  • 磁盘空间/var 分区至少有 5 GB 可用空间
  • 网络连接:服务器能够访问外网以下载 Rocky Linux 软件包
  • root 权限:迁移过程需要 root 或 sudo 权限
  • 完整备份:务必在迁移前完成系统快照或完整备份

重要提示: migrate2rocky.sh 目前主要支持 EL8 和 EL9 系统。CentOS 7 用户需要先升级到 EL8 才能使用此工具。

确认当前操作系统版本
$ cat /etc/os-release
备份已安装软件包列表
$ rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort > ~/packages-before-migration.txt
备份运行中的服务
$ systemctl list-units --type=service --state=running > ~/services-before-migration.txt
备份仓库配置
$ cp -a /etc/yum.repos.d/ ~/yum.repos.d.bak/
创建系统快照(如果使用 LVM)
$ sudo lvcreate --size 10G --snapshot --name pre_migration_snap /dev/mapper/centos-root

migrate2rocky.sh 由 Rocky Linux 官方维护,托管在 GitHub 上。

安装必要工具
$ sudo dnf install -y curl git

有两种方式获取迁移脚本:

下载 migrate2rocky.sh
$ curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
克隆 rocky-tools 仓库
$ git clone https://github.com/rocky-linux/rocky-tools.git
$ cd rocky-tools/migrate2rocky/
确认脚本已就绪
$ ls -la migrate2rocky.sh

基本迁移(CentOS 8 / CentOS Stream 8)

Section titled “基本迁移(CentOS 8 / CentOS Stream 8)”
运行迁移脚本
$ sudo bash migrate2rocky.sh -r

-r 参数表示执行完整迁移(包含 dnf distro-sync)。脚本会自动完成以下步骤:

  1. 检测当前操作系统和版本
  2. 检查是否存在已知的不兼容情况
  3. 下载 Rocky Linux GPG 密钥
  4. 替换系统标识包(*-release*-logos*-gpg-keys 等)
  5. 执行 dnf distro-sync 将所有软件包同步到 Rocky Linux 版本

对于 CentOS Stream 9、AlmaLinux 9 等 EL9 系统:

下载 EL9 版本的迁移脚本
$ curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky9.sh
运行 EL9 迁移
$ sudo bash migrate2rocky9.sh -r

CentOS 7 不能直接迁移到 Rocky Linux,需要借助 ELevate 项目先升级到 EL8。

安装 ELevate 仓库(CentOS 7)
$ sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
安装 Leapp 升级工具(目标为 Rocky Linux 8)
$ sudo yum install -y leapp-upgrade leapp-data-rocky
运行预升级检查
$ sudo leapp preupgrade
查看报告并解决所有问题
$ sudo cat /var/log/leapp/leapp-report.txt
确认无问题后执行升级
$ sudo leapp upgrade

系统重启后将直接进入 Rocky Linux 8。

第三方仓库是迁移过程中最常见的问题来源。建议在迁移前妥善处理。

列出所有已启用的仓库
$ dnf repolist --enabled
禁用 EPEL 仓库
$ sudo dnf config-manager --set-disabled epel epel-modular 2>/dev/null
禁用其他常见第三方仓库
$ sudo dnf config-manager --set-disabled remi* ius* rpmfusion* elrepo*

迁移完成后,需要安装对应 Rocky Linux 版本的第三方仓库包:

安装 EPEL(Rocky Linux 8)
$ sudo dnf install -y epel-release
安装 EPEL(Rocky Linux 9)
$ sudo dnf install -y epel-release
安装 ELRepo(用于新版内核等)
$ sudo dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
安装 Remi(Rocky Linux 8)
$ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
安装 Remi(Rocky Linux 9)
$ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

处理 Katello / Satellite 管理的系统

Section titled “处理 Katello / Satellite 管理的系统”

如果系统使用 Katello 或 Red Hat Satellite 管理:

迁移前取消注册
$ sudo subscription-manager unregister
$ sudo subscription-manager clean

迁移完成后根据需要重新配置管理工具。

验证系统版本
$ cat /etc/os-release

预期输出:

NAME="Rocky Linux"
VERSION="8.9 (Green Obsidian)"
ID="rocky"
验证发行版标识包
$ rpm -qa | grep rocky-release
查找非 Rocky Linux 的残留包
$ rpm -qa --qf '%{NAME} %{VENDOR}\n' | grep -v -i rocky | grep -v "(none)" | sort
检查是否有残留的 CentOS 包
$ rpm -qa | grep -i centos
移除残留包(如有)
$ sudo dnf remove centos-logos centos-indexhtml centos-backgrounds 2>/dev/null
确保所有包同步到 Rocky Linux 版本
$ sudo dnf distro-sync -y
BIOS 系统重建 GRUB
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
EFI 系统重建 GRUB
$ sudo grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
重启系统
$ sudo reboot
重启后检查内核版本
$ uname -r
检查是否有失败的服务
$ systemctl list-units --type=service --state=failed
对比迁移前后的包列表
$ rpm -qa --queryformat '%{NAME}\n' | sort > ~/packages-after-migration.txt
$ diff ~/packages-before-migration.txt ~/packages-after-migration.txt

migrate2rocky.sh 仅支持 EL8 系统。如果你运行的是 CentOS 7,需要使用 ELevate 项目先升级到 EL8。如果是 EL9,请使用 migrate2rocky9.sh

确认你的 EL 大版本
$ rpm -E %{rhel}

报错 “Could not download Rocky Linux GPG keys”

Section titled “报错 “Could not download Rocky Linux GPG keys””

网络问题导致无法下载 GPG 密钥。

测试到 Rocky Linux 镜像站的连通性
$ curl -I https://dl.rockylinux.org/
手动导入 GPG 密钥
$ sudo rpm --import https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-8

如果服务器在国内,可以考虑使用镜像源加速。

查看冲突详情
$ sudo dnf distro-sync -y --allowerasing 2>&1 | tee /tmp/distro-sync.log
排除特定问题包后重试
$ sudo dnf distro-sync -y --exclude=<问题包名>
如果存在多版本冲突,清除并重建缓存
$ sudo dnf clean all
$ sudo rm -rf /var/cache/dnf
$ sudo dnf makecache
$ sudo dnf distro-sync -y

如果迁移过程中 SSH 断开,可以通过控制台(IPMI / KVM / 云平台控制台)重新连接。

建议:screentmux 会话中执行迁移脚本,防止网络中断导致迁移过程被终止。

使用 tmux 执行迁移
$ tmux new -s migration
$ sudo bash migrate2rocky.sh -r

如果 tmux 会话断开,重新连接:

重新连接 tmux 会话
$ tmux attach -t migration

参考 启动故障排查 页面。通常需要从救援模式重新安装内核和 GRUB。