KVM Virtualization on RHEL 10

Set up KVM on RHEL 10 with the new socket-activated libvirt architecture.

Overview

RHEL 10 replaces the single libvirtd daemon with a set of socket-activated services. Each driver (qemu, network, nodedev, nwfilter, secret, storage, interface) now has its own socket with three variants: standard, -ro (read-only), and -admin.

Prerequisites

Install Packages

AMD64 / Intel 64

sudo dnf install qemu-kvm libvirt virt-install virt-viewer

ARM64 / IBM Z

sudo dnf install qemu-kvm libvirt virt-install

Optional

# Web console VM management
sudo dnf install cockpit-machines

# Windows VM virtio drivers
sudo dnf install virtio-win

Start Services

This is the main change from RHEL 9. The libvirtd service no longer exists.
# Start all socket-activated libvirt services
for drv in qemu network nodedev nwfilter secret storage interface; do
  systemctl start virt${drv}d{,-ro,-admin}.socket
done

# Enable on boot
for drv in qemu network nodedev nwfilter secret storage interface; do
  systemctl enable virt${drv}d{,-ro,-admin}.socket
done

Verify

sudo virt-host-validate

All checks should return PASS. If you see a WARN about hardware virtualization, verify your BIOS settings.

User Access

sudo usermod -aG libvirt $USER

Log out and back in for group changes to take effect.

Create Your First VM

sudo virt-install \
  --name my-vm \
  --memory 4096 \
  --vcpus 2 \
  --disk size=20 \
  --cdrom /path/to/install.iso \
  --os-variant rhel10.0 \ 
  --graphics none \
  --console pty,target_type=serial
# List available OS variants
virt-install --osinfo list

Useful Commands

# List all VMs
sudo virsh list --all

# Start / shutdown a VM
sudo virsh start my-vm
sudo virsh shutdown my-vm

# Check a specific service
systemctl status virtqemud.socket

# Console into a running VM
sudo virsh console my-vm

RHEL 10 Virtualization Changes

ChangeDetail
libvirtd daemonReplaced by socket-activated per-driver services
i440fx machine typeDeprecated; use q35 instead
i440fx-rhel7.6Removed entirely
Legacy CPU modelsIntel pre-Nehalem, AMD pre-Opteron G4 removed
RDMA migrationUnsupported
virt-p2vNot available for RHEL 10 hosts
/boot partitionNo longer separate in RHEL 10 disk images