Differences between RHEL 9 and RHEL 10
RHEL 10 unveils a remarkable evolution from RHEL 9, showcasing a blend of cutting-edge technology and user-centric design. It provides a modern and polished interface. This tutorial compares both versions (RHEL 9 and RHEL 10) and lists their key differences. Understanding these differences helps you migrate your existing systems from RHEL 9 to RHEL 10 with ease.
kernel version
RHEL 9 is distributed with the kernel version 5.14, a crucial component for system performance, while RHEL 10.0 is distributed with the kernel version 6.12.0, indicating a significant upgrade in system functionality.
Repositories
Both versions are available through two repositories: BaseOS and AppStream. Both repositories are necessary for RHEL installation and are available with all RHEL subscriptions.
The BaseOS repository provides the core set of underlying operating system functionality that forms the foundation for all installations. It includes software in RPM format.
The AppStream repository includes additional user-space applications, runtime languages, and databases to support varied workloads and use cases. It provides software in RPM format, Software Collections, and Flatpaks.
In RHEL 9, some Application Streams were available as modules as an extension to the RPM format. In RHEL 10, Red Hat does not provide any Application Streams that use modularity as the packaging technology. It does not distribute any modular content with RHEL 10.
Containers
The system connections and farm information stored in the 'containers.conf' file are now read-only. The 'podman.connections.json' file saves manageable values of these and can be changed only by Podman.
The slirp4netns network mode is deprecated. The new default network mode for rootless containers is the pasta network mode.
It removed support for the CNI network stack. Any existing containers that use CNI for networking will no longer function. You need to remove and recreate them. Newly created containers will use the default 'netavark' network backend.
In RHEL 9, the default runtime container was the runc. Red Hat replaced it with the crun in RHEL 10. If you upgrade RHEL 9 or any previous version to RHEL 10, you have to run the 'podman system migrate --newruntime=crun' command to set a new OCI runtime for all containers.
RHEL 10 does not support RHEL 7 containers. You cannot run RHEL 7 containers on a RHEL 10 host.
RHEL 9 stores the storage.conf file in the /etc/containers directory. In RHEL 10, its location has changed to the /usr/share/containers directory.
Compilers and development tools
RHEL 10 includes several new compilers and development tools. The most notable tools are the following.
- System toolchain components (GCC 14.2, glibc 2.39, Annobin 12.92, and binutils 2.41)
- Performance tools and debuggers (GDB 14.2, Valgrind 3.24.0, SystemTap 5.2, Dyninst 12.3.0, elfutils 0.192, and libabigail 2.6)
- Performance monitoring tools (PCP 6.3.7, and Grafana 10.2.6)
- Compiler toolsets (cmake version 3.30.5, LLVM Toolset 19.1.7, Rust Toolset 1.84.1, and Go Toolset 1.23.2)
Desktop
In RHEL 10, Red Hat replaced power-profiles-daemon with tuned in gnome-control-center. Tuned dynamically adjusts system parameters such as display brightness, CPU frequency, and USB auto-suspend based on the workload for effective power management and performance tuning. You can also manually change these settings using GNOME settings.
RHEL 9 includes an Other Location option in the Files application. It allows you to access remote file systems and network shares without relying on locally mounted drives. In RHEL 10, Red Hat updated this option. Now, it has two more options to access files: the Network option and the Devices section. Both options are available in the sidebar. The Network option allows you to access network shares, and the Devices section lets you use mass storage devices.
Programming languages, Web Servers, and Database Servers
Both RHEL 9 and RHEL 10 include essential programming languages, web servers, and database servers. However, there are notable changes in the versions they provide with the default installation. The following table lists them.
| RHEL 10 | RHEL 9 | |
| Dynamic programming languages | Python 3.12, Ruby 3.3, Node.js 22, Perl 5.40, PHP 8.3 | Python 3.9, Ruby 3.0, Node.js 16, Perl 5.32, PHP 8.0 |
| Version control systems | Git 2.47, Subversion 1.14 | Git 2.31, Subversion 1.14 |
| Web servers | Apache HTTP Server 2.4.63, nginx 1.26 | Apache HTTP Server 2.4, nginx 1.20 |
| Proxy caching servers | Varnish Cache 7.6, Squid 6.10 | Varnish Cache 6.6, Squid 5.2 |
| Database servers | MariaDB 10.11, MySQL 8.4, PostgreSQL 16, Valkey 8.0 | MariaDB 10.5, MySQL 8.0, PostgreSQL 13, Redis 6.2 |
- RHEL 09 used module streams to provide multiple versions of MariaDB, MySQL, and PostgreSQL in parallel. Since Red Hat has removed modules from App Stream, RHEL 10 provides the MariaDB, MySQL, and PostgreSQL services as RPM packages instead of modules. It incorporates the stream version into the package name, for example, postgresql16. If Red Hat adds a new stream of MariaDB, MySQL, or PostgreSQL in a future RHEL version, you can install them by using the package name.
- RHEL 09 includes Berkeley DB (libdb) version 5.3.28. It is not available in RHEL 10. Berkeley DB (libdb) version 5.3.28 is available under the LGPLv2 license. The upstream Berkeley DB version 6 is available under the AGPLv3 license. AGPLv3 is restrictive. Therefore, Red Hat did not include the libdb package in RHEL 10.
File systems
RHEL 09 and earlier versions support GFS2 file systems. Starting with RHEL 10, Red Hat no longer supports the Red Hat Enterprise Linux (RHEL) Resilient Storage Add-On, which includes the GFS2 file system.
RHEL 10 does not support XFS V4 format. The XFS changed to V5 in RHEL 7.3. You can not mount XFS file systems created before RHEL 7.3 on RHEL 10 systems. To continue using data stored on older V4 format XFS file systems, back up the data on the old file system, use mkfs.xfs to create a new V5 file system, and restore the backed-up data.
In RHEL 10, the md-faulty and md-multipath MD RAID kernel modules are no longer available. It also removed the kmod-kvdo module and added the dm-vdo module in the kernel as the replacement.
Identity Management (IdM)
RHEL 10 supports Encrypted DNS using DNS over TLS (DoT) as a Technology Preview in Identity Management (IdM) deployments. Now, you can encrypt all DNS queries and responses between DNS clients and IdM DNS servers.
SSSD now supports performing all dynamic DNS (dyndns) queries using DNS-over-TLS (DoT). You can securely update DNS records when IP addresses change.
RHEL 10 enables automated removal of expired certificates in IdM on new replicas by default. Certificates are now created with random serial numbers and are removed automatically after a default retention period of 30 days following expiry.
Other notable changes in IdM are the removal of the enumeration feature, the NIS functionality, and the private key-based RSA method in the MIT Kerberos.
DHCP
In RHEL 10, Red Hat replaced the ISC DHCP server with the Kea DHCP server. Kea DHCP is an implementation from Internet Systems Consortium (ISC). It includes fully functional DHCPv4, DHCPv6, and Dynamic DNS servers. It has the following advantages:
- It is an extensible server solution with module hooks.
- It allows re-configuration through the REST API.
- It has a design that enables the separation of data (leases) and the execution environment.
Installation
RHEL 09 provides a map to select the timezone during the installation. RHEL 10 does not include this option.
RHEL 09 includes the initial-setup package. It launches a setup wizard just after the installation, allowing you to configure a few essential settings. Red Hat removed the initial-setup package in RHEL 10.
Starting with RHEL 10, LUKS2 provides default encryption for all new storage devices.
RHEL 09 and earlier versions allow you to configure additional repositories for package installation while setting up the installation source. Red Hat removed this feature in RHEL 10. Now, you cannot configure additional repositories during the installation.
In RHEL 10, Red Hat removed the built-in help of Anaconda. In earlier versions, you could use it to read the built-in documentation from spokes and hubs of all Anaconda user interfaces available during the installation.
The installation process presents the 'Make this user administrator' option under the Users section. If you select this option, the user gets the administrative privileges. By default, this option is unchecked in RHEL 09 and checked in RHEL 10. Unless you manually unselect this option in RHEL 10, the newly created users will have administrative privileges.
In RHEL 09 and earlier versions, the installer program automatically reports bugs to the Red Hat issue tracking system. Red Hat removed this feature in RHEL 10. To report any problem or bug, you have to collect the installation logs and report them manually.
RHEL 09 allows you to capture screenshots of the Anaconda GUI by using a global hot key. You can extract the screenshots manually from the installation environment for any further usage. RHEL 10 does not provide this functionality.
RHEL 09 uses VNC for graphical remote access. Red Hat replaced it with Remote Desktop Protocol (RDP) in RHEL 10.
AI support
RHEL 10 supports the AI command-line tool (powered by RHEL Lightspeed) to interact with workflows, solve issues, access knowledge from several Red Hat resources, implement new RHEL features, find information, and more. It is an optional tool. To use it, you must install it
first.
This feature is not available in RHEL 09.
Networking
The teamd service allows you to create network teams which are similar to network bonds. Network teams and bonds provide the same functionality. However, the bonding code has a high customer adoption, is robust, and has an active community development. To support bonds, in RHEL 10, Red Hat removed the teamd service and the libteam library. If you use RHEL 9 with a network team and plan to upgrade to RHEL 10, migrate the network team configuration to a network bond before you upgrade.
RHEL 9.0 stores newly created network configurations in a key file format in the /etc/NetworkManager/system-connections/ directory. In addition, it also supports the existing connections stored in the /etc/sysconfig/network-scripts/ directory in the old ifcfg format. RHEL 10 does not support the ifcfg format-based network configuration files stored in the /etc/sysconfig/network-scripts/ directory.
The dhclient utility
The dhclient utility is a DHCP client program used to obtain IP addresses, network configuration, and other information from a DHCP server. Red Hat removed it from RHEL 10.
The /etc/NetworkManager.conf file (RHEL 09 and earlier versions)
dhcp=dhclient
The /etc/NetworkManager.conf file (RHEL 10 and above versions)
dhcp=internal (default)
System management
Red Hat removed the perl(Mail::Sender) module in RHEL 10. As a result, the system cannot send email alerts when bandwidths for a host or interface reach the defined levels.
The dnf tool
In RHEL 09, when you download a repository's metadata, it automatically downloads the filelists metadata. The filelists metadata is extensive and is typically not needed. Red Hat removed this feature in RHEL 10. In RHEL 10, it does not download the filelists metadata automatically. However, if the dnf command requires the filelists metadata or includes a filerelated argument, it downloads and loads it automatically. It saves disk space and improves responsiveness.
In RHEL 10, Red Hat removed the dnf debug plug-in, which provides the dnf debug-dump and dnf debug-restore commands. As a result, you cannot use these commands on RHEL 10.
In RHEL 10, the createrepo_c command does not generate SQLite databases next to XML files. If you need it, use the --database option to create it explicitly.
Virtualization
In RHEL 10, Red Hat replaced the i440fx-rhel7.6 machine type with i440fxrhel10.0. As a result, virtual machines that use i440fx-rhel7.6 will not boot after upgrading your host to RHEL 10. Similarly, live-migrating a VM that uses i440fx-rhel7.6 to a RHEL 10 host causes the VM to stop working.
Solution
To run a virtual machine with the i440fx-rhel7.6 machine type on a RHEL 10 host, use the following steps.
Open the XML configuration file of the virtual machine.
#virsh edit [vm-name]
Change the machine parameter to pc-i440fx-rhel10.0 on the [type] line.
<type arch='x86_64' machine='pc-i440fx-rhel10.0'>hvm</type>
Save and exit the virtual machine configuration file.
This fix will work only on RHEL 10. Red Hat has deprecated the i440fx machine type in RHEL 10. It will remove it in the upcoming major version of RHEL.
Key points:-
- RHEL 10 includes a newer kernel version compared to RHEL 9, offering improved performance, stability, and security features.
- RHEL 10 comes with updated software packages and libraries, which may be more recent than those in RHEL 9, allowing for better support of modern applications.
- RHEL 10 introduces additional security features, such as enhanced SELinux capabilities, updated cryptographic libraries, and improved security compliance tools that may differ from those in RHEL 9.
- New and improved tools for system management and monitoring are part of RHEL 10, making it easier to administer and oversee systems compared to RHEL 9.
- RHEL 10 offers enhanced support for containers, including updated versions of container runtimes or orchestration tools, reflecting the growing importance of containerization in enterprise environments.
- RHEL 10 enhances system performance, resource management, and application responsiveness compared to RHEL 9.
Conclusion
RHEL 10 is a significant release. In this version, Red Hat introduced several new features, updated existing ones, and removed outdated features. This tutorial compared this version with its previous one and listed the key differences between them.
Author Laxmi Goswami Updated on 2025-10-14