Upgrading from CentOS 6 to CentOS 7 involves a manual approach, as the standard yum update and migration paths won’t work anymore.
CentOS 6 to 7 upgrades are inherently risky, especially with outdated repositories. Consider migrating directly to a modern distribution like Rocky Linux or AlmaLinux. Tools like ELevate can help with migration from CentOS 6/7 to newer distributions.
The ELevate Project by AlmaLinux offers a community-supported tool for upgrading CentOS 7 to newer RHEL-based distributions. While it doesn’t support CentOS 6 directly, you could consider upgrading from CentOS 6 to 7 first, then use ELevate for further upgrades.
Here’s how you can perform the upgrade using available tools and workarounds.
Step 1. Backup Your Data
It goes without saying that before you initiate the upgrade, you should mitigate the risk. Ensure that you have a complete backup of all your data, configurations, and applications. This step is crucial for your peace of mind. The upgrade process is not seamless, but wrought with pitfalls and surprises. If you are not careful, it might lead to data loss or system instability.
Step 2. Download CentOS 7 ISO
Obtain the CentOS 7 ISO from a trusted archive like the CentOS Vault or a mirror site. Downlaod the ISO:
wget http://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
Step 3. Point to Local Repositories
Since the official CentOS 6 and 7 repositories will no longer work, you will need to use local repositories or those from a trusted CentOS mirror. Mount the CentOS 7 ISO as a local repository:
mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt cat <<EOF > /etc/yum.repos.d/centos7.repo [centos7] name=CentOS 7 Local Repo baseurl=file:///mnt enabled=1 gpgcheck=0 EOF
Step 4. Prepare for the Upgrade
Download and install the Red Hat Preupgrade Assistant a.k.a. the preupg tool (Preupgrade Assistant). You will need it to analyze your system’s compatibility:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/preupgrade-assistant*.rpmwget http://vault.centos.org/6.10/os/x86_64/Packages/preupgrade-assistant-2.6.3-1.el6.x86_64.rpm
rpm -ivh preupgrade-assistant*.rpm
Run the Preupgrade Assistant (in bash):
preupg
This tool generates a report about potential issues with your upgrade. Review the output and address any major blockers.
Step 5. Download redhat-upgrade-tool
Install the Red Hat Upgrade Tool from a compatible mirror:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/redhat-upgrade-tool*.rpm rpm -ivh redhat-upgrade-tool*.rpm
Step 6. Begin the Upgrade
Run the redhat-upgrade-tool to begin the upgrade process:
redhat-upgrade-tool --network 7 --instrepo=file:///mnt --cleanup-post
The –instrepo flag ensures the tool uses the ISO as the source for the upgrade.
Step 7. The Wrap-Up: Post-Upgrade Steps
After the upgrade, reboot your system into CentOS 7.
Next, check the CentOS version to confirm the upgrade:
cat /etc/centos-release
Check that all services and applications are running as expected. If not, disable SELinux temporarily and try again.
Manually review and update configuration files located in /etc.
Then, update all packages using the CentOS 7 repositories (assuming they are still available):
yum update
What´s next?
ELevate (https://almalinux.org/elevate/) enables upgrades between major versions of RHEL derivatives. After performing an upgrade-in-place from CentOS 6.x to 7.x you could change the Linux flavour using ELevate and then go all the way through version 8.x of the RHEL derivative of your choice. Then, upgrade from 8.x to 9.x within the same derivative.
Leave a Reply