Your cart is currently empty!
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 rebootEnsure 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-rpmsThis is important because the Leapp utility will need packages from both. (Red Hat Documentation)
3. Install the Leapp Utility
sudo dnf install -y leapp-upgradeThis 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.txtand 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 upgradeAfter the command completes, reboot:
sudo rebootOn 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:
- Back up your system and verify subscriptions/repositories.
- Update your RHEL 9 system to the latest minor revision.
- Enable both RHEL-9 and RHEL-10 repos.
- Install Leapp and run the pre-upgrade check.
- Resolve any flagged issues.
- Run
leapp upgrade, reboot, and let the process complete. - After booting into RHEL 10, verify version, update packages, check services, and clean up.

Tech enthusiast and content creator passionate about making technology simple for everyone. I share practical tips, guides, and reviews on the latest in computers, software, and gadgets. Let’s explore the digital world together!
