RackNerd Billboard Banner

How to Upgrade RHEL 9 to RHEL 10 Step-by-Step

If you’re running Red Hat Enterprise Linux 9 (RHEL 9) and preparing to move to Red Hat Enterprise Linux 10 (RHEL 10), you’re in the right place. In this article I’ll walk you through a supported, in-place upgrade path from RHEL 9 → RHEL 10, using the official toolset and best practices, so you can transition with minimal downtime and maximum confidence.


Why upgrade to RHEL 10?

Before diving into the how-to, let’s quickly recap why you might want to upgrade:

  • RHEL 10 brings newer core components (kernel, glibc, systemd etc) and better long-term support. (unixsysadmin.com)
  • Enhanced security, better hardware support, and more future-ready features. (WebAsha)
  • The upgrade path from RHEL 9 to RHEL 10 is supported by Red Hat and uses the official in-place upgrade framework. (Red Hat Documentation)
  • Staying on an older major version adds risk: fewer security updates, potential compatibility gaps, etc.

If you’re responsible for servers, it makes sense to plan the upgrade rather than postpone indefinitely.


Pre-Upgrade Planning / Checklist

Upgrades of major OS versions require preparation. Skipping steps means you may run into trouble. Use this checklist:

  • Backup everything: Take filesystem snapshots or use tar, rsync, or your preferred backup tool. Ensure you can restore in case things go sideways. (kifarunix.com)
  • Ensure subscriptions & repositories are valid: Your system must be registered and have access to the RHEL repositories for both RHEL 9 (source) and RHEL 10 (target). (Red Hat Documentation)
  • Update your RHEL 9 system to latest minor version: Make sure you’re patched and on a supported minor release for upgrade. (Red Hat Documentation)
  • Check hardware & architecture support: Some older CPUs or architectures may no longer be supported in RHEL 10. For example, switching from BIOS to UEFI boot loader mid-upgrade is not supported. (Red Hat Documentation)
  • Identify third-party repositories or custom packages: Packages with SHA-1 signatures or unsupported custom RPMs may cause the upgrade to be blocked. (Red Hat Documentation)
  • Stop or disable non-essential services: During upgrade it’s safer to minimize running services, especially if they have external dependencies.
  • Test in a non-production environment: If possible clone your environment and perform a dry run of the upgrade to catch issues in advance.

Step-by-Step Upgrade Procedure

Here’s the workflow to perform the in-place upgrade from RHEL 9 → RHEL 10, using the official tool called Leapp.

1. Update the Current System

On your RHEL 9 host:

sudo dnf update -y
sudo reboot

Ensure you’re running the latest minor version of RHEL 9. (centlinux.com)

2. Enable/Verify Repositories for RHEL 9 and RHEL 10

Make sure you have the source (RHEL 9) and target (RHEL 10) repositories enabled. For example:

sudo subscription-manager repos \
  --enable=rhel-9-for-x86_64-baseos-rpms \
  --enable=rhel-9-for-x86_64-appstream-rpms \
  --enable=rhel-10-for-x86_64-baseos-rpms \
  --enable=rhel-10-for-x86_64-appstream-rpms

This is important because the Leapp utility will need packages from both. (Red Hat Documentation)

3. Install the Leapp Utility

sudo dnf install -y leapp-upgrade

This installs the tool to coordinate the in-place major upgrade. (kifarunix.com)

4. Run the Pre-Upgrade Assessment

With Leapp installed, run:

sudo leapp preupgrade
  • This creates a report in /var/log/leapp/leapp-report.txt and other logs in /var/log/leapp/.
  • Review the report carefully. It will flag incompatible packages, repository issues, unsupported hardware, etc.
  • Resolve the issues identified: remove or update problematic packages, handle custom drivers, verify service compatibility. (Red Hat Documentation)

5. Execute the Upgrade

Once the pre-upgrade check is clean or you’ve addressed the issues, carry out the upgrade:

sudo leapp upgrade

After the command completes, reboot:

sudo reboot

On reboot you’ll be prompted (or automatically selected) the LEAPP-generated boot entry into the special upgrade environment. The system will then migrate to RHEL 10. (hackers4u.com)

6. Post-Upgrade Verification & Clean-up

After booting into RHEL 10:

  • Confirm you’re on RHEL 10:
    cat /etc/redhat-release
  • Run:
    sudo dnf update -y
    to ensure any remaining patches are applied.
  • Check that your critical services are running (systemctl status <service>).
  • Remove legacy kernels, old packages, and cleanup Leapp temp files. For example:
    sudo dnf remove kernel-<old-version>
    sudo rm -rf /var/log/leapp/
  • Re-enable any SELinux customizations or policies if they were disabled.
  • Monitor logs (journalctl, /var/log/messages) for any post-upgrade warnings.

Detailed clean-up steps are described in sources. (kifarunix.com)


Important Considerations & Common Pitfalls

  • Supported upgrade path: You must upgrade from one major version to the next (e.g., RHEL 9 → RHEL 10). Skipping major releases is not supported. (Red Hat Documentation)
  • Boot loader limitations: If your system uses BIOS boot and you want to migrate to UEFI, a fresh install is required—an in-place upgrade won’t handle boot loader mode switching. (Red Hat Documentation)
  • Unsupported custom packages: Packages built with SHA-1 signatures, or third-party drivers or extensions, may block the upgrade. Review vendor support. (Red Hat Documentation)
  • Hardware architecture support: Older CPUs without certain instruction sets may fail after upgrading to RHEL 10. Always verify hardware compatibility. (vinfrastructure.it)
  • Always test in a lab: Many administrators recommend performing the upgrade on a non-production system first. In one community thread: “Just wondering — has anyone here actually managed to perform a successful upgrade from RHEL 9.6 to 10.0 using the official leapp tool … I ran a test on a fresh, clean RHEL 9.6 install … and still ended up in emergency mode after reboot.” (Reddit)
    This underscores the importance of testing.

When Should You Consider a Clean Install Instead?

While in-place upgrades are convenient, there are cases where a clean install may be the smarter choice:

  • If you have heavy customization, difficult to track legacy packages or configurations.
  • If your system will change significantly (hardware, boot loader mode, partition layout).
  • If you want a fresh, clean baseline rather than carry forward old artefacts.
  • If you’re moving from BIOS → UEFI or changing major hardware architecture.

In these cases, plan for a fresh RHEL 10 install, then migrate applications/data manually.


Summary

Upgrading from RHEL 9 to RHEL 10 is fully supported using the Leapp utility—provided you follow the required preparation, validate your environment, and carefully follow the upgrade steps. While no upgrade is risk-free, with good backups, testing and planning you can transition smoothly and take advantage of RHEL 10’s new features and long-term support.

Main takeaway steps:

  1. Back up your system and verify subscriptions/repositories.
  2. Update your RHEL 9 system to the latest minor revision.
  3. Enable both RHEL-9 and RHEL-10 repos.
  4. Install Leapp and run the pre-upgrade check.
  5. Resolve any flagged issues.
  6. Run leapp upgrade, reboot, and let the process complete.
  7. After booting into RHEL 10, verify version, update packages, check services, and clean up.
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
RackNerd Billboard Banner
© 2025 Computer Everywhere
Your Everyday Guide to the Digital World.
Terms of Service | Privacy Policy
Copy link