Mastering the migration that is AlmaLinux's signature advantage: in-place upgrades between major versions with ELevate based on leapp, converting CentOS 7, 8, and 9 to AlmaLinux with almalinux-deploy, plus preflight checks, rollback planning, and post-migration verification practices.

In the previous episode, Episode 19, we took AlmaLinux to the cloud, WSL, and Raspberry Pi. Now we cover one of the features that most distinguishes AlmaLinux from other distros: migration. For enterprise admins, a major upgrade usually means a complete reinstall — hours of downtime, reconfiguration, and high risk. AlmaLinux changes that.
This episode covers ELevate for in-place upgrades between major versions, almalinux-deploy for converting from CentOS, and safe migration practices: preflight, rollback, and verification.
In-place migration means the system is upgraded from an old version to a new one without reinstalling — all packages, configuration, users, and data are kept on the same disk. This contrasts with reinstallation, which starts from scratch.
sudo dnf5 upgrade, which we covered in episode 4, handles minor upgrades within the same major version. To jump major versions (for example 8 to 9, or 9 to 10), a special tool is needed: ELevate.
ELevate is AlmaLinux's official migration tool based on leapp — the in-place upgrade framework developed by Red Hat. Leapp works by analyzing the system, identifying problems, and performing the upgrade in stages.
Preflight (risk analysis)
-> Install leapp + AlmaLinux plugin
-> Run upgrade phase 1
-> Reboot into upgrade initramfs
-> Upgrade phase 2 (system is transformed)
-> Reboot into the new systemLeapp performs the transformation in two phases with a reboot in between — that's what makes a major upgrade possible without reinstallation.
sudo dnf5 install -y leapp-upgrade almalinux-elevateOnce the packages are installed, run the preflight:
sudo leapp preupgradeDanger
leapp preupgrade is the most important step in the entire process. Its output contains the list of issues that must be fixed before the upgrade — incompatible packages, configuration that needs adjusting, and inhibitors that block the process. Never skip this step.
After all preflight issues are resolved, run the main upgrade:
sudo leapp upgradeThis command prepares the upgrade and automates the reboot. The system boots into the upgrade initramfs, runs the transformation, then reboots into AlmaLinux 10. The process takes several tens of minutes — and during that time the system must not be interrupted.
cat /etc/os-release
dnf5 --version
uname -rThese three commands confirm the system really switched: version identity, package manager, and kernel.
A major upgrade isn't without risk. Before starting, make sure:
df -h /
dnf5 history list | headIf the disk is nearly full or there are unrecognized custom packages, handle those first — don't start an upgrade in a vulnerable state.
For servers still running CentOS, almalinux-deploy performs a direct conversion without reinstallation.
CentOS 7 (old) is converted to AlmaLinux 8:
wget https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
sudo bash almalinux-deploy.shThis script replaces the CentOS repositories with AlmaLinux's and upgrades the packages. After it finishes, reboot and verify.
CentOS 8 and 9 can be converted directly via dnf — because both share the same structure as RHEL 8/9. The basic steps replace the repositories with AlmaLinux's then upgrade:
sudo dnf5 swap centos-repos almalinux-repos
sudo dnf5 distro-syncThe combination of swap (swapping repositories) and distro-sync (aligning packages with the new repos) turns CentOS into AlmaLinux at the same version — a far simpler path than cross-major-version conversion.
Let's assemble the correct migration procedure for any scenario:
leapp preupgrade (for ELevate) and fix all inhibitors.cat /etc/os-release.dnf5 repolist.sudo restorecon -Rv /var /etc /home
sudo ausearch -m avc -ts recent | headdnf5 upgrade to make sure the system is fully up to date.Warning
Wrong SELinux contexts are one of the main causes of "the system doesn't work" after migration. The restorecon step and ausearch checks above are often the difference between a successful migration and first-day panic.
leapp preupgrade exists to save you — ignored issues will surface in the middle of the upgrade.restorecon and check ausearch after migration.In this episode 20 you've mastered cross-version migration: the in-place upgrade concept, leapp-based ELevate for major version jumps, CentOS 7/8/9 conversion with almalinux-deploy and dnf5 swap, and the preflight check, rollback plan, and post-migration verification practices including SELinux contexts.
Key takeaways:
leapp preupgrade is a mandatory step — fix all inhibitors before leapp upgrade.almalinux-deploy converts CentOS 7 → AlmaLinux 8; dnf5 swap + distro-sync handles CentOS 8/9.os-release, repolist, restorecon, and upgrade again.Controlled migration makes you ready to look at this distro's future. In the next episode, Episode 21, we'll cover AlmaLinux 10, Lifecycle & Roadmap — the RHEL 10-based AlmaLinux 10 features, Full Support until 2031 and Maintenance until 2035, the minor release cycle, and the roadmap direction toward image mode and cloud-native. See you there!