您可能已经知道,无法在主要版本的 RHEL 衍生产品之间进行迁移。 含义 – 你不能直接从 CentOS 7.x 升级到 CentOS 8.x 版本。 唯一的方法是全新安装。 不再! 您现在可以轻松地从 CentOS 7.x 迁移到您选择的任何 8.x,使用 提升 工具。 本指南说明如何使用 AlmaLinux ELvate 工具将 CentOS 7 迁移到 AlmaLinux 8、CentOS Stream 8、Oracle Linux 8 和 Rocky Linux 8。
什么是提升?
ELevate 是 AlmaLinux 团队开发的开源迁移工具。 它允许您在基于 RHEL 的发行版的主要版本之间轻松顺利地从 7.x 迁移到 8.x 版本。
Elevate 将 Red Hat 的 Leapp 框架与社区创建的库和服务相结合,用于所需的迁移元数据集。
它目前支持从 CentOS 7 迁移到以下操作系统:
- AlmaLinux 操作系统 8
- CentOS 流 8
- 甲骨文 Linux 8
- 洛基 Linux 8
迁移可以就地完成,这意味着数据和配置文件被保留。 换句话说,所有已安装的应用程序和设置以及数据都将保持不变。 然而,用户是 高度鼓励 到 备份 开始迁移之前的重要数据。
Elevate 是一个开源程序,在 Apache 2.0 许可证。
对于那些想知道的人来说,来自 Elevate 的字母“EL”代表 乙企业 大号inux.
开始 CentOS 7 迁移之前要记住的事情
- 如前所述,强烈建议 备份 您的重要数据和设置。
- 不支持实时迁移。 您的系统将重新启动两次。 确保没有运行任何重要的作业(例如计划备份)。
- Elevate 仍在开发中。 所以我建议你先在虚拟系统或沙盒环境中彻底测试它,然后再在生产环境中尝试。
我在新安装的 CentOS 7 虚拟机上测试了 Elevate 工具。 迁移顺利且没有错误。 如果您遇到任何问题,请报告给 AlmaLinux 错误跟踪器 和/或 AlmaLinux 聊天迁移频道.
更新 CentOS 7 系统
确保您运行的是最新的 CentOS 7.x 分支。 如果没有,请使用以下命令更新您的 CentOS 系统:
$ sudo yum update
$ sudo yum upgrade
重新启动系统以应用更改:
$ sudo reboot
使用命令检查当前安装的 CentOS 7 版本:
$ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core)
$ cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
如您所见,我的系统运行的是 CentOS 7.9 版本。 这是 7.x 分支中的最新版本。
将 CentOS 7 迁移到 AlmaLinux 8、CentOS 8、Rocky Linux 8 和 Oracle Linux 8
第 1 步:安装 Elevate
安装 elevate-release
使用以下命令在您的 CentOS 7 系统中打包:
$ sudo yum install https://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
第 2 步:安装 Leapp 和迁移数据
这 elevate-release
包提供 勒普 实用程序和将 Enterprise Linux 7.x 迁移到我们选择的任何 Enterprise Linux 8.x 版本所需的数据。
根据您要升级的发行版,您需要安装以下任一软件包:
- 跳跃数据almalinux
- 跳跃数据-centos
- 跳跃数据-oraclelinux
- 跳跃数据岩石
例如,如果你想 将 CentOS 7 迁移到 AlmaLinux 8,您需要安装以下软件包:
$ sudo yum install -y leapp-upgrade leapp-data-almalinux
到 将 CentOS 7 迁移到 CentOS 8,安装以下软件包:
$ sudo yum install -y leapp-upgrade leapp-data-centos
到 将 CentOS 7 迁移到 Oracle Linux 8,安装以下软件包:
$ sudo yum install -y leapp-upgrade leapp-data-oraclelinux
到 将 CentOS 7 迁移到 Rocky Linux 8,安装以下软件包:
$ sudo yum install -y leapp-upgrade leapp-data-rocky
我们现在已经安装了 leap-upgrade
包和我们要升级的操作系统的迁移数据。
出于本指南的目的,我将 CentOS 7 升级到 AlmaLinux 8。

第 3 步:开始升级前检查
接下来运行以下命令以检查是否可以升级:
$ sudo leapp preupgrade
这将执行一系列操作并验证是否可以执行升级。
==> Processing phase `configuration_phase` ====> * ipu_workflow_config IPU workflow config actor ==> Processing phase `FactsCollection` ====> * scanmemory Scan Memory of the machine. ====> * source_boot_loader_scanner Scans the boot loader configuration on the source system. . . . ============================================================ UPGRADE INHIBITED ============================================================ Upgrade has been inhibited due to the following problems: 1. Inhibitor: Detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed. 2. Inhibitor: Multiple devel kernels installed 3. Inhibitor: Possible problems with remote login using root account 4. Inhibitor: Missing required answers in the answer file Consult the pre-upgrade report for details and possible remediation. ============================================================ UPGRADE INHIBITED ============================================================ Debug output written to /var/log/leapp/leapp-preupgrade.log ============================================================ REPORT ============================================================ A report has been generated at /var/log/leapp/leapp-report.json A report has been generated at /var/log/leapp/leapp-report.txt ============================================================ END OF REPORT ============================================================ Answerfile has been generated at /var/log/leapp/answerfile

在升级前检查结束时,Leapp 实用程序将在 /var/log/leapp/leapp-report.txt
文件。 此文件包含可能的问题和推荐的解决方案。 在这个阶段不会安装任何 rpm 包。
警告:
如果默认的 CentOS 7 不满足迁移的所有要求,升级前检查将失败。 在这种情况下,您需要解决所有问题并重试。
以下修复来自 /var/log/leapp/leapp-report.txt
文件是 强制的,但如果需要,您也可以查看其余部分。
就我而言,我解决了以下问题:
$ sudo rmmod pata_acpi
$ echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
$ sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
我还必须删除额外的内核开发。
列出 CentOS 中已安装的内核:
$ rpm -qa kernel kernel-3.10.0-1160.45.1.el7.x86_64 kernel-3.10.0-1160.42.2.el7.x86_64
正如您在上面看到的,我的系统中目前安装了两个内核。
使用命令删除旧内核和内核开发并仅保留当前活动的内核:
$ sudo package-cleanup --oldkernels --count=1
解决所有问题后,运行以下命令将 CentOS 7 迁移到您选择的任何 Enterprise Linux 8.x:
$ sudo leapp upgrade

升级完成后,重新启动系统:
$ sudo reboot
一个名为的新条目 ELevate-Upgrade-Initramfs
将出现在 GRUB 菜单中。 系统将自动启动到其中。 您可以在控制台中查看更新过程的进展情况。

升级完成后系统会自动重启。 GRUB 菜单条目将根据操作系统自动更新。
登录系统并验证当前操作系统是您需要的操作系统。
$ cat /etc/os-release
样本输出:
NAME="AlmaLinux" VERSION="8.4 (Electric Cheetah)" ID="almalinux" ID_LIKE="rhel centos fedora" VERSION_ID="8.4" PLATFORM_ID="platform:el8" PRETTY_NAME="AlmaLinux 8.4 (Electric Cheetah)" ANSI_COLOR="0;34" CPE_NAME="cpe:/o:almalinux:almalinux:8.4:GA" HOME_URL="https://almalinux.org/" DOCUMENTATION_URL="https://wiki.almalinux.org/" BUG_REPORT_URL="https://bugs.almalinux.org/" ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8" ALMALINUX_MANTISBT_PROJECT_VERSION="8.4"

伟大的! 我们已成功将 CentOS 7 升级到 AlmaLinux 8.4 版本。
清除缓存(可选)
迁移过程中下载的所有包都将保存在缓存中,直到下一次成功事务。 您可以通过执行以下命令来删除缓存的包 sudo
或者 root
用户:
$ sudo dnf clean packages
更新主机名
最后,更新主机名、用户名以匹配 AlmaLinux。
$ sudo hostnamectl set-hostname almalinux8
全部做完! 重新启动系统以使更改生效。
结论
在本指南中,我们了解了如何在 AlmaLinux 开发人员的 ELevate 项目的帮助下将 CentOS 7 升级到 RHEL 8 衍生产品,例如 AlmaLinux、CentOS Stream、Oracle Linux 和 Rocky Linux。
我没想到 CentOS 7 迁移到 RHEL 8 衍生品会这么容易! AlmaLinux 开发人员做了一项值得称道的工作。 无论是错误修复还是功能添加,他们都会迅速介入并进行处理。 他们是第一个发布 CentOS 8 的稳定替代品的公司。他们还提供了一个 Bash 脚本,可以轻松地将现有的 CentOS 8 系统转换为 AlmaLinux 8。有关更多详细信息,请参阅以下指南。
- 使用 Almalinux-deploy 脚本从 CentOS 8 迁移到 AlmaLinux
资源: