How to install KVM on Ubuntu 14.04

KVM (Kernel-based Virtual Machine) is a virtualization extension for the Linux Kernel. KVM requires a processor with hardware virtualization support which we will check later in this tutorial. There are many Operating systems that are supported by KVM, which include Linux, BSD, Solaris, Windows and others. It also supports Android 2.2, GNU/Hurd (Debian K16), Minix 3.1.2a, all of these work just with some limitations.

This tutorial explains the installation of KVM on an Ubuntu Desktop 14.04 and how to create a Ubuntu guest VM.

KVM Tools Installation

Before you proceed with the installation you must confirm that your system supports KVM. As mentioned earlier, it requires hardware virtualization support in the CPU. Type in the following command to check the compatibility:

egrep -c '(vmx|svm)' /proc/cpuinfo

If the output is 0, then KVM won't work as the system does not support VMX nor SVM hardware virtualization. If the output is 1 or greater than 1 it means your system is all set and ready to go for KVM installation.

Run the following commands to install KVM:

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

The above command includes installation of 4 packages kvm, libvirt-bin, ubuntu-vm-builder and bridge-utils. You are done with the installation for now. Just make sure your Ubuntu username is addded to the group libvirtd by typing:

sudo adduser `id -un` libvirtd

In the next step, I will install a GUI tool for ubuntu which makes the process of setting up a VM easier.

Installing a graphical user interface for KVM

Install the virt-manager application with apt..

sudo apt-get install virt-manager

Creating a KVM guest machine

From here on, we will be using the GUI to work with as the setup of a VM with the terminal is quite difficult and takes too long for the setup.

After you have installed virt-manager just go ahead and start it by typing:


This should start the virtual manager application for you.

Then start with creating a new virtual machine by hitting the new button.

Enter the name of your virtual machine. Select your installation media type and click forward. After that, select the ISO image file that contains the operating system to be installed in the VM or select the CD/DVD-ROM to start the installation.

After the above step, you will have to set the amount RAM and CPU's that will be available to that virtual machine.

Finally, you will get a confirmation screen that shows the details of your virtual machine where you can select the advanced network options. I will use a NAT network here.


There you go you are done with your Virtual machine with KVM.

Share this page:

Suggested articles

10 Comment(s)

Add comment


By: vcha

Wow, logged in to see if you have a HOWTO for KVM on Ubuntu 14.04 and you posted one today!

What I could really use, though, is instructions on managment from CLI. I rent a dedicated server that I would like to use it with


By: Spam

A few tips:

* ALWAYS manually create a bridge and use that instead of the built-in bridge created by libvirt

* virt-manager can be installed on any Linux workstation on the network. It can manage a VM-host from anywhere in the world, provided ssh access is working.

* Some of the defaults for new machines aren't clear - for most Linux distros, use virtio drivers for networking and disk controllers for the best performance and lower resource use.  TinyCore doesn't know virtio drivers, so treat it like Windows and go with SATA and E1000 drivers.

* If using file local storage for the VM "virtual disks", disable buffering. Also, manually creating empty qcow2 storage before creating the VM provides efficient storage use and very fast performance. qemu-img create -f qcow2 is the start of the command for this.

By: ronH

do you have any instructions of bridging the network.  

By: Gral Permon de la Fukka

* WHY always manually create a bridge? Please ALWAYS explain things with a reason, helps to understand if people do not want to simply obey, but want to understand.


By: vcha

@Spam. Thanks for this tips!


Also, I was getting some permission errors and KVM failed to initalized error. To fix this:

edit /etc/libvirt/qemu.conf change #group = "root" to group = "kvm"

By: Aaron

Thanks for posting this! Really appreciate it.

By: Michael Cooper

Hello, Nice artical, However where did you install virt-manager? On a Desktop client or the server?




By: Michael A Cooper

Here ya go Ron, I am sure you already got your answer but i have done this so many times it's in my memory now.

nano -c /etc/network/interfaces

You should see something like the following:

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address netmask network broadcast gateway dns-nameservers it to the following: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address network netmask broadcast gateway dns-nameservers bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp offThen reboot and your system should be ready to go.I hope this helps.

By: m0d0nne11

Has this (and other) article been scrubbed of all date info? When was this first published? Ever updated? Is this "date scrubbing" behavior normal for this WWW site?

By: Tom

The exact software version that an article is written for is mentioned in the title. This article is for Ubuntu 14.04. Excurse on Ubuntu naming schemes: Ubuntu encodes the date in it's name, so 14.04 means that this article has been written and tested for the Ubuntu version that got released in April (04) in the year 2014 (14). Ubuntu and other Linux vendors do not change the way a software gets configured within one version, so this article works for the named ubuntu version today in the exact same way that it worked in 2014 when it was written and it will work the same way for that Ubuntu version in 10 years. As you can see, it makes much more sense to name the exact software version a guide is written for as it is done here than writing a date, because someone can correct a typo today in an Ubuntu 12.04 guide so it ets an updated date from today and that article would still not work with Ubuntu 16.10. So when you seek for a tutorial, then seek for one that is written for the OS version that you use instead of looking at a updated date which says nothing about compatibility with your OS.