KVM on Ubuntu
Diarmuid O'Briain, diarmuid@obriain.com07-08-2016, version 1.0
Last updated: 07-08-2016 15:51
Check if KVM is supported
If KVM is supported this will return a non-0 value.
$ egrep -c '(vmx|svm)' /proc/cpuinfo 4
Install the KVM elements
Install the required elements.
$ sudo apt-get install bridge-utils $ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder $ sudo apt-get install qemu-utils $ sudo apt-get install virt-manager $ sudo apt-get install libspice-client-gtk-2.0-4 $ sudo apt-get install python-spice-client-gtk $ sudo apt-get install virt-viewer
Add user to the libvirt daemon group
Add the user to the libvirtd group.
$ sudo adduser `id -un` libvirtd $ cat /etc/group | grep libvirtd libvirtd:x:133:dobriain
VM network
Note the bridge virbr0 created by KVM.
$ sudo brctl show [sudo] password for dobriain: bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes
IP network assigned to the bridge.
$ ip addr show dev virbr0 5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever $ sudo brctl show [sudo] password for dobriain: bridge name bridge id STP enabled interfaces virbr0 8000.fe540011fa18 yes vnet0 vnet1
Install a VM
In the Virtual Machine Manager, select:
- File - New Virtual Machine
Under Create a new virtual machine select local install media.
Then define the ISO image or the DVD/CD.
Specify Memory and CPU details for the VM.
Define the size of the disk image.
Give the VM a name and make sure the VM is in the default network.
Accessing the VM's
Power on the VM by clicking on the play button on the Virtual Machine Manager. Use the virt-viewer utility to access VMs. By default the VMs are set to use spice.
$ virt-viewer Ubuntu-Desktop
$ virt-viewer Ubuntu-Server
IP address on KVM Domains
Access the KVM shell.
$ virsh
List the Virtual Machines, called domains in KVM.
virsh # list Id Name State --------------------------------------------- 2 Ubuntu-Server running 3 Ubuntu-Desktop running
Using the virtsh get the IP address of the Virtual Machines.
virsh # domifaddr Ubuntu-Desktop Name MAC address Protocol Address ---------------------------------------------------------------- vnet0 52:54:00:76:be:a3 ipv4 192.168.122.117/24 virsh # domifaddr Ubuntu-Server Name MAC address Protocol Address ---------------------------------------------------------------- vnet1 52:54:00:11:fa:18 ipv4 192.168.122.125/24
Confirm IP addresses directly on domain.
ubuntu@Ubuntu-Desktop:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:76:be:a3 brd ff:ff:ff:ff:ff:ff inet 192.168.122.117/24 brd 192.168.122.255 scope global dynamic ens3 valid_lft 3305sec preferred_lft 3305sec inet6 fe80::830a:1a58:b3b9:a1da/64 scope link valid_lft forever preferred_lft forever ubuntu@UbuntuServer:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:11:fa:18 brd ff:ff:ff:ff:ff:ff inet 192.168.122.125/24 brd 192.168.122.255 scope global ens3 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe11:fa18/64 scope link valid_lft forever preferred_lft forever