pixel

How to upgrade RHEL 9 to RHEL 10

Share on Social Media

Upgrade RHEL 9 to RHEL 10 the smart way! Discover a step-by-step, foolproof guide that ensures zero downtime and full compatibility. Don’t fall behind—secure better performance, security, and support today before it’s too late!



Updating RHEL 9 Before Upgrade

Why It’s Crucial to Fully Update RHEL 9

Before initiating any major OS upgrade, it’s vital to ensure that your current system is fully up-to-date. This isn’t just about patching security holes—Red Hat’s upgrade tools are typically tested and verified against the latest minor versions of RHEL. Running outdated software can lead to unpredictable behavior during the upgrade and increase the risk of failures or data loss.

When you’re still on an older minor release (like RHEL 9.0 or 9.1), it might lack critical upgrade compatibility scripts or newer package versions that are prerequisites for the RHEL 10 upgrade. So think of this as laying a solid foundation before building something new.

How to upgrade RHEL 9 to RHEL 10
How to upgrade RHEL 9 to RHEL 10

Commands to Update Your System

You’ll use the DNF package manager to update the system:

sudo dnf update -y
sudo dnf upgrade --refresh
sudo reboot

After the reboot, ensure you’re running the latest RHEL 9 version:

cat /etc/redhat-release

This should show something like:

Red Hat Enterprise Linux release 9.4 (Plow).

Recommended Training: Linux Administration: The Complete Linux Bootcamp in 2025 from Andrei Dumitrescu, Crystal Mind Academy

3371848 9ea9 18

Cleaning Up Unused Packages

Sometimes your system carries packages that aren’t necessary anymore, which can clutter or complicate the upgrade:

sudo dnf autoremove

This command will remove unnecessary packages and dependencies, making your system leaner and better prepared for the transition.

Enable Required Repositories

Ensure the BaseOS and AppStream repositories are enabled, as they are critical for both updates and upgrades:

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

Installing Red Hat Leapp Utility

What is Leapp and Why You Need It

Red Hat provides an official tool called Leapp for in-place upgrades from one major version to another. Leapp simplifies the process by performing pre-upgrade checks, logging potential risks, and automating the package and configuration upgrade process. It’s like having a smart assistant that flags issues before they break your system.

Installing the Required Tools

To get started with Leapp, install the upgrade packages provided by Red Hat:

sudo dnf install leapp-upgrade leapp-data -y

If these packages are unavailable, ensure your system is properly subscribed and that the correct repositories are enabled.

Verifying Leapp Installation

Once installed, confirm that Leapp is ready to use:

rpm -q leapp-upgrade
rpm -q leapp-data

You should also check for any dependencies or broken packages using:

sudo dnf repoquery --unsatisfied

This ensures your upgrade won’t be interrupted by unresolved software issues.


Running Pre-Upgrade Checks

Simulate Upgrade RHEL 9

Now comes one of the most critical steps—running Leapp in pre-upgrade mode. This doesn’t upgrade your system yet. Instead, it checks everything and tells you what’s going to break:

sudo leapp preupgrade

Leapp will analyze your system, check for known issues, and generate a report located here:

/var/log/leapp/leapp-report.txt
/var/log/leapp/leapp-upgrade.log

Understanding the Preupgrade Report

This report will highlight:

  • Incompatible packages
  • Deprecated features
  • Missing repositories
  • Suggested actions to fix problems

Red Hat usually includes hyperlinks in this file, directing you to detailed explanations and solutions for each problem detected.

Fixing Detected Issues

Based on the Leapp report, you might need to:

  • Remove or replace incompatible software
  • Enable or disable specific repositories
  • Adjust custom configurations

For example, if Leapp flags a third-party package that isn’t available in RHEL 10, you’ll need to remove it or find an alternative.

After resolving issues, rerun the preupgrade command until the report shows no critical warnings.


Performing the Actual Upgrade

Initiating the Upgrade Process

Once all prechecks are clear, and you’re confident in your backup and recovery plan, you can proceed with the upgrade. This step reboots your system into a special upgrade environment:

sudo leapp upgrade

This triggers the process that:

  • Downloads RHEL 10 packages
  • Resolves dependencies
  • Schedules the reboot into the upgrade environment

Reboot into Upgrade Environment

Leapp will create a special boot entry called Leapp Upgrader. You need to reboot into it to continue the process:

sudo reboot

The system will automatically boot into the upgrade mode and perform the transition from RHEL 9 to RHEL 10. This process might take 15–30 minutes depending on your system.

Monitoring the Progress

Keep a close eye on logs if you’re upgrading remotely or through a console. If something goes wrong, logs will be located in:

/var/log/leapp/

You’ll want to especially check leapp-upgrade.log for issues.


Post-Upgrade Tasks

Verifying Upgrade Success

After the system boots into RHEL 10, confirm the OS version:

cat /etc/redhat-release

You should see something like:

Red Hat Enterprise Linux release 10.0 (Savanna).

Also, run:

sudo leapp answer --list

And review logs again to ensure everything completed successfully.

Re-enable Disabled Services

Leapp may disable certain services during the upgrade to prevent conflicts. Re-enable critical ones:

sudo systemctl enable <service-name>
sudo systemctl start <service-name>

Reconnect and Re-test Applications

Ensure all hosted applications, services, and tools are functioning. Do a full systems test if possible, especially for production environments.

Read Also: How to Upgrade Rocky Linux 9 to 10


Resolving Common Post-Upgrade Issues

Handling Broken Packages and Dependencies

Even though the Leapp tool handles most of the work during the upgrade, sometimes you may encounter issues with broken packages or unmet dependencies. These can occur when custom or third-party packages are involved, especially if they don’t have an equivalent in RHEL 10.

To identify and fix these, use:

sudo dnf check
sudo dnf list extras

This will highlight packages that don’t belong to any repository and may need removal or manual upgrade. Use the following to remove or reinstall:

sudo dnf remove <package-name>
sudo dnf reinstall <package-name>

Pay close attention to errors during boot or service failures—these often point to a dependency or missing module.

Rebuilding Kernel Modules

Custom kernel modules (like those installed by Nvidia drivers or virtualization software) may fail to load after the upgrade. You might need to reinstall or rebuild them:

sudo dkms status
sudo dkms autoinstall

If your system relies on specific drivers or kernel plugins, refer to their documentation to ensure they support RHEL 10.

SELinux and Firewall Adjustments

SELinux contexts may also need to be relabeled:

sudo touch /.autorelabel
sudo reboot

This ensures that all files have the correct security contexts after an upgrade.

Likewise, check your firewall settings to ensure nothing was lost or misconfigured:

sudo firewall-cmd --list-all

Updating and Enabling Additional Repositories

Adding EPEL and Optional Repos

Once RHEL 10 is installed, you may need additional repositories like EPEL (Extra Packages for Enterprise Linux) to access community-maintained software:

sudo dnf install epel-release

Enable additional repos if you use specialized software:

sudo subscription-manager repos --enable=rhel-10-for-x86_64-optional-rpms
sudo subscription-manager repos --enable=rhel-10-for-x86_64-supplementary-rpms

If you’re using Red Hat Satellite or any internal mirror, make sure it’s updated to provide RHEL 10 content.

Refreshing and Cleaning the Repo Cache

After enabling the necessary repositories, it’s a good idea to refresh your system’s cache:

sudo dnf clean all
sudo dnf makecache

This helps avoid “file not found” errors when installing packages.


Finalizing the Upgrade

Verifying System Integrity

After everything is up and running, double-check the integrity of the entire system:

  • All services should be running
  • Application logs should be error-free
  • Resource usage (CPU, RAM) should be normal

Run a full diagnostic:

sudo sos report

This generates a detailed health report that can be shared with Red Hat support if needed.

Updating Your Documentation

Don’t forget to update internal documentation or system logs to reflect the changes made. Note down:

  • Date and time of upgrade
  • RHEL version before and after
  • Any issues resolved
  • New configurations

Proper documentation ensures that future system administrators or engineers know the history of the machine.

Taking a New Backup

Once everything is finalized, take a fresh backup of your upgraded RHEL 10 system. This backup now serves as the new baseline in case recovery is needed in the future.

Use:

rsync
dd
tar

Or enterprise tools like Bacula, Veeam, or RHV snapshots, depending on your environment.


Benefits of Upgrading to RHEL 10

Enhanced Security and Compliance

RHEL 10 introduces cutting-edge security enhancements. From improved SELinux policies to hardened kernel parameters, your systems are better protected right out of the box. Additionally, updated cryptographic libraries ensure compliance with the latest industry standards like FIPS and PCI DSS.

Better Performance and Scalability

With performance optimizations at the kernel and systemd level, RHEL 10 is designed for faster boot times, improved multi-core utilization, and better memory management. If you’re running containerized or virtualized workloads, you’ll notice smoother performance across the board.

Modernized Toolchains and Libraries

RHEL 10 offers updated programming languages (GCC, Python, Node.js), system libraries (glibc, libstdc++), and newer versions of system tools (dnf, podman). Developers and sysadmins will appreciate the up-to-date environment and enhanced compatibility with modern applications.

Read Also: How to upgrade AlmaLinux 9 to 10


Conclusion

Upgrading from RHEL 9 to RHEL 10 is more than a routine version bump—it’s a strategic move toward improved performance, tighter security, and future-ready compatibility. By carefully preparing your system, leveraging Red Hat’s powerful Leapp upgrade tool, and following post-upgrade best practices, you can make the transition seamless and safe.

Remember, major upgrades carry inherent risks. That’s why backup, testing, and documentation are your best allies. If you’re managing production environments, consider cloning your system in a test lab to perform a dry-run upgrade before touching live servers.

Whether you’re an enterprise sysadmin or a solo developer, upgrading to RHEL 10 positions you to make the most of Red Hat’s latest innovations.

Searching for a skilled Linux admin? From server management to security, I ensure seamless operations for your Linux systems. Find out more on my Fiverr profile!


Frequently Asked Questions (FAQs)

1. Can I directly upgrade from RHEL 8 to RHEL 10?
No, Red Hat does not support skipping major versions. You must first upgrade to RHEL 9 before proceeding to RHEL 10.

2. Is Leapp the only way to upgrade to RHEL 10?
Leapp is the recommended and supported method by Red Hat. Manual upgrades are not supported and are highly discouraged.

3. How long does the RHEL 9 to 10 upgrade process take?
Depending on your system’s speed and installed packages, it may take 15–60 minutes. Always allocate extra time for troubleshooting.

4. What if the upgrade fails mid-process?
This is why backups are critical. If your upgrade fails, you can restore from a backup or boot into a rescue environment to recover the system.

5. Is RHEL 10 stable for production use?
Yes, Red Hat thoroughly tests each release before GA (General Availability). If it’s marked as GA, it’s ready for enterprise production.


Looking for something?

Leave a Reply