Reducing Downtime with AlmaLinux ELevate: Managing In-Place Major Version Upgrades
Learn how to use AlmaLinux ELevate to perform in-place major version upgrades, reducing the overhead of clean installs while managing risks associated with kernel modules and dependencies.
11 Sept 2026, 11:44 UTC

The Cost of the 'Wipe and Reload'
The traditional approach to upgrading a Linux server from one major version to another (e.g., version 8 to 9) is the clean install. While this ensures a pristine environment, it introduces significant operational overhead: backing up every configuration file, exporting databases, recreating user accounts, and rebuilding application dependencies. For organizations managing dozens of servers, this process is a primary source of deployment errors and extended downtime.
AlmaLinux addresses this with ELevate, a framework designed for in-place major-version upgrades. Instead of a fresh install, ELevate migrates the existing system, preserving data and configurations while updating the core OS packages to the next major release.
How ELevate Differs from Standard Updates
A standard dnf update handles minor version releases (like 8.8 to 8.9) by updating packages within the same major branch. A major version jump, however, involves changes to the kernel, glibc, and system libraries that are often incompatible with the previous version's package manager logic.
ELevate works by utilizing a migration tool (the elevate-release package) that coordinates the transition. It doesn't just swap packages; it analyzes the current system state, removes incompatible packages, updates the repository definitions to the target version, and then performs a phased upgrade of the system components.
Practical Implementation: Moving from 8 to 9
To use ELevate, you must run the process from a system currently running AlmaLinux 8 (or a compatible RHEL-based distribution). This process requires root privileges and a stable network connection to the AlmaLinux repositories.
Step 1: System Preparation
Before starting, ensure the system is fully updated and a full snapshot or backup is taken. In-place upgrades modify the bootloader and core libraries; if the process is interrupted, the system may become unbootable.
# Update all current packages
sudo dnf update -y
# Reboot to ensure the latest kernel is active
sudo reboot
Step 2: Installing the ELevate Framework
Install the release package that provides the migration tools:
# Install the elevate-release package
sudo dnf install -y http://repo.almalinux.org/elevate/elevate-release-latest-el8.gpm
Step 3: Running the Pre-Upgrade Check
The leapp utility is the engine behind ELevate. It performs a non-destructive analysis to identify "inhibitors"—packages or configurations that would block the upgrade.
# Run the pre-upgrade check
sudo leapp preupgrade
Expected Check: If the output ends with "Upgrade inhibited," you must check /var/log/leapp/leapp-report.txt. This file lists the specific reasons for the failure, such as outdated kernel modules or incompatible third-party repositories.
Step 4: Executing the Upgrade
Once all inhibitors are resolved, trigger the actual migration:
# Execute the upgrade sudo leapp upgradeAfter the command completes, reboot the system. The GRUB boot menu will show a new entry called
ELevate-Upgrade-Initramfs. The system will boot into this temporary environment to finish the package transitions before finally booting into the new major version.Trade-offs and Technical Limitations
While ELevate saves time, it is not a silver bullet. There are specific scenarios where a clean install remains the safer choice:
- Proprietary Drivers: Third-party kernel modules (like specific RAID controller drivers or legacy GPU drivers) may not be compatible with the target version's kernel and can cause a kernel panic during the first boot.
- Custom Repositories: If you rely on non-standard repositories (e.g., specialized EPEL versions or vendor-specific repos), you must manually verify that those repositories have a version compatible with the target OS release.
- System Bloat: In-place upgrades can sometimes leave behind orphaned configuration files or deprecated packages that a clean install would naturally eliminate.
Verifying the Migration
Once the system reboots, verify the version change and check for broken dependencies:
# Verify the OS version
cat /etc/redhat-release
# Check for broken packages
sudo dnf check
If the dnf check returns errors, you may need to manually remove the offending packages or update your third-party repository URLs to match the new major version.
Rollback Strategy
Because ELevate modifies the system state fundamentally, there is no "undo" command within the OS. The only reliable rollback is a filesystem-level snapshot (such as LVM snapshots or VM snapshots) taken immediately before running leapp upgrade. If the upgrade fails, revert to the snapshot to restore the system to its version 8 state.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.