萌萌の初音
萌萌の初音
发布于 2026-02-13 / 10 阅读
0

CentOS Stream 8 无痛迁移至 Rocky Linux 8 完整踩坑实录

本文记录从已停止维护(EOL)的 CentOS Stream 8 原地迁移至长期支持版 Rocky Linux 8 的全流程,包含源失效、RPM 冲突、UEFI NVRAM 空间满等核心问题的解决方案,不重装系统、不丢失数据、外挂硬盘 / Nextcloud/Podman 全保留

一、迁移背景

  1. CentOS Stream 8 已于 2024-05-31 停止维护,官方 / 第三方源全部失效,无法安装 / 更新软件

  2. 服务器环境:Dell 服务器、UEFI 启动、业务依赖 Nextcloud、Podman 容器、外挂数据硬盘

  3. 迁移目标: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 源失效解决

迁移脚本依赖有效系统源,需还原官方完整源(直接使用归档源会失败):

  1. 参考 Gist 还原有效源:CentOS Stream 8 完整源配置

  2. 清理旧源并重建缓存:

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 自动保留,无需重新挂载 / 配置软连接

  • 验证命令:lsblkmount | 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

八、总结与建议

  1. 迁移核心成果

    • 已废弃的 CentOS Stream 8 → 稳定支持的 Rocky Linux 8.10

    • 所有数据、挂载、服务零丢失、零重装

    • 官方源正常,可长期执行 dnf update 更新

  2. 关键避坑点

    • 源失效:必须还原完整官方 Stream 8 源,不可直接用归档源

    • RPM 冲突:提前清理第三方重复包、依赖异常包

    • UEFI 报错:NVRAM 空间满≠磁盘空间满,沿用旧引导项即可

  3. 后续维护

    • 定期更新系统:dnf update -y

    • 可进 BIOS 清理冗余 UEFI 引导项,优化启动项列表


本文为真实服务器迁移踩坑实录,适用于所有 CentOS Stream 8 转 Rocky Linux 8 的场景,尤其适合运行 Nextcloud、Podman、自建服务的服务器。