How To

How to Install RHEL 10 (Step-by-Step with Screenshots)

RHEL 10 shipped in May 2025 with kernel 6.12, GNOME 47 on Wayland, Python 3.12, GCC 14.2, and a brand new Image Mode (bootc) that lets you deploy the OS as a container image. It also brought post-quantum cryptography support, encrypted DNS, and an x86-64-v3 baseline requirement, which means older pre-2015 CPUs are no longer supported.

Original content from computingforgeeks.com - post 83208

This guide walks through a clean RHEL 10 installation from ISO on bare metal or a virtual machine, covering every screen of the Anaconda installer with real screenshots. After the install, you will register the system with Red Hat, apply updates, and configure essential post-install settings. The same steps apply whether you are setting up a physical server, a Proxmox or KVM virtual machine, or a VMware/VirtualBox guest.

Verified working: April 2026 on RHEL 10.1 (kernel 6.12.0-124.8.1.el10_1), Anaconda installer, GNOME 47 desktop

Prerequisites

Before starting, make sure you have the following ready:

  • Red Hat account for downloading the ISO and registering the system. A free Red Hat Developer subscription works for personal use and allows up to 16 systems
  • RHEL 10 ISO image from the Red Hat Customer Portal (Binary DVD ~8 GB, or Boot ISO ~900 MB for network installs)
  • Bootable USB drive (8 GB+) for physical installs, or a hypervisor with the ISO mounted for virtual machines
  • Hardware requirements: x86-64-v3 CPU (Intel Haswell / AMD Excavator or newer), 2 GB RAM minimum (4 GB recommended with GUI), 20 GB disk (40 GB+ recommended), network access for registration and updates
  • Tested on: RHEL 10.1, x86_64, Proxmox VE 8.3 (KVM), 4 GB RAM, 50 GB disk

RHEL 10 dropped support for x86-64-v2 processors. If your server predates 2013, check CPU compatibility first with grep -o 'avx2' /proc/cpuinfo on an existing Linux install. No output means the CPU lacks AVX2 and won’t boot RHEL 10.

Download the RHEL 10 ISO

Log in to the Red Hat Customer Portal and navigate to the RHEL 10 downloads section. Two ISO options are available:

  • Binary DVD (~8 GB): contains all packages for an offline install. Best for air-gapped servers or when you want a full local package set
  • Boot ISO (~900 MB): minimal image that pulls packages from Red Hat CDN during install. Faster to download, requires internet on the target machine

For most server installs, the Binary DVD is the safer choice since it does not depend on network availability during installation.

Red Hat Customer Portal showing RHEL 10 ISO download options

Create Bootable Installation Media

How you prepare the media depends on whether you are installing on physical hardware or a virtual machine.

USB Drive (Physical Servers)

On a Linux workstation, write the ISO directly to the USB device:

sudo dd if=~/Downloads/rhel-10.1-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress oflag=sync

Replace /dev/sdX with your actual USB device. Double-check with lsblk before running this command because dd will overwrite whatever device you point it at.

On Windows, use Rufus with GPT partition scheme and DD image mode. On macOS, balenaEtcher handles the write with a simple drag-and-drop interface.

Virtual Machine Setup

For VMware, VirtualBox, Proxmox, or KVM, upload the ISO to your datastore or storage pool and attach it to a new VM as a CD/DVD drive. Set the VM to boot from the optical drive first.

RHEL 10 ISO uploaded to VM storage pool

Mount the ISO to the VM’s virtual CD-ROM and start the machine:

Virtual machine configuration with RHEL 10 ISO mounted

Boot from the RHEL 10 Installer

When the system boots from the ISO, the GRUB boot menu appears. Select Install Red Hat Enterprise Linux 10.0 and press Enter. The “Test this media & install” option runs an integrity check on the ISO first, which adds a few minutes but catches corrupt downloads before they cause cryptic install failures.

RHEL 10 GRUB boot menu showing install options

Select Installation Language

The Anaconda installer starts with a language selection screen. Pick your preferred language and keyboard layout. This controls the installer’s interface language and sets the default locale for the installed system (you can change it later).

RHEL 10 Anaconda installer language selection screen

Configure the Installation Summary

After language selection, Anaconda presents the Installation Summary hub. This is where all configuration happens before writing anything to disk. Items marked with a warning icon need attention before you can proceed.

RHEL 10 Anaconda installation summary hub with configuration options

Work through each section that needs configuration:

Root Password

Click Root Password to set the root account credentials. RHEL 10 locks the root account by default unless you explicitly set a password here. For servers, enabling root SSH access is common during initial setup, though production systems should rely on sudo-capable user accounts instead.

Setting root password during RHEL 10 installation

Create a User Account

Click User Creation to add a non-root account. Check “Make this user administrator” to grant sudo privileges. This account is what you should use for day-to-day access.

Creating an administrator user account in RHEL 10 installer

Connect Red Hat Account (Optional)

If the machine has internet access during installation, you can register with Red Hat right from the installer. This pre-registers the system and enables content delivery during install. You can also skip this and register after installation from the command line.

Red Hat account registration during RHEL 10 installation

Installation Destination (Disk Partitioning)

Click Installation Destination to select the target disk and partitioning scheme. For most setups, the “Automatic” option creates a sensible LVM layout with /boot, /boot/efi (on UEFI systems), and a root volume group. RHEL 10 defaults to XFS for the root filesystem.

For production servers, consider custom partitioning with separate /var and /home volumes to prevent log files or user data from filling the root filesystem.

RHEL 10 disk partitioning and installation destination screen

Once all sections are configured, click Begin Installation. Anaconda writes the partition table, formats the filesystems, and installs packages. On a local disk with the Binary DVD, this typically takes 5 to 15 minutes depending on disk speed.

Reboot into the Installed System

When the installation completes, Anaconda prompts you to reboot. Remove the USB drive or unmount the ISO from the VM before the system restarts, otherwise it will boot back into the installer.

RHEL 10 installation complete with reboot prompt

After reboot, log in with the user account you created during installation:

RHEL 10 GNOME login screen after successful installation

If you installed the Server with GUI option, GNOME 47 loads on Wayland by default. For a headless server with no desktop, you can log in at the text console or connect over SSH.

Register with Red Hat from the Desktop

If you skipped registration during installation, the GNOME desktop offers a graphical registration path through Settings > System > Registration:

RHEL 10 GNOME desktop registration settings

The command-line method in the next section works for both GUI and headless server installs.

Post-Installation Setup

With RHEL 10 installed, configure the essentials before putting the system into service.

Set the System Hostname

A proper FQDN hostname matters for logging, certificate generation, and subscription management. Set it with hostnamectl:

sudo hostnamectl set-hostname rhel10.example.com --static

Verify the change took effect:

hostnamectl

The output shows the static hostname, operating system version, kernel, and architecture:

 Static hostname: rhel10.example.com
       Icon name: computer-vm
         Chassis: vm
      Machine ID: a1b2c3d4e5f6...
         Boot ID: f6e5d4c3b2a1...
  Virtualization: kvm
Operating System: Red Hat Enterprise Linux 10.1 (Coughlan)
     CPE OS Name: cpe:/o:redhat:enterprise_linux:10::baseos
          Kernel: Linux 6.12.0-124.8.1.el10_1.x86_64
    Architecture: x86-64

Add the hostname to /etc/hosts so it resolves locally without DNS:

echo "10.0.1.50 rhel10.example.com rhel10" | sudo tee -a /etc/hosts

Replace 10.0.1.50 with your server’s actual IP address.

Register and Subscribe the System

Registration connects the system to Red Hat’s content delivery network, unlocking official repos and security updates. Run:

sudo subscription-manager register --auto-attach

Enter your Red Hat username and password when prompted. The --auto-attach flag automatically assigns the best available subscription:

Registering to: subscription.rhsm.redhat.com:443/subscription
Username: [email protected]
Password:
The system has been registered with ID: 1de1c897-0348-48b2-895a-15e1296a8f46
The registered system name is: rhel10.example.com
Installed Product Current Status:
Product Name: Red Hat Enterprise Linux for x86_64
Status:       Subscribed

Confirm the registration status:

sudo subscription-manager status

The output should show “Overall Status: Current” meaning the system has valid entitlements and can pull updates.

Apply System Updates

List the available repositories to confirm registration worked:

sudo dnf repolist

You should see the BaseOS and AppStream repositories:

Updating Subscription Management repositories.
repo id                                  repo name
rhel-10-for-x86_64-appstream-rpms        Red Hat Enterprise Linux 10 for x86_64 - AppStream (RPMs)
rhel-10-for-x86_64-baseos-rpms           Red Hat Enterprise Linux 10 for x86_64 - BaseOS (RPMs)

Pull all available updates:

sudo dnf -y update

If the update includes a new kernel, reboot to load it:

sudo systemctl reboot

Verify the Installed System

After reboot, confirm the OS release and kernel version:

cat /etc/redhat-release

This returns the full release string:

Red Hat Enterprise Linux release 10.1 (Coughlan)

Check the running kernel:

uname -r

Output:

6.12.0-124.8.1.el10_1.x86_64

Enable the CRB Repository

Many third-party packages and development tools depend on packages in the CodeReady Builder (CRB) repository, which is not enabled by default. Enable it with:

sudo subscription-manager repos --enable codeready-builder-for-rhel-10-x86_64-rpms

This is a prerequisite for installing EPEL and many development libraries. See our dedicated guide on enabling the CRB repository on RHEL 10 for more details.

Configure the Firewall

RHEL 10 installs and enables firewalld by default. Verify it is running:

sudo firewall-cmd --state

Open ports for the services you plan to run. For example, to allow SSH and HTTP/HTTPS permanently:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

List the active rules to confirm:

sudo firewall-cmd --list-all

Confirm SELinux is Enforcing

SELinux should be in enforcing mode by default. Verify with:

getenforce

The output should be Enforcing. Never set SELinux to permissive or disabled on a production system. If a service is being blocked, use ausearch -m avc -ts recent to find the specific denial and fix it with the appropriate setsebool or semanage command rather than disabling the entire security framework.

Set the Timezone

Confirm or change the system timezone:

sudo timedatectl set-timezone America/New_York

List available timezones with timedatectl list-timezones and pick the one matching your server’s location. Accurate time is critical for log correlation, certificate validation, and Kerberos authentication.

RHEL 10 Key Specifications

For reference, here are the core components that ship with RHEL 10:

ComponentVersion
Kernel6.12.0 (10.0) / 6.12.0-124 (10.1)
GCC14.2
glibc2.39
Python3.12
Perl5.40
Go1.23
GNOME47 (Wayland default)
Default filesystemXFS
CPU baselinex86-64-v3 (AVX2 required)
Support lifecycleUntil 2035 (10 years)
CodenameCoughlan

Unregistering the System

If you need to decommission or re-register the system (for example, moving a subscription to another server):

sudo subscription-manager unregister

This releases the subscription entitlement back to your Red Hat account pool.

Production Hardening Checklist

Before putting the server into production, consider these additional steps:

  • Disable root SSH login: set PermitRootLogin no in /etc/ssh/sshd_config and use key-based authentication with your sudo user instead
  • Configure automatic updates: install dnf-automatic for unattended security patches
  • Set up static IP addressing if the server runs services that need consistent network identity
  • Install monitoring: deploy Nagios, Zabbix, or Prometheus to track resource usage and service health
  • Enable Cockpit for web-based server management at https://server-ip:9090 (installed by default on Server with GUI)
  • Configure time sync: RHEL 10 uses chrony by default, verify with chronyc tracking

For a detailed comparison of RHEL 10 with its free rebuilds, see our Rocky Linux 10 vs AlmaLinux 10 vs RHEL 10 comparison.

Related Articles

Automation How To Configure GitLab FreeIPA LDAP Authentication CentOS How To Install Go (Golang) on CentOS 8 | RHEL 8 Security Install and Configure AIDE Host-Based IDS on RHEL 10 / Ubuntu 24.04 CentOS Install OpenSSL 3.x from Source on RHEL 10 / Rocky Linux 10 / AlmaLinux 10

Leave a Comment

Press ESC to close