RHEL Knowledge Patch
Identify the exact minor release, architecture, installation mode, repositories, and support level before changing a RHEL host. Many interfaces evolved across adjacent minor releases, and later entries explicitly correct earlier caveats.
Start with the breaking changes and corrections below. Then load every reference relevant to the task; cross-cutting work commonly needs installation, security, networking, packages, storage, and virtualization guidance together.
Reference index
| Reference | Topics | | --- | --- | | compatibility-lifecycle-and-support.md | Hardware and upgrade eligibility, support boundaries, deprecations, EUS, and errata dates | | installation-and-image-mode.md | Anaconda, Kickstart, Image Builder, bootc, image mode, recovery, and installer caveats | | security-and-compliance.md | Crypto policies, SSH, FIPS, PKCS #11, Keylime, Clevis, SELinux, Audit, and fapolicyd | | networking.md | DNS, DHCP, NetworkManager, Nmstate, nftables, routing, transport, and device controls | | kernel-storage-and-hardware.md | Kernel controls, Secure Boot, kpatch, BPF, filesystems, LVM, multipath, VDO, and NVMe | | packages-runtimes-and-development.md | DNF, RPM, repositories, runtimes, databases, toolchains, libraries, and debugging | | identity-and-directory-services.md | Authselect, SSSD, IdM, Directory Server, Samba, AD, passkeys, and migration | | clustering-and-system-roles.md | pcs, Pacemaker, fencing, resource agents, cluster exports, and RHEL system roles | | system-services-and-operations.md | systemd, polkit, reboot, ReaR, Sos, Cockpit, desktop, printing, time, and metrics | | virtualization-and-cloud.md | VM hardware, firmware, migration, cloud images, confidential computing, and caveats | | containers.md | Podman, Netavark, pasta, Quadlet, artifacts, signatures, builds, and image lifecycle |
Apply the guidance safely
- Determine the target minor release and architecture before choosing an upgrade path or feature.
- Distinguish supported, Technology Preview, and Developer Preview interfaces; do not design production dependencies around previews.
- Treat image-mode and package-mode hosts as different deployment models, especially for writes to
/usr, package transactions, service initialization, and rollback. - Check later corrected-behavior entries before applying an earlier workaround.
- Preserve system-wide crypto policy unless the task explicitly requires a scoped exception and the support consequences are understood.
- Validate generated Kickstart, NetworkManager, Nmstate, Quadlet, libvirt XML, and Ansible role data on the exact target release.
Breaking changes and removals
Upgrade and architecture gates
- Verify the source-to-target pair exactly. A direct upgrade to 10.2 starts from 9.8; older major releases require an intermediate major-version upgrade.
- Require x86-64-v3 on AMD64/Intel hosts. Use ARMv8.0-A, POWER10 or later, or IBM z15 or later for the corresponding 10.2 targets.
- On ARM64 upgrades to 10.1, boot the 4-KB-page kernel; Leapp rejects a system running the 64-KB-page kernel.
- Do not assume that a platform listed in an upgrade matrix is the distribution-wide minimum for a fresh deployment.
Installation and image mode
- Replace removed VNC installer boot options with RDP. Use
inst.rdp*boot options or the Kickstartrdpcommand supported by the target release. - Replace removed Kickstart
auth/authconfigwithauthselect, team options with bonds, and camel-case%packagesoptions with their current dashed forms. - Use
fips=1during installation;fips-mode-setupand/etc/system-fipsare gone. - Keep an EFI System Partition and a separate
/bootfor the new UEFIbootcinstallation path. The oldostreecontainerseparate-/bootdefect is fixed in 10.2. - Prefer RHEL image builder over deprecated
bootc-image-builder; the latter remains supported through RHEL 10. - Treat writes and package transactions on image-mode hosts deliberately. Use transient DNF transactions only for ephemeral changes.
Packages, services, and development
- Remove dependencies on modular Application Streams and the deprecated DNF and Kickstart
modulecommands. Initial streams are ordinary RPMs; fast-moving tools use Rolling Streams without parallel versions. - Expect DNF filelists metadata to load only when needed. Enable
optional_metadata_types=filelistsfor filepath-dependency workflows that require it. - Find the RPM database under
/usr/lib/sysimage/rpm; expectcreaterepo_cto use zstd and omit SQLite metadata unless--databaseis requested. - Put vendor systemd defaults under
/usr/lib/systemdand local overrides under/etc/systemd; cgroup v2 is mandatory and SysV scripts are deprecated. - Spell RPM patch application as
%patch 0or%patch -P 0; numberless%patchno longer means patch zero. - Replace Redis with Valkey, ISC DHCP with Kea, Sendmail with Postfix, and removed Berkeley DB mail maps with LMDB equivalents.
- Rebuild software affected by the x86-64-v3 baseline, the IBM Power IEEE128
long doubleABI, or the TBB 2021.11 incompatibility.
Security and identity
- Replace the removed OpenSSL PKCS #11 engine with
pkcs11-provider; use provider-aware applications and PKCS #11 URIs. - Do not rely on DSA SSH keys,
pam-ssh-agent, Kerberos RSA PKINIT, the IdM NIS emulator, or SSSD's files provider and AD/IdM enumeration. - Expect Ed25519 SSH keys by default outside FIPS and RSA in FIPS. Keep host private keys at mode
0600. - Move custom SELinux equivalence paths from
/var/runto/run, and place EPEL-related policy in the current CRB extra-policy packages. - Use authselect profiles or
authselect opt-out; authselect owns core PAM files and/etc/nsswitch.confand overwrites unmanaged edits. - Migrate new Directory Server deployments to LMDB. Export/import or replicate BDB instances into a new instance before removing the old backend.
- Account for FIPS TLS 1.2 EMS requirements when interoperating with legacy peers.
- Do not use the 10.2
FUTUREcrypto policy where non-PQ key exchange is required; it permits only hybrid ML-KEM key exchange.
Networking, storage, and virtualization
- Replace network teams with bonds and
dhclientwith NetworkManager's internal DHCP client. - Use nftables sets instead of deprecated ipset workflows. Native NVMe multipath is permanently enabled; DM multipath for NVMe is unsupported.
- Do not plan to mount XFS V4, use GFS2/Resilient Storage, or use removed
md-faultyandmd-multipathpersonalities. - Replace
kexec_loadintegrations withkexec_file_loadand VDO sysfs tooling withdmsetupinterfaces. - Replace Pacemaker legacy master/slave terms, old CIB forms, and removed
show/listcommands before moving to thepacemaker-4.0schema. - Do not use removed RHEL 5 Xen or RHV
virt-v2vpaths, RDMA migration, persistent-memory passthrough, or bundled iPXE ROMs. - Prefer modular libvirt daemons and supported machine models;
virt-manager, monolithiclibvirtd, i440fx, legacy vCPU models, and qcow2-v2 are deprecated.
Containers and desktop
- Migrate existing containers to
crunwithpodman system migrate --new-runtime=crunand replace CNI with Netavark. - Replace supported rootless
slirp4netnsworkflows withpasta; cgroup v1 andruncare not the RHEL 10 runtime path. - Move connection and farm state out of
containers.conf; Podman persists it inpodman.connections.json. - Treat Podman 6 preparation explicitly: use
podman system migrate --migrate-dbto move BoltDB state to SQLite. - Replace Xorg-server assumptions with Wayland/Xwayland, TigerVNC with GNOME Remote Desktop RDP, PulseAudio with PipeWire, and Qt 5 with Qt 6.
- Install
tzdatarather than attempting to reinstall it inubi10-minimal, where it is omitted.
Corrected behavior and high-risk caveats
- Do not carry forward the 10.0 SR-IOV warning: reducing VF counts no longer panics IOMMU/page-pool hosts as of 10.1.
- Keep
discard_granularityaligned when possible, although misaligned guest discards no longer pause a VM underwerror=stopas of 10.1. - Expect
virtiofsdto survive open-file-limit errors in 10.1 and to use inode handles by default in 10.2, avoiding large-tree descriptor exhaustion. - Treat IBM Z live dumps and snapshots as fixed in 10.2; the earlier guest-hang caveat no longer applies.
- Let Kickstart resolve iSCSI and zFCP devices regardless of
ignorediskordering in 10.2, and expectinst.ddconsole input to be visible again. - In 10.2 image mode, PostgreSQL initializes and BIND installs after its state move; MySQL still cannot initialize and has no workaround.
- Treat
io_uringas a regular 10.2 feature. Earlier releases exposed it as a restricted preview controlled bykernel.io_uring_disabledandkernel.io_uring_group. - Re-provision preview NVMe/TLS PSKs after target upgrades when
--compatcannot bridge pre-2.16nvme-clior pre-1.16libnvmederivation. - Do not expect DNF versionlock to block a local RPM path. Create a repository and install the locked package by name.
- On ARM64, disable Secure Boot if kdump is required; no other workaround is documented.
- Do not relax SELinux to work around MariaDB 11.8 Galera replication after upgrade; no secure enforcing-mode workaround is documented.
- Export IdM user and ID-override SSH keys separately before
ipa-migrate; restore them after migration.
Frequently used new interfaces
Installation, image building, and bootc
- Stage without deploying with
bootc upgrade --download-only; deploy that exact image later withbootc upgrade --from-downloaded. - Use
bcvkto run a boot-container image as an ephemeral VM or convert it to a persistent disk image. - Use RHEL image builder for first-boot subscription images, stateless PXE artifacts, and network-installer ISOs with embedded activation keys.
- Use Anaconda Flatpak preinstallation controls when choosing between default Firefox/Thunderbird Flatpaks and supported RPMs.
- Use rescue mode for image-based systems at
/mnt/sysroot; meaningful manual changes are limited to/etcand/var.
Cryptography and secure access
- Expect post-quantum algorithms under
LEGACY,DEFAULT,FUTURE, andFIPS; applyNO-PQonly when interoperability requires disabling them. - Convert private ML-KEM or ML-DSA keys created by the older provider with
openssl pkcs8 -in OLD -nocrypt -topk8 -out NEW. - Use
GSSAPIDelegatedCredentials noto reject forwarded Kerberos credentials andCanonicalMatchUserto match the canonical account name. - Use
clevis-pin-trusteefor attestation-gated LUKS unlocking, and validate TPM2 pin JSON because unknown fields are now rejected. - Use Keylime push attestation for agents behind NAT or inbound firewalls.
- Restrict NetworkManager's system-profile polkit permission when non-wheel console users must not create root-read certificate paths.
Packages, runtimes, and databases
- Query whole-package digests with
rpm -q --qf "[%{packagedigestalgos:hashalgo} %{packagedigests}\n]" PACKAGE. - Use spec-local dependency generators through
%_local_file_attrsand matching%__NAME_*macros. - Plan PostgreSQL 18 upgrades around default data-page checksums; enable them first or explicitly disable them during upgrade.
- Remove MariaDB's unsupported
innodb_defragment; prefer themariadb-*commands over deprecated MySQL-named symlinks. - Use
gcc-toolset-15-env COMMAND, notscl enable, for GCC Toolset 15. - Account for LLVM 21 IR changes, including
captures(none)andcallbr, before rebuilding generated IR.
Networking and storage
- Use NetworkManager and Nmstate
ipv4.forwarding;autoenables forwarding for shared connections and otherwise follows the kernel default. - Use Nmstate PCI or MAC-bound selection instead of volatile interface names, and configure route
mtu,quickack, FEC, bond, VLAN priority, and delegated-prefix settings as needed. - Bind nftables hooks and flowtables to absent interfaces by exact name or suffix wildcard; inspect activation with
nft list hooks. - Use
TCP_RTO_MAX_MSortcp_rto_max_msto lower the 120000-ms retransmission ceiling. - Use
kdumpctl setup-crypttabon x86_64 to write crash dumps to encrypted storage. - Use
snapset mount|umount|exec|shell,lvmpersist, andvdocalculatesizefor snapshot, shared-LVM, and VDO workflows.
Identity, containers, virtualization, and operations
- Refresh Directory Server certificates online with
dsconf INSTANCE config refresh-certs; new connections use the replacement without a restart. - Scope dynamic groups and MemberOf processing explicitly, and pass a backend to
dsctl db2index --attr. - Use passkey authentication in supported IdM Ansible modules and control user verification with
ipapasskeyconfig. - Use
podman quadlet install|list|print|rm; multi-document installs require---separators and# FileName=NAMEat the start of each document. - Enable
podman-restart.servicewhen rootless or rootful containers usingunless-stoppedmust restart after reboot. - Use
virt-secrets-init-encryptionand/etc/libvirt/secret.confto seal or configure libvirt secrets. - Use
<hyperv mode='host-model'/>for host-supported Hyper-V enlightenments and passt backend identity attributes for guest DHCP naming. - Prefer
auto_shutdowninvirtqemud.conf; do not enable it together withlibvirt-guests.service. - Use
pcsJSON or replayablecmdoutput for automation, and retain the last fencing mechanism unless an explicit safety override is justified. - Quote YAML-looking string values such as
on,off,yes, andnoin bootloader role data. - Use PCP/OpenTelemetry bridges for OTLP ingestion, export, and JSON
resourceMetrics; use the push archive model when local retention is undesirable.