Installing Red Hat Enterprise Linux 9 Made Easy: Full Guide with Pictures

Posts

Red Hat Enterprise Linux 9, often abbreviated as RHEL 9, is a commercial Linux distribution developed by Red Hat, tailored for enterprise environments. It supports multiple architectures including x86-64, ARM64, IBM Z, and Power ISA. It comes in both server and desktop editions and is known for its stability, performance, and enterprise-level features. RHEL 9 is the successor to RHEL 8 and includes several enhancements that align with modern computing needs such as improved container support, updated software stacks, and enhanced system security.

This guide provides a comprehensive step-by-step explanation of how to install RHEL 9 with detailed instructions and screenshots. It is designed for beginners as well as experienced Linux users who want to explore the new features of RHEL 9. Each part of this guide covers essential stages of the installation process in detail.

Overview of RHEL 9 and Its Core Features

RHEL 9 was officially released on May 18, 2022, and is based on Fedora 34 with kernel version 5.14. This version introduces several key improvements over its predecessor. One significant addition is Application Streams, a mechanism that allows users to use different versions of developer tools, databases, and other runtime environments independent of the core operating system. This separation enables more frequent updates to user-space packages without disrupting the system’s stability or security.

RHEL 9 supports the following architectures: AMD or Intel 64-bit (x86_64), 64-bit ARM (aarch64), IBM Power Systems (ppc64le), and IBM Z (s390x). This ensures that enterprises can run RHEL 9 on a wide range of hardware platforms.

In addition to core performance and stability improvements, RHEL 9 introduces several new technologies and default tools. The XFS file system now supports copy-on-write of file extents. The Stratis file system provides advanced volume and file system management with a user-friendly interface. Buildah, Podman, and Skopeo are now part of the default container toolset. The YUM package manager is now based on DNF, providing better performance and dependency resolution. The older NTP service has been replaced by Chrony, which offers improved time synchronization. RHEL 9 also includes Cockpit as the default web-based interface for managing server tasks, and security features have been updated with OpenSSL 3.0 and TLS 1.3 support. The system now uses nftables as a default for firewall management, replacing iptables. PHP has been upgraded to version 8.0.

Minimum System Requirements for RHEL 9

Before installing RHEL 9, it is important to ensure that your hardware meets the minimum system requirements. RHEL 9 requires a minimum of 4 GB of RAM to function efficiently. The installation also requires at least 20 GB of free disk space for the base operating system. The system must support a 64-bit architecture, either x86_64 or ARM64, depending on the edition being installed. While these are the minimum requirements, for a better user experience, especially when installing additional software or using graphical interfaces, it is recommended to have at least 8 GB of RAM and 50 GB of disk space.

Downloading the RHEL 9 ISO File

To begin the installation process, the first step is to download the RHEL 9 ISO image. This file contains all the necessary packages and system files required for installation. Users can obtain the ISO file from the official Red Hat customer portal. To access the download, an active Red Hat subscription is required. If you do not have one, you can register for a free developer subscription or request an evaluation license which grants temporary access to downloads and support.

Once logged in, select the appropriate version of RHEL 9 based on your system architecture and download the ISO file to your local machine. It is advisable to verify the checksum provided on the download page to ensure the integrity of the ISO file.

Creating a Bootable Installation Media

After downloading the RHEL 9 ISO file, the next step is to create a bootable installation medium. This can be a USB flash drive or a DVD. Creating a bootable USB is generally faster and more convenient, especially for modern systems that no longer include optical drives.

To create a bootable USB on Linux, tools like dd or balenaEtcher can be used. On Windows, Rufus is a popular utility that allows users to create bootable media easily. Make sure the USB drive has a minimum of 8 GB of storage and back up any important data from it, as the process will erase all contents on the drive.

Insert the USB into the target system and restart it. Enter the BIOS or UEFI settings by pressing the designated key during startup, which could be F2, F10, DEL, or ESC depending on the system manufacturer. In the BIOS settings, change the boot order to prioritize the USB drive. Save the changes and exit the BIOS. The system will now boot into the RHEL 9 installer from the USB.

Starting the Installation of RHEL 9

Once the system boots from the USB or DVD installation media, you will be presented with the RHEL 9 boot menu. From the available options, select the one labeled Install Red Hat Enterprise Linux 9 and press Enter. This will initiate the graphical installer, also known as Anaconda.

The first screen you see will ask you to choose the language for the installation process. The installer supports a wide range of languages, but it is recommended to use English unless you are more comfortable with another language. After selecting your preferred language, click Continue to proceed.

The next screen is the installation summary page. From here, you can configure various aspects of your RHEL 9 installation. These include the system’s time zone, keyboard layout, software packages, disk partitioning, network settings, and security policies. Each configuration item is represented by a clickable section, and the installer provides a clear status of what needs attention before proceeding with the installation.

Configuring Time Zone, Network, and Hostname

On the installation summary page, you should first set your time zone. Click on the Time & Date option to open the time zone configuration screen. Here you can select your region and city from an interactive map. Once you have selected the appropriate time zone, click Done to return to the main screen.

Next, configure the network settings and hostname. Click on Network & Hostname. The installer will attempt to automatically enable network interfaces and obtain an IP address using DHCP. If you are connected to a router or switch, this process should complete automatically. If no connection is detected, you can manually configure an IP address using the available interface settings.

In the same screen, set the system hostname by entering the desired name in the hostname field. After entering the name, click Apply and then click Done to save your settings.

These steps are essential for ensuring your system can connect to the internet and is properly identified on your network, especially if you plan to manage it remotely or use it in a virtualized environment.

Preparing Disk Partitioning for Installation

The next step is to define how the operating system will use the available disk space. Click on the Installation Destination option from the summary screen. Here you will see a list of all available storage devices. Select the disk you want to use for the installation.

You can choose between automatic and manual partitioning. The automatic option lets the installer create the necessary partitions for you. However, for advanced users or specific use cases, manual partitioning is recommended as it provides complete control over the layout.

For example, you might want to use a Logical Volume Manager (LVM) layout. A typical custom LVM layout might include the following partitions:

A 2 GB partition for /boot
A 20 GB partition for / (root)
A 10 GB partition for /var
A 15 GB partition for /home
A 5 GB partition for /tmp
A 2 GB swap partition

All partitions can be formatted using the XFS file system, which is the default in RHEL 9 and offers high performance and robustness. After creating the required partitions and verifying the layout, click Done to return to the main screen.

Proceeding with Software Selection

In the Software Selection section, you can choose the type of environment you want to install. RHEL 9 offers several predefined environments including Server with GUI, Server (minimal), Workstation, and Custom Operating System. Depending on your use case, you can select the appropriate environment and add optional add-ons such as development tools, container management utilities, or legacy UNIX compatibility.

For a desktop environment, select Server with GUI. For server-based deployments, Server (minimal) is a good choice as it installs only the essential components, allowing for better security and resource optimization. After selecting your desired environment and add-ons, click Done to return to the summary screen.

Once all configurations are marked as complete, the Begin Installation button will become active. Clicking this button will start the actual installation of Red Hat Enterprise Linux 9 onto your system.

Installation Progress and User Configuration

After clicking the Begin Installation button, the installer will start copying files and setting up the system based on the configurations you selected. While the installation is in progress, you will be prompted to set up authentication details for the system. This includes creating a root password and optionally adding a regular user account.

Setting the Root Password

Click on the Root Password section. In the dialog box that opens, enter a strong root password and confirm it in the second field. The root account has full administrative privileges, so it is important to use a secure and memorable password. If the password is too simple, the installer will show a warning, but you will still be allowed to proceed by confirming your intention.

Once done, click Done to return to the main installation screen.

Creating a Regular User Account

While setting the root password is mandatory, creating a regular user is optional but highly recommended. Click on the User Creation section. Enter the user’s full name, a username, and set a password. Optionally, you can check the box that grants administrative privileges to this user, allowing them to use sudo for administrative tasks.

After filling in the necessary fields, click Done to return to the installation progress screen.

Completing Installation and First Boot

Once the installation process is complete, you will see a message indicating that the system is ready. Click Reboot System to restart the computer. Make sure to remove the installation media (USB or DVD) during the reboot to prevent the system from booting into the installer again.

After the reboot, the system will load Red Hat Enterprise Linux 9 for the first time. Depending on the environment you selected (GUI or minimal), you will be greeted with either a graphical login screen or a command-line interface.

Post-Installation Setup and Initial Login

At the login screen, enter the credentials for the user you created during installation. If you installed the GUI version, you will be taken to the desktop environment. The first time you log in, a welcome tour or setup wizard may appear, guiding you through basic configurations such as privacy settings, online account setup, and system updates.

If you chose a minimal installation without GUI, you will be presented with a terminal-based login prompt. Log in using your user credentials or as root to begin configuring your system.

Registering the System with Red Hat

To access official Red Hat repositories and receive updates, the system must be registered with Red Hat Subscription Management. This step is crucial for keeping the system secure and receiving support.

Open a terminal and run the following command:

cpp

CopyEdit

subscription-manager register

You will be prompted to enter your Red Hat Customer Portal username and password. After successful registration, attach a subscription using:

arduino

CopyEdit

subscription-manager attach –auto

This will automatically attach the best-matching subscription available to your system.

If you do not have a paid subscription, you can register under the Red Hat Developer Program, which offers free access for development and testing purposes. Visit the Red Hat Developer website, create an account, and follow the instructions to register your system.

Updating the System

Once the system is registered and a subscription is attached, it is important to update all installed packages to the latest versions. Use the following command:

sql

CopyEdit

dnf update -y

This will fetch and install all available updates, ensuring your system has the latest security patches and software improvements.

After the update completes, reboot the system to apply any necessary changes:

nginx

CopyEdit

reboot

Optional: Installing Additional Software and Tools

Depending on your use case, you may want to install additional software packages. For example, to install development tools, you can use:

nginx

CopyEdit

dnf groupinstall “Development Tools” -y

To install GNOME Tweaks or additional GUI utilities, run:

nginx

CopyEdit

dnf install gnome-tweaks gnome-extensions-app -y

You can also explore available software groups by running:

csharp

CopyEdit

dnf group list

From there, you can choose to install tools specific to your environment, such as web servers, database servers, or virtualization utilities.

Verifying System Details

To confirm that RHEL 9 is installed and running properly, you can check the system version by running:

bash

CopyEdit

cat /etc/redhat-release

Or:

nginx

CopyEdit

hostnamectl

Both commands will display information about the system’s version, architecture, and host configuration.

Post-Installation Configuration and System Management in RHEL 9

Once Red Hat Enterprise Linux 9 is installed and updated, the next critical step is configuring system services, enhancing security, and preparing the environment for production or development use. RHEL 9 offers modern tools and robust defaults, but certain post-installation tasks help ensure your system is secure, manageable, and tailored to your needs.

Understanding and Configuring the RHEL 9 Firewall

RHEL 9 uses firewalld as the default firewall management service. It provides a dynamic interface to manage trusted zones and configure rules without restarting the service.

To check the firewall status, run the following command:

lua

CopyEdit

systemctl status firewalld

If it is not active, start and enable it using:

pgsql

CopyEdit

systemctl start firewalld

systemctl enable firewalld

To verify active zones and open ports, use:

arduino

CopyEdit

firewall-cmd –get-active-zones

To allow a common service like HTTP, use:

csharp

CopyEdit

firewall-cmd –permanent –add-service=http

For custom ports, such as port 8080:

bash

CopyEdit

firewall-cmd –permanent –add-port=8080/tcp

After adding services or ports, reload the firewall for changes to take effect:

css

CopyEdit

firewall-cmd –reload

Managing the firewall properly ensures only trusted traffic can reach your system, reducing the risk of unauthorized access.

Managing SELinux in RHEL 9

Security-Enhanced Linux (SELinux) is a core security feature in RHEL 9 that enforces mandatory access controls. It operates in one of three modes: Enforcing, Permissive, or Disabled. By default, RHEL 9 uses Enforcing mode, which actively blocks unauthorized actions based on security policies.

Check the current SELinux status with:

nginx

CopyEdit

sestatus

To temporarily set SELinux to permissive mode (for troubleshooting):

nginx

CopyEdit

setenforce 0

To re-enable enforcing mode:

nginx

CopyEdit

setenforce 1

To change the mode permanently, edit the configuration file:

arduino

CopyEdit

vi /etc/selinux/config

Update the SELINUX= line to one of the following:

ini

CopyEdit

SELINUX=enforcing

SELINUX=permissive

SELINUX=disabled

After editing, reboot the system for changes to apply. It is strongly recommended to keep SELinux in enforcing mode for production systems, as it significantly enhances security by limiting the scope of service access.

Using Cockpit for Web-Based System Management

Cockpit is a web-based system administration tool included by default in RHEL 9. It allows users to manage servers using a graphical interface via a browser. It is lightweight and ideal for monitoring, service management, log access, and storage configuration.

To enable Cockpit, run:

pgsql

CopyEdit

systemctl enable –now cockpit.socket

Then open your web browser and navigate to:

cpp

CopyEdit

https://<your-server-ip>:9090

Login using your system username and password. If your user has administrative privileges, Cockpit provides full access to system management features. If using the firewall, make sure Cockpit’s port is open:

lua

CopyEdit

firewall-cmd –permanent –add-service=cockpit

firewall-cmd –reload

Cockpit is especially useful for those transitioning from GUI to command-line environments or managing remote servers.

Enabling and Managing Common Services

Based on your use case, you may need to enable services such as SSH, HTTP, NTP, or database servers.

To enable and start the SSH server:

pgsql

CopyEdit

systemctl enable –now sshd

To check the status of a service:

lua

CopyEdit

systemctl status <service-name>

For example, to view the status of the NTP service using Chrony:

lua

CopyEdit

systemctl status chronyd

To ensure time synchronization:

nginx

CopyEdit

chronyc tracking

To install and enable a web server like Apache:

pgsql

CopyEdit

dnf install httpd -y

systemctl enable –now httpd

Properly managing system services ensures availability and stability across reboots, and reduces unnecessary resource usage by disabling unused services.

Creating and Managing User Accounts

In enterprise environments, proper user management is essential. To add a new user:

nginx

CopyEdit

useradd username

passwd username

To add a user to the administrative wheel group for sudo access:

nginx

CopyEdit

usermod -aG wheel username

To verify group membership:

bash

CopyEdit

groups username

To lock a user account:

nginx

CopyEdit

passwd -l username

To remove a user:

nginx

CopyEdit

userdel -r username

Account management should follow the principle of least privilege, granting users only the access they need.

Configuring the Hostname and Networking

To view the current hostname:

nginx

CopyEdit

hostnamectl

To set a new hostname:

cpp

CopyEdit

hostnamectl set-hostname new-hostname

This change takes effect immediately. To persist networking settings such as static IP, DNS, or gateway, use the nmcli tool or configure the appropriate files under /etc/NetworkManager/system-connections/.

To restart network services:

nginx

CopyEdit

nmcli networking off && nmcli networking on

Reliable network configuration is essential for system accessibility and integration into larger environments.

System Reboot and Shutdown Procedures

To reboot the system:

nginx

CopyEdit

reboot

To shut down the system:

nginx

CopyEdit

poweroff

For scheduled shutdowns or reboots:

arduino

CopyEdit

shutdown -r +10 “System reboot in 10 minutes”

Properly shutting down or rebooting ensures that data is safely written and no processes are abruptly terminated.

With these post-installation configurations complete, your RHEL 9 system is now secure, manageable, and ready for production or development workloads. From firewall settings and SELinux policies to Cockpit access and service management, these foundational tasks prepare your system for ongoing operations.

Installing Developer Tools and Common Utilities in RHEL 9

After installing and securing RHEL 9, you may need development packages, compilers, or essential tools to support software building, system diagnostics, or automation. The DNF package manager can install these efficiently.

To install the base developer toolchain, including GCC, GDB, Make, and others, use the following command:

nginx

CopyEdit

dnf groupinstall “Development Tools” -y

In addition to the group installation, certain commonly used utilities may not be installed by default. You can add them as needed:

nginx

CopyEdit

dnf install curl wget nano net-tools git unzip -y

These tools enhance system usability and allow for remote file retrieval, network analysis, code versioning, and archive handling.

For Python developers, install Python 3 and its development headers:

nginx

CopyEdit

dnf install python3 python3-pip python3-devel -y

For Java development, install the OpenJDK runtime and compiler:

nginx

CopyEdit

dnf install java-17-openjdk java-17-openjdk-devel -y

You can verify versions after installation using the –version flag for each tool.

Setting Up SSH Key-Based Authentication

SSH key-based authentication offers a more secure alternative to password-based logins. To begin, generate a key pair on the client machine:

css

CopyEdit

ssh-keygen -t rsa -b 4096

Press Enter through each prompt to accept the defaults unless you wish to use a passphrase. This will generate a public key (id_rsa.pub) and a private key (id_rsa) in the ~/.ssh/ directory.

Copy the public key to the RHEL 9 server using the ssh-copy-id command:

sql

CopyEdit

ssh-copy-id username@your-server-ip

If ssh-copy-id is not available, you can manually append the public key to the server’s ~/.ssh/authorized_keys file. Ensure correct permissions on that file and directory:

bash

CopyEdit

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

Once configured, test the connection:

nginx

CopyEdit

ssh username@your-server-ip

You should now be able to connect without entering a password, provided your private key is accessible. SSH key authentication is especially useful in automated deployments and secure remote access scenarios.

Enabling Remote Desktop on RHEL 9 (Optional GUI Access)

If you installed the Server with GUI or Workstation environment and want to access the desktop remotely, RHEL 9 supports remote desktop via VNC or RDP.

RHEL 9 includes GNOME’s built-in remote desktop service. To enable screen sharing, use the following command:

bash

CopyEdit

gsettings set org.gnome.desktop.remote-desktop.rdp enable true

To allow remote connections, also configure:

sql

CopyEdit

gsettings set org.gnome.desktop.remote-desktop.rdp view-only false

Then set a password for access:

pgsql

CopyEdit

gsettings set org.gnome.desktop.remote-desktop.rdp authentication-methods “[‘password’]”

gsettings set org.gnome.desktop.remote-desktop.rdp password ‘your_password_here’

Make sure the RDP service is running, and open port 3389 in the firewall:

lua

CopyEdit

firewall-cmd –permanent –add-port=3389/tcp

firewall-cmd –reload

You can now connect using any RDP client, such as Remote Desktop Connection on Windows or Remmina on Linux. Enter the IP address of your RHEL 9 system and the credentials of an existing user.

Performance Tuning and Optimization Basics

Optimizing system performance in RHEL 9 depends on your workload. However, several general tips apply to most environments.

First, identify running services and disable those that are unnecessary:

bash

CopyEdit

systemctl list-units –type=service

To disable a service:

pgsql

CopyEdit

systemctl disable service-name

Next, optimize memory and I/O performance by enabling tuned profiles. RHEL 9 includes the tuned daemon, which adjusts system parameters automatically based on profiles.

Start and enable the tuned service:

pgsql

CopyEdit

systemctl enable –now tuned

List available performance profiles:

CopyEdit

tuned-adm list

Apply the profile that suits your workload, such as throughput-performance for general servers or virtual-guest for virtual machines:

CopyEdit

tuned-adm profile throughput-performance

You can verify the active profile:

CopyEdit

tuned-adm active

For systems with SSDs or requiring high-speed logging, ensure I/O schedulers are set appropriately, and review swappiness settings if you notice excessive swapping. These parameters can be adjusted in /etc/sysctl.conf or using the sysctl command.

Setting the System Time Zone and Enabling NTP Sync

Ensure that your system clock is synchronized to prevent issues with certificates, logs, and scheduled tasks. Set the time zone with:

cpp

CopyEdit

timedatectl set-timezone Your/Region

For example:

cpp

CopyEdit

timedatectl set-timezone Asia/Kolkata

To confirm settings and ensure synchronization is active:

lua

CopyEdit

timedatectl status

Chrony is the default NTP client in RHEL 9. Ensure it is enabled and active:

pgsql

CopyEdit

systemctl enable –now chronyd

Use the following command to verify synchronization sources:

nginx

CopyEdit

chronyc sources

Accurate timekeeping is essential in secure and distributed environments, particularly in clusters or when dealing with tokens and certificates.

Creating Scheduled Tasks Using Cron

Automating repetitive tasks helps reduce manual effort and potential errors. Cron is the built-in scheduler in RHEL 9.

To create a scheduled task for a user:

nginx

CopyEdit

crontab -e

This opens the user’s crontab file. Add a line in the format:

pgsql

CopyEdit

* * * * * /path/to/command

The five asterisks represent minute, hour, day, month, and weekday. For example, to run a backup script every day at 2 a.m.:

ruby

CopyEdit

0 2 * * * /usr/local/bin/backup.sh

To view existing tasks:

nginx

CopyEdit

crontab -l

System-wide scheduled tasks can also be placed in /etc/crontab or the /etc/cron.* directories.

Final Thoughts

Red Hat Enterprise Linux 9 offers a stable, secure, and scalable foundation for enterprise workloads, development environments, and server infrastructure. From the initial ISO download to post-installation setup, this guide has walked through every essential step to help you deploy a fully functional RHEL 9 system.

You’ve learned how to install the operating system, configure system settings, secure access with firewall and SELinux, manage users and services, install developer tools, enable remote access, and optimize performance. Whether you are building a development server, hosting applications, or running critical infrastructure, RHEL 9 provides the reliability and support expected in modern IT environments.

With proper configuration and regular maintenance, your RHEL 9 system can run securely and efficiently for years to come. Be sure to keep the system updated, monitor its performance, and follow best practices for security and system administration.

Your journey with RHEL 9 has just begun. Explore advanced topics such as automation with Ansible, containerization with Podman, and enterprise integration with Red Hat Satellite or Insights to unlock the full power of the Red Hat ecosystem.