It’s now easier than ever to migrate from CentOS 7 to AlmaLinux 8, thanks to the AlmaLinux project called ELevate. Here’s how to do it.
Table of Contents
- 1. Take System Backup
- 2. Upgrade the Current CentOS 7 System
- 3. Migrate CentOS 7 to AlmaLinux 8
- 4. Check the OS Version
Have you ever asked yourself: How do I migrate from CentOS 7 to AlmaLinux? You don’t need to worry about this anymore because it’s possible in just a few easy steps I will show you in this guide.
This will be especially helpful for users of CentOS 7, who will need a clear upgrade path after the end of 2021 when Red Hat withdraws support for CentOS 8.
This is especially important because CentOS 7, which will lose support in 2024, is assumed to have a much larger user base than CentOS 8, which had only been available for a little over a year when Red Hat announced it was being sunsetted.
Related: CentOS Stream: Everything You Need to Know About it
For those unaware, the AlmaLinux ELevate project allows users to upgrade or migrate between any RHEL-based distro. So let’s do it.
Here is our CentOS 7 system before starting the migration process to AlmaLinux 8.
1. Take System Backup
Before upgrading, please back up all your essential data and take a snapshot of the complete CentOS 7 system. This way, you will be on the right side if anything goes wrong.
Alternatively, you can always use a command like the one shown below to archive all of the more important directories and their contents in a single
tar.gz archive file.
sudo tar czf /centos7.tar.gz \ --exclude=/centos7.tar.gz \ --exclude=/dev \ --exclude=/mnt \ --exclude=/proc \ --exclude=/sys \ --exclude=/run \ --exclude=/tmp \ --exclude=/media \ --exclude=/lost+found \ /
Of course, add more
--exclude= parameters if you need to. Finally, the command creates a backup of all the files and directories by placing them in the
centos7.tar.gz archive in the root partition (
Then, this file must be transferred to another computer or drive, for example, with the help of the SCP command.
2. Upgrade the Current CentOS 7 System
The next step in the upgrade process is to ensure we have a wholly upgraded system. Update existing software with the following command:
sudo yum update
Once all the packages are updated, reboot your system to apply the changes.
Now let’s verify our current operating system version.
CentOS Linux release 7.9.2009 (Core)
As you can see, the system runs CentOS 7.9, which is the latest CentOS version in the 7.x branch.
3. Migrate CentOS 7 to AlmaLinux 8
3.1 Install ELevate
The first step in the upgrade process is installing an
elevate-release package in your current CentOS7 system.
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
3.2 Install Leapp and Migration Data
The migration process is based on using Red Hat’s Leapp utility. It combines Red Hat’s Leapp framework with a community-created library and service for its required migration metadata set.
Therefore the next step is to install the required packages, which in our case, we wish to upgrade from CentOS 7 to AlmaLinux 8.
sudo yum install -y leapp-upgrade leapp-data-almalinux
3.3 Start a Pre-upgrade Check
The next step is to start a pre-upgrade check. The below command verifies server compatibility without any actual changes:
sudo leapp preupgrade
Probably the check will fail, but don’t panic! That’s normal because some tweaks are required in advance.
According to the official documentation, those three commands are shown below to solve the problem. Just run them one after the other:
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
(Optional) If you rerun the check, the pre-upgrade check will succeed.
sudo leapp preupgrade
3.4 Start the Upgrade Process from CentOS 7 to AlmaLinux 8
Now you can run the following command to migrate CentOS 7 to AlmaLinux 8.
sudo leapp upgrade
Be patient since the upgrade process could take some time. Once the migration is completed, you’ll be offered to reboot the system:
A new entry in GRUB called
ELevate-Upgrade-Initramfs will appear. Hit Enter and wait for the upgrade process to finish. The system will be automatically booted into it.
And you will be welcomed by the AlmaLinux 8 GRUB menu at boot time.
4. Check the OS Version
To confirm that you have successfully migrated from CentOS 7 to AlmaLinux 8, check the OS version:
AlmaLinux release 8.4 (Electric Cheetah)
That’s all. Congratulations! You have successfully migrated to AlmaLinux 8.
(Optional) In addition, you can update the server hostname to match with AlmaLinux.
sudo hostnamectl set-hostname almalinux8 sudo reboot
AlmaLinux’s ELevate tool is a great one. It may be a fantastic option if you want to migrate from CentOS 7 to AlmaLinux 8.
If you are running CentOS 8.x, all you have to do a switch to AlmaLinux 8 is to follow our CentOS 8 to AlmaLinux 8: A Step-by-Step Migration Guide.
Related: CentOS 8 to Rocky Linux 8 Migration: A Step-by-Step Tutorial
I have made this guide as simple as possible. Thanks for using it! Feel free to share your thoughts in the comments box below.
I tried the upgrade on CentOS 7.9, it froze on libvirtio (I’m writing from memory, it resembled something like that), then forced a reboot and now grub shows the old menu, Alma Linux tries to start, shows a lot of errors, then the cursor flashes and nothing else happens.
I have no clue what to do from here! That server is now down, the upgrade failed.
After solving the “inhibitors”, I always get the following error…
2022-05-14 15:14:39.704179 [ERROR] Actor: target_userspace_creator
Message: Unable to install RHEL 8 userspace packages.
Details: Command [‘systemd-nspawn’, ‘–register=no’, ‘–quiet’, ‘-D’, ‘/var/lib/leapp/scratch/mounts/root_/system_overlay’, ‘–setenv=LEAPP_NO_RHSM=0’, ‘–setenv=LEAPP_EXPERIMENTAL=0’, ‘–setenv=LEAPP_COMMON_TOOLS=:/etc/leapp/repos.d/system_upgrade/el7toel8/tools’, ‘–setenv=LEAPP_COMMON_FILES=:/etc/leapp/repos.d/system_upgrade/common/files:/etc/leapp/repos.d/system_upgrade/el7toel8/files’, ‘–setenv=LEAPP_UNSUPPORTED=0’, ‘–setenv=LEAPP_EXECUTION_ID=d5278bb5-e873-438d-b094-c7e1ebfcc069’, ‘–setenv=LEAPP_HOSTNAME=srv-net-072.alpaca.int’, ‘dnf’, ‘install’, ‘-y’, ‘–nogpgcheck’, ‘–setopt=module_platform_id=platform:el8’, ‘–setopt=keepcache=1’, ‘–releasever’, u’8.4′, ‘–installroot’, ‘/el8target’, ‘–disablerepo’, ‘*’, ‘–enablerepo’, u’almalinux8-baseos’, ‘–enablerepo’, u’almalinux8-powertools’, ‘–enablerepo’, u’almalinux8-resilientstorage’, ‘–enablerepo’, u’almalinux8-extras’, ‘–enablerepo’, u’almalinux8-highavailability’, ‘–enablerepo’, u’almalinux8-appstream’, ‘dnf’, ‘dnf-command(config-manager)’, ‘–disableplugin’, ‘subscription-manager’] failed with exit code 1.
Stderr: Failed to create directory /var/lib/leapp/scratch/mounts/root_/system_overlay//sys/fs/selinux: Read-only file system
Failed to create directory /var/lib/leapp/scratch/mounts/root_/system_overlay//sys/fs/selinux: Read-only file system
Host and machine ids are equal (4e3bf1688a5744d698d980f621bf9021): refusing to link journals
Failed to synchronize cache for repo ‘almalinux8-highavailability’, ignoring this repo.
Failed to synchronize cache for repo ‘almalinux8-extras’, ignoring this repo.
Failed to synchronize cache for repo ‘almalinux8-baseos’, ignoring this repo.
Failed to synchronize cache for repo ‘almalinux8-appstream’, ignoring this repo.
Failed to synchronize cache for repo ‘almalinux8-powertools’, ignoring this repo.
Failed to synchronize cache for repo ‘almalinux8-resilientstorage’, ignoring this repo.
Error: Unable to find a match: dnf dnf-command(config-manager)
END OF ERRORS
I’m having the same problem here. I’ve tried several ways to overpass it but nothing seems to work.
Have you found any fix to it?
tx in advance.
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing ‘dnf clean packages’.
Traceback (most recent call last):
File “/usr/lib64/python2.7/multiprocessing/process.py”, line 258, in _bootstrap
File “/usr/lib64/python2.7/multiprocessing/process.py”, line 114, in run
File “/usr/lib/python2.7/site-packages/leapp/repository/actor_definition.py”, line 72, in _do_run
File “/usr/lib/python2.7/site-packages/leapp/actors/__init__.py”, line 290, in run
File “/usr/share/leapp-repository/repositories/system_upgrade/common/actors/dnfpackagedownload/actor.py”, line 51, in process
xfs_info=xfs_info, storage_info=storage_info, plugin_info=plugin_info, on_aws=on_aws
File “/usr/share/leapp-repository/repositories/system_upgrade/common/libraries/dnfplugin.py”, line 385, in perform_rpm_download
File “/usr/share/leapp-repository/repositories/system_upgrade/common/libraries/dnfplugin.py”, line 219, in _transaction
e.stdout = e.stdout.encode(‘utf-8’, ‘xmlcharrefreplace’)
AttributeError: can’t set attribute
I got the same error. Any idea how to fix it?
turns out it had nothing to do with python but the container overlay image at /var/lib/leapp
is set to default 2048MB. There wasn’t enough space so i increased it by running
and that fixed it
When I did the yum update, Kernel 3.10.0-1160.80.1.el7.x86_64 was installed. Rebooting on that only goes to line-driven terminal with all kinds of problems (too numerous to convey, but includes things like failure to mount drives, etc). I can successfully reboot into the previous Kernel (3.10.0-1160.76.1.el7.x86_64). I removed the patch 80 copy of the Kernel and rebooted again. Then when I run leapp preupgrade, the report says that I have to be running the latest installed Kernel. I’m stuck in a catch 22. I am not a Linux expert by any means and there are none here. Are there any suggestions?
This is exceptionally well documented. But I can see by various comments that the upgrade is fraught with danger. Any upgrade is very dicey. So I am not sure whether to continue using Centos 7 until it just dies. I am getting more and more RACE warnings.
I was already running the upgrade, i mistakenly pressed the keypad and the installation stopped and since then i cant upgrade anymore, started giving errors, what can i do to start over