跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    迁移到 AlmaLinux

    本文将指导你使用 AlmaLinux 官方迁移工具 almalinux-deploy,从 CentOS 7/8、CentOS Stream、RHEL 或其他 EL 兼容发行版迁移到 AlmaLinux。

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

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

    重要提示: 迁移操作会替换系统核心软件包,存在一定风险。请务必在测试环境验证后再在生产环境执行。

    确认当前操作系统版本
    $ 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
    备份 yum/dnf 仓库配置
    $ cp -a /etc/yum.repos.d/ ~/yum.repos.d.bak/
    备份网络配置
    $ nmcli connection show > ~/network-before-migration.txt
    $ ip addr show > ~/ip-addr-before-migration.txt

    almalinux-deploy 是 AlmaLinux 官方提供的迁移脚本,托管在 GitHub 上。

    安装必要工具
    $ sudo dnf install -y curl
    下载迁移脚本
    $ curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
    验证脚本已下载
    $ ls -la almalinux-deploy.sh

    提示: 如果你的服务器无法直接访问 GitHub,可以在其他机器下载后通过 scp 传输到目标服务器。

    基本迁移(CentOS 8 / CentOS Stream)

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

    脚本会自动完成以下操作:

    1. 检测当前操作系统版本
    2. 下载 AlmaLinux 的 GPG 密钥和软件仓库配置
    3. 移除 CentOS 特有的软件包(如 centos-release、centos-logos 等)
    4. 安装 AlmaLinux 对应的软件包
    5. 使用 dnf distro-sync 同步所有软件包到 AlmaLinux 版本

    CentOS 7 迁移需要先升级到 EL8,因为 almalinux-deploy 主要支持 EL8+ 的直接迁移。AlmaLinux 提供了 ELevate 项目来完成跨大版本升级。

    安装 ELevate 仓库(CentOS 7)
    $ sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
    安装 Leapp 升级工具
    $ sudo yum install -y leapp-upgrade leapp-data-almalinux
    运行升级前检查
    $ sudo leapp preupgrade

    注意: leapp preupgrade 会生成一份报告,列出所有需要手动处理的问题。请仔细阅读 /var/log/leapp/leapp-report.txt 并逐一解决。

    查看预升级报告
    $ sudo cat /var/log/leapp/leapp-report.txt
    确认无问题后执行升级
    $ sudo leapp upgrade

    升级完成后系统会自动重启,进入 AlmaLinux 8。

    almalinux-deploy.sh 没有「指定目标版本」的选项:-t 是 --tests(只跑测试、不执行转换),脚本里直接 exit 0;转换后的版本由源系统的大版本决定(EL8 → AlmaLinux 8,EL9 → AlmaLinux 9)。

    先只做检查(不执行转换)
    $ sudo bash almalinux-deploy.sh -t
    # 确认输出无误后,再不带 -t 执行实际转换
    $ sudo bash almalinux-deploy.sh

    要跨大版本(例如 EL8 → EL9)不是这个脚本的职责:EL8 内的迁移用 almalinux-deploy,跨大版本见 EL 8 升 EL 9。

    迁移过程中,第三方仓库可能会导致软件包冲突。以下是常见的处理方法。

    EPEL 仓库通常可以自动适配,但建议迁移前临时禁用:

    迁移前禁用 EPEL
    $ sudo dnf config-manager --set-disabled epel epel-modular 2>/dev/null
    迁移完成后重新启用 EPEL
    $ sudo dnf install -y epel-release
    $ sudo dnf config-manager --set-enabled epel
    迁移前列出所有已启用的第三方仓库
    $ dnf repolist --enabled | grep -v -E '^(baseos|appstream|extras|powertools|crb)'
    临时禁用所有第三方仓库
    $ sudo dnf config-manager --set-disabled remi* ius* rpmfusion*

    迁移完成后,需要重新安装适配 AlmaLinux 的第三方仓库版本:

    示例:重新安装 Remi 仓库(AlmaLinux 8)
    $ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
    示例:重新安装 Remi 仓库(AlmaLinux 9)
    $ sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

    如果迁移过程中出现包冲突:

    查看哪些包不属于 AlmaLinux 仓库
    $ rpm -qa --qf '%{NAME} %{VENDOR}\n' | grep -v "AlmaLinux" | sort
    强制同步所有包到 AlmaLinux 版本
    $ sudo dnf distro-sync -y
    验证系统版本
    $ cat /etc/os-release

    输出应显示 AlmaLinux 相关信息:

    NAME="AlmaLinux"
    VERSION="8.9 (Midnight Oncilla)"
    ID="almalinux"
    验证发行版标识包
    $ rpm -qa | grep almalinux-release
    检查是否还有残留的 CentOS 包
    $ rpm -qa | grep -i centos

    如果有残留包,可以手动移除或替换:

    移除残留的 CentOS 包(如有)
    $ sudo dnf remove centos-logos centos-indexhtml 2>/dev/null
    $ sudo dnf distro-sync -y
    确保 GRUB 配置正确
    $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

    对于 EFI 系统:

    EFI 系统重建 GRUB
    $ sudo grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg
    重启系统
    $ sudo reboot
    重启后验证内核
    $ uname -r
    验证所有服务正常运行
    $ systemctl list-units --type=service --state=failed

    确认你的源系统版本在支持列表中。CentOS 6 及更早版本不被支持。

    确认系统版本
    $ cat /etc/redhat-release

    可能是网络问题导致无法下载密钥。

    手动导入 AlmaLinux GPG 密钥
    $ sudo rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux-8

    通常是第三方仓库包冲突导致的。

    排除特定包后重试同步
    $ sudo dnf distro-sync -y --exclude=<冲突包名>
    如果问题严重,清除缓存后重试
    $ sudo dnf clean all
    $ sudo dnf distro-sync -y

    如果重启后进入 GRUB rescue 或无法引导:

    1. 使用安装介质或救援模式启动
    2. 挂载根分区
    3. chroot 到系统中
    4. 重新安装内核和 GRUB
    救援模式下修复引导
    $ sudo mount /dev/sda2 /mnt
    $ sudo mount /dev/sda1 /mnt/boot
    $ sudo chroot /mnt
    $ dnf reinstall kernel-core grub2-efi-x64 shim-x64
    $ grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg
    $ exit
    $ sudo reboot

    AlmaLinux 支持 Secure Boot,但迁移后可能需要重新注册:

    检查 Secure Boot 状态
    $ mokutil --sb-state