Systems with a short life cycle or rolling release model are not suitable for a developed corporate infrastructure: too many things can go wrong with them after the next update. In addition to CentOS, there are other Linux distributions with long-term support (for example, Ubuntu Server LTS), but migration to them will require a lot of work. If you have a lot of physical and virtual machines, it is better to choose a binary compatible solution with RHEL to make the migration to CentOS 8 easy and painless.
We settled on the free server distributions AlmaLinux and RockyLinux: one by CloudLinux and the other developed by CentOS creator Gregory Kurzer together with a community of developers. They are planned to be maintained for 10 years, which is the entire development cycle of the original RHEL 8.
Full binary compatibility means that applications installed on CentOS 8 or RHEL 8 will continue to work on AlmaLinux and RockyLinux without changes - this is a great alternative if you do not wish to pay for RedHat support, which, as we recall, includes receiving binary updates (distributed for free source code only). Below is the migration option used at HOSTKEY.
Step 1. Make a backup copy
Before you start your migration, it is better to make a backup of the entire server or at least the important directories. In well-established infrastructures this process is automated (there are working procedures for Backup & Deploy), but during migration to another distribution it is worth taking the utmost care.
Step 2. Check for version compliance
Before running the migration script, you should check the version of CentOS, which must be at least 8.3. Otherwise, you will have to specify the addresses of the mirrors with the update packages and run the command dnf update -y
(CentOS images can be downloaded from the link). The system will update to CentOS Linux release 8.5.2111.
If you do not follow this step, an error will occur:
Step 3. Add mirrors if your system is younger than CentOS 8.3
If you haven't updated the OS in a while, you need to add archive mirrors for CentOS 8 using the following commands:
AlmaLinux:
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
RockyLinux:
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
Step 4. Download the migration script
AlmaLinux:
cd /tmp
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
RockyLinux:
cd /tmp
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
Step 5. Give the script execute permission
AlmaLinux:
chmod +x almalinux-deploy.sh
RockyLinux:
chmod +x migrate2rocky.sh
Step 6. Run the package download and installation script
AlmaLinux:
sudo bash almalinux-deploy.sh
RockyLinux:
sudo bash migrate2rocky.sh -r
Below is an example of a pre-migration check. There are no problems with package dependencies and operating system version:
Step 7. Complete the installation and reboot the computer
If the installation is successful, the following message will appear:
AlmaLinux:
RockyLinux:
After the installation is complete, you should reboot the system with the reboot command. If the migration is successful, the new distribution will be listed during the system boot and kernel selection phase.
AlmaLinux:
RockyLinux:
Step 8. Check for errors
After rebooting the system, you should check for errors and check the name and version of the system.
cat /etc/redhat-release #let you check the migration to AlmaLinux and RockyLinux
dmesg #hardware error check
journalctl #system errors
Step 9. Check that the services are working
After the migration is complete, it is worth checking that all configured services and installed application software work correctly. Usually there are no failures, but better safe than sorry.
Step 10. Additional actions for RockyLinux
If you are migrating a system with a graphical interface, there may be problems when migrating from CentOS to Rocky Linux (the Alma script is more reliable). During the scripting process, there may be problems installing packages, and old CentOS packages will be corrupted.
You need to check the system version with the commands below:
cat /etc/os-release
cat /etc/redhat-release
If an error occurs, you will have this message:
Unable to detect release version (use '--releasever' to specify release version
You will get a similar message when you try to execute these commands:
dnf makecache & dnf update
The problem can be solved by partially rolling back the CentOS system and installing packages from the vault archive mirror. It is necessary to download the packages of the installed version of your distribution (see Step 2). In our case, CentOS version 8.5.2111 was used.
Perform the following sequence of commands:
cd /tmp
wget https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-linux-release-8.5-1.2111.el8.noarch.rpm
wget https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm
wget https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm
rpm -ivh ./centos-gpg-keys-8-3.el8.noarch.rpm --force
rpm -ivh ./centos-linux-release-8.5-1.2111.el8.noarch.rpm ./centos-linux-repos-8-3.el8.noarch.rpm --force
Before running the migration script, pre-install all dependencies. We received a list of 6 problematic packages:
Error: Check discovered 6 problem(s)
anaconda-gui-33.16.5.6-1.el8.x86_64 has missing requires of system-logos
firefox-91.4.0-1.el8_5.x86_64 has missing requires of redhat-indexhtml
gdm-1:40.0-15.el8.x86_64 has missing requires of system-logos
gnome-session-3.28.1-13.el8.x86_64 has missing requires of system-backgrounds
gnome-session-3.28.1-13.el8.x86_64 has missing requires of system-logos
plymouth-graphics-libs-0.9.4-10.20200615git1e36e30.el8.x86_64 has missing requires of system-logos
We had to install three packages:
yum install system-logos
yum install system-backgrounds
yum install redhat-indexhtml
After performing the above actions to eliminate dependency problems, you must repeat the procedure starting from Step 6.
Conclusions
The process of migrating from CentOS 8 to AlmaLinux is not time consuming and provides a stable OS without any infrastructure changes. Migrating to RockyLinux may present easily solvable problems. Both clone distributions are based on the freely distributed RHEL 8 source code, and all the difference between them comes down to support. The presence of a corporate AlmaLinux developer might make some parts of the community wary, despite assurances by CloudLinux representatives that the project is independent.