本文记录从已停止维护(EOL)的 CentOS Stream 8 原地迁移至长期支持版 Rocky Linux 8 的全流程,包含源失效、RPM 冲突、UEFI NVRAM 空间满等核心问题的解决方案,不重装系统、不丢失数据、外挂硬盘 / Nextcloud/Podman 全保留。
一、迁移背景
CentOS Stream 8 已于 2024-05-31 停止维护,官方 / 第三方源全部失效,无法安装 / 更新软件
服务器环境:Dell 服务器、UEFI 启动、业务依赖 Nextcloud、Podman 容器、外挂数据硬盘
迁移目标:Rocky Linux 8(与 CentOS 8 二进制兼容,支持至 2029 年,稳定可更新)
二、迁移前准备
1. 关键数据备份
# 备份系统配置
tar -czvf /root/backup_etc.tar.gz /etc
# 备份 Nextcloud 核心目录
tar -czvf /root/backup_nextcloud.tar.gz /var/www/html/nextcloud
2. 清理 RPM 数据库冲突(必做)
迁移脚本会严格校验 RPM 库,需提前清理异常包:
# 1. 删除重复的 RustDesk 旧版本
rpm -e --nodeps rustdesk-1.2.7-0.x86_64
# 2. 卸载旧版向日葵(依赖废弃的 webkitgtk3,Rocky 8 无此包)
rpm -e --nodeps sunloginclient-11.0.0.36662-1.x86_64
# 3. 重建 RPM 数据库
rpm --rebuilddb
dnf check
三、核心问题:CentOS Stream 8 源失效解决
迁移脚本依赖有效系统源,需还原官方完整源(直接使用归档源会失败):
参考 Gist 还原有效源:CentOS Stream 8 完整源配置
清理旧源并重建缓存:
rm -f /etc/yum.repos.d/CentOS-*
# 写入上述 Gist 中的完整源配置
dnf clean all && dnf makecache
四、执行官方迁移脚本
使用 Rocky Linux 官方迁移工具 migrate2rocky,原地替换系统包:
# 下载官方迁移脚本
curl -o /opt/rocky-convert.sh https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
chmod +x /opt/rocky-convert.sh
# 执行迁移(-r 迁移至 Rocky,-V 输出详细日志)
/opt/rocky-convert.sh -r -V
五、最大坑点:UEFI NVRAM 空间满(非磁盘空间)
1. 报错信息
Could not prepare Boot variable: No space left on device
Error updating uEFI firmware.
2. 问题本质
/boot/efi磁盘空间充足(仅使用 1%)报错源于主板 UEFI NVRAM 引导变量空间耗尽,无法新增 / 删除引导项
3. 最终解决方案
无需强行创建新引导项:
原有
Boot0006* CentOS Linux引导项可直接启动 Rocky Linux引导名称为「CentOS」仅为显示问题,系统内核 / 软件包已完全替换为 Rocky
重启后直接正常使用,后续可进 BIOS 清理冗余引导项
六、迁移成功验证
重启系统后执行校验,确认100% 切换为 Rocky Linux 8.10:
# 1. 查看系统版本
cat /etc/rocky-release
# 输出:Rocky Linux release 8.10 (Green Obsidian)
# 2. 校验系统发行版包
rpm -qa | grep rocky-release
# 输出:rocky-release-8.10-1.10.el8.noarch
# 3. 验证官方源正常
dnf repolist enabled
小提示:
Repository devel/plus is listed more than once为配置重复警告,不影响使用,可直接忽略。
七、业务服务一键恢复
1. 外挂硬盘 / 软连接
挂载配置
/etc/fstab自动保留,无需重新挂载 / 配置软连接验证命令:
lsblk、mount | grep /mnt
2. Nextcloud 恢复
# 修复权限
chown -R apache:apache /var/www/html/nextcloud
# 退出维护模式
cd /var/www/html/nextcloud
sudo -u apache php occ maintenance:mode --off
# 修复应用/数据库
sudo -u apache php occ maintenance:repair
# 重启服务
systemctl restart httpd nginx php-fpm
systemctl enable --now httpd nginx php-fpm
3. Podman 容器恢复
# 启动所有容器
podman start $(podman ps -aq)
# 验证容器运行状态
podman ps
八、总结与建议
迁移核心成果
已废弃的 CentOS Stream 8 → 稳定支持的 Rocky Linux 8.10
所有数据、挂载、服务零丢失、零重装
官方源正常,可长期执行
dnf update更新
关键避坑点
源失效:必须还原完整官方 Stream 8 源,不可直接用归档源
RPM 冲突:提前清理第三方重复包、依赖异常包
UEFI 报错:NVRAM 空间满≠磁盘空间满,沿用旧引导项即可
后续维护
定期更新系统:
dnf update -y可进 BIOS 清理冗余 UEFI 引导项,优化启动项列表
本文为真实服务器迁移踩坑实录,适用于所有 CentOS Stream 8 转 Rocky Linux 8 的场景,尤其适合运行 Nextcloud、Podman、自建服务的服务器。