I recently bought and setup a Asrock DeskMini with a i5 6400 (will take any desktop S1151 65W CPU), 16GB RAM and an SSDs to act as a KVM/ QEMU host at home. At some point I’ll share the end-to-end setup, but for now suffice to say I am really happy with this very flexible and tiny box of computing power!
I did however want to share some useful VM setup and management commands I have been using, some useful background information:
- Host O/S Ubuntu Server 16.10 – with “Virtual Machine host” option select at install time.
- Network configuration as below
apt-get install -y bridge-utils
cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto br0
iface br0 inet static
address 192.168.1.240
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameserver 192.168.1.1
bridge_ports enp0s31f6
bridge_stp off
bridge_fd 0
sdb
├─sdb4 /var/kvm/images
├─sdb2 [SWAP]
├─sdb3 part /
└─sdb1 part /boot/efi
Install virtinst:
apt-get install virtinst
Create directories to store vhd files and iso files used for installing VMs
mkdir -p /var/kvm/images/vm
mkdir -p /var/kvm/images/iso
Creating New Virtual Machines
Ubuntu Server 16.04 LTS (from an ISO)
First download Ubuntu server 16.04 LTS ISO:
cd /var/kvm/images/iso
wget http://releases.ubuntu.com/16.04.1/ubuntu-16.04.1-server-amd64.iso
Create the virtual machine – requires the use of sudo – this machine will have 4 vCPUs, 4GB RAM and a 32GB vhd.
virt-install \
--virt-type=kvm \
--hvm \
--name vlinux1 \
--ram 4096 \
--disk path=/var/kvm/images/vm/vlinux1.qcow2,size=32,bus=virtio,format=qcow2 \
--vcpus=4 \
--os-type linux \
--os-variant ubuntu16.04 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--console pty,target_type=serial \
--cdrom /var/kvm/images/iso/ubuntu-16.04.1-server-amd64.iso
Complete the installation using TightVNC (or another VNC client) to connect via <kvmhostip>:59000
Once completed, the virtual machine will shutdown. Once shutdown the VNC graphics will no longer function, even when you restart the mahcine.
You can configure persistent VNC-based graphics by modifying the XML file associated with the virtual machine – stored under /etc/libvirt/qemu/
vi /etc/libvirt/qemu/vlinux1.xml
# Now remove all lines relating to <graphics> and replace with single line as below:
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
When you start the machine, you’ll be able to reconnect via VNC. The port number automatically increments for every VM configured like this – based on the order in which the machines start up/ are started up.
Managing Virtual Machines
Use virsh to manage and configure VMs – examples below – all require the use of sudo.
# List powered-on / running virtual machines
virsh list --all
# Start / power-on virtual machine "vlinux1"
virsh start vlinux1
# Reset virtual machine "vlinux1"
virsh reset vlinux1
# Hard power-off virtual machine "vlinux1"
virsh destory vlinux1
# Shutdown virtual machine "vlinux1"
virsh shutdown vlinux1
# Remove from inventory virtual machine "vlinux1"
virsh undefine vlinux1
# Set power-on at host start-up for virtual machine "vlinux1"
virsh autostart vlinux1
# Display VM information for virtual machine "vlinux1"
virsh dominfo vlinux1