C²S Consulting logo
C²S Consulting | Training | KVM | Ubuntu

KVM on Ubuntu

Diarmuid O'Briain, diarmuid@obriain.com
07-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
  

Copyright © 2024 C²S Consulting