从 CentOS 7 到 Rocky Linux 9:一份超详细的迁移实战指南


哈喽,各位还在坚守 CentOS 7 的朋友们!你们可能已经知道了,CentOS 7 在 2024 年 6 月 30 日已经正式结束了生命周期(EOL),这意味着它不再有官方的安全更新和技术支持了。 为了服务器的稳定和安全,是时候考虑给它“搬个家”了。

Rocky Linux 作为一个由社区驱动、与 RHEL (Red Hat Enterprise Linux) 完全兼容的企业级操作系统,无疑是一个非常棒的替代选择。

这篇文章就是为你准备的保姆级教程,手把手带你从 CentOS 7 安全迁移到 Rocky Linux 9。

迁移之前,你需要知道的几件事

首先,也是最重要的一点:目前没有官方支持从 CentOS 7 直接一步到位升级到 Rocky Linux 9 的方法

别担心,我们曲线救国!整个迁移过程将分为两大步:

  1. 第一步:从 CentOS 7 迁移到 Rocky Linux 8。
  2. 第二步:从 Rocky Linux 8 升级到 Rocky Linux 9。

听起来有点折腾?其实还好,因为我们有一个强大的工具——ELevate。这个项目基于红帽的 leapp 框架,能帮助我们实现平滑的原地升级,省去了重装系统和逐一配置应用的麻烦。

必备前提条件

在开始之前,请确保你的“老伙计”满足以下条件:

  • 一台正在运行的 CentOS 7 服务器。
  • 拥有 root 或 sudo 管理员权限。
  • 稳定的网络连接(升级过程需要下载不少东西)。

案例背景

假设我们有一台跑着一些 Web 应用的 CentOS 7 服务器,现在需要将它升级到 Rocky Linux 9,同时希望尽可能保留现有的数据和配置。


第一步:不惜一切代价,先做备份!

我知道你很想直接开始敲代码,但请务必忍住!迁移操作有风险,数据备份是你的唯一后悔药。 你可以使用快照、tarrsync 等任何你熟悉的方式,把重要数据打包带走。

案例:使用 tar 命令备份关键目录

比如,我们可以这样备份整个 /home/var/www 目录:

# 创建一个备份目录
mkdir /backup

# 使用 tar 命令打包备份
sudo tar -cvzf /backup/migration_backup_$(date +%F).tar.gz /home /var/www/html /etc/nginx

解析:

  • tar 是一个强大的打包工具。
  • -c 表示创建新的归档文件。
  • -v 显示详细过程。
  • -z 通过 gzip 进行压缩。
  • -f 指定归档文件的名称。

备份完成后,我们就可以正式开始了!


第二部分:从 CentOS 7 迁移至 Rocky Linux 8

第 1 步:系统更新与准备

首先,确保你的 CentOS 7 系统是最新状态,这能避免很多不必要的麻烦。

sudo yum update -y
sudo reboot

第 2 步:安装 ELevate 和 Leapp 工具

ELevate 工具由 AlmaLinux 项目提供,但它是一个通用的迁移工具,完全适用于 Rocky Linux。

# 安装 ELevate 的 release 包
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm

# 安装 leapp 和用于迁移到 Rocky Linux 的数据包
sudo yum install -y leapp-upgrade leapp-data-rocky

解析:

  • 第一条命令会添加 ELevate 项目的 YUM 仓库。
  • 第二条命令安装了核心的 leapp 升级程序和 leapp-data-rocky,后者包含了迁移到 Rocky Linux 所需的特定规则和数据。

第 3 步:运行“升级体检”(预升级检查)

这是至关重要的一步!leapp 会全面检查你的系统,并生成一份报告,告诉你是否存在阻碍升级的问题。

sudo leapp preupgrade

检查完成后,你会在 /var/log/leapp/leapp-report.txt 文件里看到详细的报告。 如果有任何阻碍性问题(Inhibitor),升级过程会被禁止,你必须先修复它们。

案例:处理常见的“升级拦路虎”

根据经验,从 CentOS 7 迁移时,你很可能会遇到下面几个问题:

  • 问题1:需要允许 root 用户通过 SSH 登录
    • 修复命令: echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
  • 问题2:内核模块 pata_acpi 冲突
    • 修复命令: sudo rmmod pata_acpi
  • 问题3:PAM (Pluggable Authentication Modules) 模块问题
    • 修复命令: sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

解析:
每次修复完问题后,你需要重新运行 sudo leapp preupgrade 命令,直到报告中不再出现 “Upgrade Inhibited” 的提示为止。

第 4 步:开始真正的升级!

当所有的“拦路虎”都被清除后,就可以启动升级了。

sudo leapp upgrade

这个过程会下载所有需要的软件包并为升级做好准备。耐心等待它完成,然后系统会提示你重启。

第 5 步:重启并进入升级环境

执行重启命令:

sudo reboot

重启时,请密切关注启动菜单(GRUB)。你会看到一个名为 ELevate-Upgrade-Initramfs 的新条目,系统会自动选择它进入。 在这个临时环境中,升级程序会自动完成所有包的替换和系统配置更新。这个过程会持续一段时间,期间系统可能会自动重启一到两次。

第 6 步:验证 Rocky Linux 8

当所有升级步骤完成后,系统会正常启动。现在,让我们来验证一下:

cat /etc/os-release

如果一切顺利,你会看到系统信息已经变成了 Rocky Linux 8.x!


第三部分:从 Rocky Linux 8 升级到 Rocky Linux 9

恭喜!你已经完成了一半的旅程。接下来的步骤就非常相似了。

第 1 步:更新系统

首先,确保你刚升级的 Rocky Linux 8 是最新状态。注意,从 RHEL 8 系列开始,包管理器从 yum 变成了 dnf(底层其实还是 YUM,但 dnf 更好用)。

sudo dnf update -y
sudo reboot

第 2 步:安装新的 ELevate 工具

我们需要为 Rocky 8 安装对应的 ELevate release 包。

sudo dnf install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm

接着,安装升级到 Rocky 9 所需的 leapp 包。

sudo dnf install -y leapp-upgrade leapp-data-rocky

第 3 步:再次进行“升级体检”

和之前一样,运行预升级检查。

sudo leapp preupgrade

同样,检查 /var/log/leapp/leapp-report.txt 并解决所有发现的阻碍性问题。

第 4 步:执行升级命令

确认没有问题后,开始向 Rocky Linux 9 进发!

sudo leapp upgrade

第 5 步:最后一次重启

升级准备完成后,重启服务器。

sudo reboot

系统会再次进入 ELevate-Upgrade-Initramfs 环境来完成最后的升级过程。


收尾工作:欢迎来到 Rocky Linux 9!

当服务器最终重启并进入登录界面时,恭喜你,迁移大功告成!

最终验证

登录系统后,最后一次检查操作系统版本:

cat /etc/os-release

输出应该会明确告诉你,你现在运行的是 Rocky Linux 9

案例:迁移后检查

迁移完成后,不要忘记:

  1. 检查核心服务:确认你的 Nginx、数据库、PHP/Python 应用是否都正常运行。
  2. 检查网络配置ip a 查看 IP 地址是否正确。
  3. 清理旧的软件包和内核:升级可能会留下一些不再需要的旧内核,可以酌情清理以释放空间。

总结

从 CentOS 7 迁移到 Rocky Linux 9 虽然不能一步完成,但通过 ELevate 工具分两步走,整个过程非常清晰可控。 核心要点可以总结为:

  1. 备份!备份!备份!
  2. 先到 8,再到 9CentOS 7 -> Rocky 8 -> Rocky 9
  3. 相信“体检报告”:认真执行 leapp preupgrade 并修复所有问题。
  4. 耐心:升级过程需要时间,泡杯咖啡慢慢等。

希望这篇指南能帮助你顺利完成迁移,让你的服务器在 Rocky Linux 9 上焕发新生!


  目录