Introduction
With CentOS 7 gaining EOL status, many alternatives with long-term support have appeared. One such alternative is Rocky Linux, which is recommended due to its many similarities with CentOS (see our detailed comparison between Rocky Linux and CentOS).
Transitioning between two Linux distributions requires careful planning and execution, as it requires first migrating CentOS 7 to Rocky Linux 8, followed by another migration to Rocky Linux 9. The Leapp framework and ELevate project help simplify the upgrade process.
This guide shows step-by-step instructions for migrating CentOS 7 to Rocky Linux 9.
Prerequisites
- A system running CentOS 7.
- Administrator access.
- Internet connection.
Upgrade CentOS 7 to Rocky Linux 8
The following sections demonstrate CentOS 7 to Rocky Linux 8 migration using the ELevate project and the Leapp framework. The two projects support migration between different RHEL-based distributions.
Follow the steps below to migrate CentOS 7 to Rocky Linux 8 before you can migrate to Rocky Linux 9.
Step 1: Create a Backup
Before migrating any system, the best practice is to create backups and snapshots of the system. The exact steps depend on the infrastructure, but a bare-metal restore is recommended. Tools such as the dd command and reliable backup and restore solutions are recommended before moving production systems.
Important: It is highly recommended to do a trial run of the migration in a sandbox environment before commiting.
Step 2: Install Migration Packages
Install the required packages for migration. Follow the steps below:
1. Install the elevate-release package from the repository for the latest version. Use the following command:
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
2. Install the Leapp migration data packages for Rocky Linux and the upgrade utility with the following:
sudo yum install -y leapp-upgrade leapp-data-rocky
Note: Other options include centos, almalinux, eurolinux, and oraclelinux.
The Leapp utility handles OS and application upgrades.
Step 3: Run Pre-Upgrade Checks
Run a pre-upgrade to do a system check before upgrading:
sudo leapp preupgrade
The pre-upgrade takes some time. When completed, it generates files in the /var/log/leapp/ directory that contain all potential upgrade issues and how to address them. The following files contain crucial information:
- answerfile - Contains questions that require a true or false answer to proceed with the upgrade.
- leapp-report.txt - Contains all possible problems and fixes to perform before or after the upgrade.
- leapp-preupgrade.log - The complete pre-upgrade log and debug output.
Check the first two files and perform all required pre-upgrade actions. Some common pre-upgrade fixes when migrating from CentOS 7 are:
1. Removing the pata_acpi
kernel module:
sudo rmmod pata_acpi
2. Updating the SSH config file to permit root login:
echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
3. Confirming the removal of the PAM PKCS#11 module:
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
The command updates the answerfile, confirming the removal.
Address all fixes and rerun the pre-upgrade command to confirm everything is fixed:
sudo leapp preupgrade
The system is ready for upgrade when the "Upgrade Inhibited" message disappears.
Step 4: Run Upgrade
When no more suggested actions exist, the system is ready to upgrade. Proceed with the OS upgrade steps below:
1. Run the Leapp upgrade
command:
sudo leapp upgrade
Wait for the upgrade to complete. If the upgrade fails, return to the previous step and address any issues missed in the pre-upgrade check.
2. When the process completes successfully, reboot the machine:
reboot
The reboot is required for the package-swapping process to begin.
3. The GRUB menu shows a new entry called ELevate-Upgrade-Initramfs
.
After five seconds, the system automatically boots into this selection and continues the upgrade process.
4. The system restarts twice more after the upgrades. When the restarts are complete, the GRUB menu shows a Rocky Linux 8 entry.
The entry indicates a successful upgrade from CentOS 7 to Rocky Linux 8. The system automatically boots into the upgraded version.
Step 5: Post-Upgrade Steps
After the upgrade, complete the following post-upgrade tasks:
1. Log in as the root user using the same credentials from the CentOS 7 system.
2. Clean up any orphaned packages from CentOS 7:
rpm -qa | grep -E 'el7[.-]' | xargs rpm -e
The command searches for and removes all unnecessary CentOS packages and may hinder the following upgrade.
Upgrade Rocky Linux 8 to Rocky Linux 9
The upgrade from Rocky Linux 8 to 9 is also supported through the ELevate project. The steps are similar to the upgrade from CentOS 7 to Rocky Linux 8. The sections below outline the details.
Step 1: Install Migration Packages
Install the Leapp and ELevate migration packages for migrating to Rocky Linux 9:
1. Install the elevate-release package for Rocky 8 with the following command:
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
2. The yum configuration excluded several packages during the upgrade. Change the configuration so no packages are excluded, some of which are Leapp dependencies:
yum config-manager --save --setopt exclude=''
This command does not provide an output.
2. Install the Leapp migration packages:
sudo yum install -y leapp-upgrade leapp-data-rocky
The same packages are used for migrating to Rocky Linux 9.
Step 2: Run Pre-Upgrade Checks
Run the pre-upgrade check before upgrading the OS. The command and pre-upgrade checks are almost identical to the ones in the previous section, with minor differences. Run the Leapp preupgrade
command:
sudo leapp preupgrade
The pre-upgrade generates the same pre-upgrade files as in the previous section but with different suggested fixes. Check the answerfile to see all the recommended steps.
Common fixes for Rocky Linux 8 are:
1. Changing the firewalld configuration:
sudo sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf
2. Removing the network configuration file for unsupported network device type:
rm /etc/sysconfig/network-scripts/ifcfg-[device_name]
3. Bypassing the VDO device check requirement in the answerfile:
sudo leapp answer --section check_vdo.no_vdo_devices=True
Rerun the pre-upgrade to confirm all changes applied and that no more issues appear.
Continue to the next step if the "Upgrade Inhibited" message does not appear.
Step 3: Run Upgrade
The system is ready for the upgrade once it passes the pre-upgrade checks. Follow the steps below:
1. Run the Leapp upgrade command:
sudo leapp upgrade
Wait for the upgrade to complete. If the upgrade fails, check if the report lists any packages as problematic. Commonly, the make-devel
and rocky-logos
packages cause the upgrade to fail. Remove them with:
dnf remove [package_name]
Rerun the upgrade after removal.
2. When the process completes successfully, the output shows no errors:
Reboot the system to continue the upgrade:
reboot
3. The system shows a new boot entry in the Grub menu, similar to the previous upgrade. Press Enter to select the entry or wait for it to boot into the ELevate-Upgrade-Initramfs
entry automatically.
4. The system restarts during the upgrade. After restarting, the Rocky Linux 9 entry shows in the Grub menu.
The entry indicates a successful upgrade from Rocky Linux 8 to 9.
Step 4: Post-Upgrade Steps
After the upgrade is complete, the system boots into Rocky Linux 9. Do the following:
1. Log in as the root user using the same credentials from the previous systems.
2. Clean up orphaned packages from Rocky Linux 8 with:
rpm -qa | grep -E 'el8[.-]' | xargs rpm -e
3. Continue using the system as usual and address any issues as they show up (such as missing dependencies or broken packages).
Conclusion
After going through the steps in this guide, you've successfully upgraded CentOS 7 to Rocky Linux 9. Read more about CentOS alternatives and why Rocky Linux is one of the best options.
phoenixNAP's knowledge base also features guides How to Migrate CentOS to AlmaLinux, How to Migrate CentOS to CentOS Stream, and How to Migrate CentOS to Ubuntu.