Professional Documents
Culture Documents
last updated February 9, 2018 in Categories Linux KVM, Ubuntu Linux, Virtualization
Kernel-based Virtual Machine (KVM) is a virtualization module for the Linux kernel that turns it into a
hypervisor. How can I install KVM with bridged networking, setup guest operating system as the back-
end virtualization technology for non-graphic Ubuntu Linux 16.04 LTS server?
You can use KVM to run multiple operating systems such as Windows, *BSD, Linux distro using virtual
machines. Each virtual machine has its private disk, graphics card, a network card and more.
The host server located in the remote data center and it is a headless server.
All commands in this tutorial typed over the ssh based session.
In this tutorial, you will learn how to install KVM software on Ubuntu 16.04 LTS server and use KVM to
setup your first guest VM.
$ kvm-ok
$ sudo vi /etc/network/interfaces
Edit/append as follows:
auto br0
iface br0 inet static
address 10.18.44.26
netmask 255.255.255.192
broadcast 10.18.44.63
dns-nameservers 10.0.80.11 10.0.80.12
# set static route for LAN
post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.18.44.1
post-up route add -net 161.26.0.0 netmask 255.255.0.0 gw
10.18.44.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
# br1 setup with static wan IPv4 with ISP router as a default gateway
auto br1
iface br1 inet static
address 208.43.222.51
netmask 255.255.255.248
broadcast 208.43.222.55
gateway 208.43.222.49
bridge_ports eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Save and close the file. Restart the networking service, enter:
$ sudo systemctl restart networking
Verify it:
$ sudo brctl show
I am going to create a CentOS 7.x VM. First, grab CentOS 7.x latest ISO image:
$ cd /var/lib/libvirt/boot/
$ sudo wget https://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-
x86_64-DVD-1708.iso
In this example, I’m creating CentOS 7.x VM with 2GB RAM, 2 CPU core, 2 nics (1 for lan and 1 for
wan) and 40GB disk space, enter:
$ sudo virt-install \
--virt-type=kvm \
--name centos7 \
--ram 2048 \
--vcpus=2 \
--os-variant=centos7.0 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1708.iso \
--network=bridge=br0,model=virtio \
--network=bridge=br1,model=virtio \
--graphics vnc \
--disk
path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml centos7 | grep vnc
<graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'>
You can also use the following command:
$ sudo virsh vncdisplay centos7
Please note down the port value (i.e. 5901). You need to use an SSH client to setup tunnel and a
VNC client to access the remote vnc server. Type the following SSH port forwarding command from
your client/desktop:
$ ssh vivek@server1.cyberciti.biz -L 5901:127.0.0.1:5901
Once you have ssh tunnel established, you can point your VNC client at your own 127.0.0.1
(localhost) address and port 5901 as follows: :
In this example, I’m creating FreeBSD 10 VM with 2GB RAM, 2 CPU core, 2 nics (1 for lan and 1 for
wan) and 40GB disk space, enter:
$ cd /var/lib/libvirt/boot/
$ sudo wget https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-
IMAGES/11.1/FreeBSD-11.1-RELEASE-amd64-disc1.iso
$ sudo virt-install \
--virt-type=kvm \
--name freebsd \
--ram 2048 \
--vcpus=2 \
--os-variant=freebsd11.1 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/FreeBSD-11.1-RELEASE-amd64-disc1.iso \
--network=bridge=br0,model=virtio \
--network=bridge=br1,model=virtio \
--graphics vnc \
--disk
path=/var/lib/libvirt/images/freebsd10.qcow2,size=40,bus=virtio,format=qco
w2
In this example, I’m creating FreeBSD 11 VM with 1GB RAM (expandable to 2GB), 1 vCPU core
(expandable to 2vCPU), 1 nic and 40GB disk space, enter:
$ sudo virt-install \
--virt-type=kvm \
--name freebsd \
--memory=1024,maxmemory=2048 \
--vcpus=1,maxvcpus=2 \
--os-variant=freebsd10.0 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/FreeBSD-11.0-RELEASE-amd64-disc1.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk
path=/var/lib/libvirt/images/freebsd11.qcow2,size=40,bus=virtio,format=qco
w2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml freebsd | grep vnc
<graphics type='vnc' port='5902' autoport='yes' listen='127.0.0.1'>
Please note down the port value (i.e. 5902). You need to use an SSH client to setup tunnel and a
VNC client to access the remote vnc server. Type the following SSH port forwarding command from
your client/desktop:
$ ssh vivek@server1.cyberciti.biz -L 5902:127.0.0.1:5902
Once you have ssh tunnel established, you can point your VNC client at your own 127.0.0.1
(localhost) address and port 5902 to continue with FreeBSD 10.3 installation.
In this example, I’m creating OpenBSD 5.9 VM with 2GB RAM, 2 CPU core, 2 nics (1 for lan and 1
for wan) and 40GB disk space, enter:
$ cd /var/lib/libvirt/boot/
$ sudo wget https://mirror.esc7.net/pub/OpenBSD/6.2/amd64/install62.iso
$ sudo virt-install \
--virt-type=kvm \
--name openbsd \
--ram 2048 \
--vcpus=2 \
--os-variant=openbsd5.8 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/install62.iso \
--network=bridge=br0,model=virtio \
--network=bridge=br1,model=virtio \
--graphics vnc \
--disk
path=/var/lib/libvirt/images/openbsd59.qcow2,size=40,bus=virtio,format=qco
w2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml openbsd | grep vnc
<graphics type='vnc' port='5903' autoport='yes' listen='127.0.0.1'>
Please note down the port value (i.e. 5903). You need to use an SSH client to setup tunnel and a
VNC client to access the remote vnc server. Type the following SSH port forwarding command from
your client/desktop:
$ ssh vivek@server1.cyberciti.biz -L 5903:127.0.0.1:5903
Once you have ssh tunnel established, you can point your VNC client at your own 127.0.0.1
(localhost) address and port 5903 to continue with OpenBSD 5.9 installation.
In this example, I’m creating Debian 8.5 VM with 2GB RAM, 2 CPU core, 2 nics (1 for lan and 1 for
wan) and 40GB disk space, enter:
$ cd /var/lib/libvirt/boot/
$ sudo wget http://mirrors.kernel.org/debian-cd/current/amd64/iso-
dvd/debian-9.3.0-amd64-DVD-1.iso
$ sudo virt-install \
--virt-type=kvm \
--name=debina9 \
--ram=2048 \
--vcpus=2 \
--os-variant=debian8 \
--virt-type=kvm \
--hvm \
--cdrom=/var/lib/libvirt/boot/debian-9.3.0-amd64-DVD-1.iso \
--network=bridge=br0,model=virtio \
--network=bridge=br1,model=virtio \
--graphics vnc \
--disk
path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml debian8 | grep vnc
<graphics type='vnc' port='5904' autoport='yes' listen='127.0.0.1'>
Please note down the port value (i.e. 5904). You need to use an SSH client to setup tunnel and a
VNC client to access the remote vnc server. Type the following SSH port forwarding command from
your client/desktop:
$ ssh vivek@server1.cyberciti.biz -L 5904:127.0.0.1:5904
Once you have ssh tunnel established, you can point your VNC client at your own 127.0.0.1
(localhost) address and port 5904 to continue with Debian Linux 8.5 installation.
Useful commands
Let us see some useful commands.
This entry is 2 of 8 in the Linux KVM Cloud Computing/VM Tutorial series. Keep reading the rest of the
series:
1. How to install KVM on CentOS 7 / RHEL 7 Headless Server
2. How to install KVM on Ubuntu 16.04 LTS Headless Server
3. How to install KVM server on Debian Linux 9 Headless Server
4. Reset root password for Linux KVM VM
5. Clone existing KVM virtual machine images on Linux
6. Reset a KVM clone virtual Machines with virt-sysprep on Linux
7. KVM forward ports to guests VM with UFW on Linux
8. Create VM using the qcow2 image file in KVM