How to Install KVM on RHEL 8 / CentOS 8

KVM is a powerful hypervisor that’s tightly integrated into Linux systems. It requires minimal resources, and it’s free to use. As an added bonus, Red Hat is one of the primary developers behind KVM, so you can expect it to work well on RHEL 8 / CentOS 8.

In this tutorial you will learn:

  • How to Set Up a Network Bridge
  • How to Install KVM
  • How to Start KVM
  • How to Create a VM
  • How to Configure VNC

Install KVM on RHEL 8 / CentOS 8

Install KVM on RHEL 8 / CentOS 8.

Software Requirements and Conventions Used

Software Requirements and Linux Command Line Conventions
Category Requirements, Conventions or Software Version Used
System RHEL 8 / CentOS 8
Software KVM, VNC
Other Privileged access to your Linux system as root or via the sudo command.
Conventions # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command
$ – requires given linux commands to be executed as a regular non-privileged user

How to Set Up a Network Bridge

You can absolutely set up KVM without a network bridge, but bridging allows you virtual machines to function like independent physical machines on your network. That alone makes one worth setting up.

Begin by creating a file at /etc/sysconfig/network-scripts/ifcfg-br0. This file will contain everything that you’ll need for your bridge configuration.

Next, open the file, and place the following configuration in the file. Obviously, modify it as you need to fit your network.


Next, you’re going to need to create a configuration for the interface that you want to bridge.

Create a new file at /etc/sysconfig/network-scripts/ifcfg-eth0. Change eth0 to the name of your actual interface. Chances are, there’s already something there. Modify that or delete it and place the following configuration in the file. Remember to change it to reflect you system’s interface.


The regular interface is configured to use the bridge interface to connect with a static IP address. If you have multiple interfaces to bridge, you can use the same configuration with each one, changing the device and hardware address, to bridge them too.

When you’re ready, you can restart the system for the bridge to take effect. RHEL 8 uses NetworkManager and only NetworkManager. Restarting it independently doesn’t always work.

How to Install KVM

You’re ready to install KVM now. There are a series of packages that you need, so install all packages with DNF.

# dnf install qemu-kvm qemu-img libvirt virt-install libvirt-client

Make sure that the KVM module is loaded now.

# lsmod | grep kvm

As long as you see the KVM modules, you’ll be good to go.

How to Start KVM

You’ll need to start the libvirtd service in order actually create any virtual machines. Start and enable the service.

# systemctl start libvirtd
# systemctl enable libvirtd

How to Create a VM

Now, you can start creating virtual machines to work with. Before you start, you should probably have a Linux install ISO somewhere to work with.

If you’re doing this on a workstation, you can install virt-manager, and use the graphical tools to get set up easily. That’s probably not the case, though, so you’ll be working with the shell and VNC.

There are plenty of options you can use when setting up your VMs. The command below is a good template that includes virtual CPU cores, memory, hard drive space, and some OS specific configuration.

# virt-install \
--virt-type=kvm \
--name Fedora29 \
--ram 4096 \
--vcpus=4 \
--os-variant=fedora29 \
--cdrom=/path/to/install.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/fedora29.qcow2,size=20,bus=virtio,format=qcow2
Start a KVM VM on RHEL 8

Start a KVM VM on RHEL 8.

You should see something like the image above, letting you know that your VM is running and waiting for you to finish the installation. That part you can do over VNC.

How to Connect With VNC

Start by taking a look at which port your VM is using for VNC. You can do this easily by opening another terminal and running the following command.

# virsh dumpxml Fedora29 | grep vnc

Use the name that you assigned to your VM. Take note of the port number associated with the VM.

In order to access your VM from another computer, you’re going to need to tunnel the port running your VM over SSH. It’s not as complex as it sounds. From your client computer, run the following command, substituting the IP and port number from the server

$ ssh user@ -L 5901:
Install a KVM VM Over VNC on RHEL 8

Install a KVM VM Over VNC on RHEL 8.

Now, on your client machine or workstation, open up your VNC client. Enter the localhost IP,, and the VNC port, 5901 in this case. As soon as you connect, you’ll be able to see your VM’s installer in the VNC client window. Finish the installation process of your VM. You’ll be able to get back any time by starting the VM with virsh and connecting over VNC.


You’re now set up and ready to use KVM to create and configure as many VMs as your system will support. VNC will be your gateway for graphical machines, but you can avoid it entirely on servers,following the initial install.