KVM Installation

KVM (Kernel-based Virtual Machine) is the Linux kernel's built-in hypervisor. It turns Linux into a Type-1 hypervisor, allowing you to run multiple isolated virtual machines on a single physical host. Combined with QEMU (which provides hardware emulation) and libvirt (a management API), KVM gives you full virtualization comparable to VMware ESXi or Hyper-V at zero licensing cost. Ubuntu uses this stack for its own cloud infrastructure.

What is KVM?

KVM virtualization stack:
  Physical Hardware (CPU with VT-x/AMD-V extensions)
       |
  Linux Kernel + KVM module (hardware virtualization support)
       |
  QEMU (hardware emulation: virtual disks, NICs, etc.)
       |
  libvirt (management API and daemon)
       |
  virsh (CLI) / virt-manager (GUI) / Cockpit (web UI)

Hardware requirements

# Verify CPU supports hardware virtualization:
grep -c -E "vmx|svm" /proc/cpuinfo    # > 0 means virtualization supported

# vmx = Intel VT-x
# svm = AMD-V

# Check if KVM module is loaded:
lsmod | grep kvm

Expected output on capable hardware

kvm_intel    331776  0      ← Intel VT-x (OR kvm_amd for AMD)
kvm          987136  1 kvm_intel

Installing KVM

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

# Add your user to the libvirt group (to manage VMs without sudo):
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
newgrp libvirt    # Apply group change in current session

# Enable and start libvirtd:
sudo systemctl enable --now libvirtd

# Verify installation:
virsh list --all    # Should show empty list (no VMs yet)

Creating your first VM

# Create a VM using virt-install:
sudo virt-install   --name ubuntu-test   --ram 2048   --vcpus 2   --disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=20   --os-variant ubuntu22.04   --network network=default   --graphics none   --console pty,target_type=serial   --location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/'   --extra-args 'console=ttyS0,115200n8 serial'
# Or with an ISO file:
sudo virt-install   --name ubuntu-test   --ram 2048 --vcpus 2   --disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=20   --cdrom /home/irfan/ubuntu-22.04-server.iso   --network network=default

Conclusion

After installing the KVM stack, run virsh list --all to verify libvirtd is working correctly. The default NAT network (network=default) provides outbound internet access for VMs without additional configuration. For VMs that need to be reachable from the local network, you need a bridged network (covered in the libvirt-basics article). KVM VMs live in /var/lib/libvirt/images/ as QCOW2 disk images.

FAQ

Is KVM Installation important for Ubuntu administrators?+

Yes. It supports practical Ubuntu administration because it connects directly to server reliability, security, troubleshooting, or daily operations.

Should I practice this on a live server?+

Use a lab VM first. After you understand the command output and rollback path, apply the workflow carefully on real systems.

What should I do after reading this article?+

Run the practice commands, write down what each one shows, and continue to the next article in the Ubuntu roadmap.

Need help with Ubuntu administration?

Work directly with Muhammad Irfan Aslam for Ubuntu Server, Linux, cloud, Docker, DevOps, CI/CD, or infrastructure troubleshooting support.

Hire Me for Support