RHEL 9 — credentials, CDN, and what to expect
Installing RHEL 9 with kldload works differently from CentOS, Debian, or Rocky. RHEL is a subscription product — packages come from Red Hat's CDN, not the baked-in darksite. This means you need internet access and valid Red Hat credentials before starting the install.
RHEL installs require internet. The darksite is used for CentOS, Debian, and Rocky. For RHEL, the installer registers the system with subscription-manager, obtains entitlement certificates, and pulls packages live from cdn.redhat.com. Budget 20–45 minutes depending on your connection speed and profile selection.
What you need before starting
- A Red Hat account at access.redhat.com
- An active RHEL subscription (developer subscriptions are free — up to 16 systems)
- Either: your Red Hat username and password, or an activation key + organization ID
- Internet access from the machine you're installing on
A free Red Hat Developer Subscription covers up to 16 physical or virtual machines and includes access to all RHEL 9 repos including AppStream, BaseOS, and extras. Sign up at developers.redhat.com/register.
Two authentication methods
Method 1 — Username and password
The simplest option. Enter your Red Hat login directly in the web UI. The installer runs:
subscription-manager register --username=you@example.com --password=yourpassword
subscription-manager attach --auto
Your credentials are used once during install and are not stored on the installed system. The system is left with entitlement certificates only.
Method 2 — Activation key
The preferred method for automation and unattended installs. Activation keys are created in the Red Hat Hybrid Cloud Console under Inventory > Activation Keys. You'll need both the key name and your organization ID.
subscription-manager register \
--activationkey=my-key-name \
--org=1234567
To find your org ID:
# Log in and check
subscription-manager identity 2>/dev/null | grep "org ID"
# Or check the portal: access.redhat.com -> Subscriptions -> Organization
Entering credentials in the web UI
Open the kldload web UI at http://<live-ip>:8080. Select RHEL 9 as your target distro. The credential section will expand with two tabs: Username / Password and Activation Key. Fill in the appropriate fields and proceed to disk selection and profile choice as normal.
For unattended installs via answers file, set these variables:
# Method 1 — username/password
RHEL_USERNAME=you@example.com
RHEL_PASSWORD=yourpassword
# Method 2 — activation key
RHEL_ACTIVATION_KEY=my-key-name
RHEL_ORG_ID=1234567
See Unattended Install for the full answers file format.
What happens during install
The RHEL install sequence differs from other distros. Here's what the installer does, in order:
- Partition and format. Same as other distros — ZFS pool created, datasets laid out.
- Bootstrap minimal RHEL. A minimal set of packages is installed into the chroot using
dnf --installrootagainst the CDN. This requires auth and internet. - Register the system.
subscription-manager registeris run inside the chroot to register the new system and attach a subscription. - Configure repos. Entitlement certificates are written to
/etc/pki/entitlement/. The BaseOS and AppStream repos are enabled and verified. - Install full package set. All profile packages are installed from the CDN. For the desktop profile this is the largest step — GNOME and all desktop packages pull from cdn.redhat.com.
- Build ZFS DKMS. ZFS kernel modules are compiled for the installed RHEL kernel.
- Install kldload tools. kst, ksnap, kbe, kpkg, etc. are copied from the ISO (they're distro-agnostic shell scripts).
- Configure bootloader. ZFSBootMenu is installed into the EFI partition.
The CDN steps (2, 5) are the slow parts. On a fast connection, expect 15–20 minutes. On a slow connection, 45 minutes is realistic for the desktop profile.
Post-install verification
After the system boots for the first time, verify the subscription is active:
# Check subscription identity
subscription-manager identity
# List active subscriptions
subscription-manager list --consumed
# Check which repos are enabled
dnf repolist
# Expected repos for RHEL 9:
# rhel-9-for-x86_64-baseos-rpms
# rhel-9-for-x86_64-appstream-rpms
# Verify os-release
cat /etc/os-release | grep -E "^(NAME|VERSION_ID|ID)="
# NAME="Red Hat Enterprise Linux"
# VERSION_ID="9.x"
# ID="rhel"
Known issues
NVIDIA CUDA repo URL
The NVIDIA CUDA repository URL differs between RHEL and CentOS. If you've added the CUDA repo for CentOS and then installed RHEL, the repo URL will point to the wrong base. Fix it manually:
# Check current CUDA repo file
cat /etc/yum.repos.d/cuda.repo | grep baseurl
# The RHEL 9 correct URL format is:
# https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/
# Edit to correct URL
vi /etc/yum.repos.d/cuda.repo
# Change the baseurl to use rhel9 instead of centos9 or stream9
# Clean cache and verify
dnf clean all
dnf repolist
Subscription expires or needs renewing
# Refresh subscription data
subscription-manager refresh
# Re-attach if detached
subscription-manager attach --auto
# Check expiry dates
subscription-manager list --consumed | grep -E "(Subscription|Ends)"
System registered but repos return 403
This happens when the subscription is attached but the repo entitlement certs are stale. Fix:
subscription-manager refresh
dnf clean all
dnf repolist