How to install KVM on Ubuntu 16.04 LTS Headless Server
in Categories Linux KVM,Ubuntu Linux,Virtualization last updated February 9,2018
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.
Steps for installing KVM on Ubuntu Linux 16.04 LTS server
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.
You need a vnc client to install the guest operating system.
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.
Steps to install KVM on Ubuntu Linux 16.04 LTS headless sever
Step 1: Install kvm
Type the following apt-get command/apt command:
$ sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker
Step 2: Verify kvm installation
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Step 3: Configure bridged networking
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
Step 4: Create your first virtual machine
I am going to create a CentOS 7.x VM. First,grab CentOS 7.x latest ISO image:
CREATE CENTOS 7 VM
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
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:
Fig.0 : VNC client to complete CentOS 7.x installation
Fig.01 : VNC client to complete CentOS 7.x installation
You should see CentOS Linux 7 guest installation screen as follows:
Fig.02: CentOS 7.x installation on KVM based VM
Fig.02: CentOS 7.x installation on KVM based VM
Now jist follow on screen instructions and install CentOS 7. Once installed,go ahead and click reboot button. The remote server closed the connection to our VNC client. You can reconnect via KVM client to configure the rest of the server including SSH based session or firewall.
CREATE FREEBSD 10.X OR 11.X VM
In this example,I’m creating FreeBSD 10 VM with 2GB RAM,enter:
$ 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 \
–graphics vnc \
–disk path=/var/lib/libvirt/images/freebsd10.qcow2,format=qcow2
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,format=qcow2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml freebsd | grep vnc
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.
CREATE OPENBSD 5.9 VM
In this example,I’m creating OpenBSD 5.9 VM with 2GB RAM,enter:
$ 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 \
–graphics vnc \
–disk path=/var/lib/libvirt/images/openbsd59.qcow2,format=qcow2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml openbsd | grep vnc
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.
CREATE DEBIAN 9.X VM
In this example,I’m creating Debian 8.5 VM with 2GB RAM,enter:
$ 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 \
–graphics vnc \
–disk path=/var/lib/libvirt/images/debian8.qcow2,format=qcow2
To configure vnc login from another terminal over ssh and type:
$ sudo virsh dumpxml debian8 | grep vnc
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.
Find the list of the accepted OS variants
$ osinfo-query os | grep freebsd
List a running vms/domains
$ sudo virsh list
Shutodwn a vm/domain called openbsd
$ sudo virsh shutdown openbsd
Start a vm/domain called openbsd
$ sudo virsh start openbsd
Suspend a vm/domain called openbsd
$ sudo virsh suspend openbsd
Reboot (soft & safe reboot) a vm/domain called openbsd
$ sudo virsh reboot openbsd
Reset (hard reset/not safe) a vm/domain called openbsd
$ sudo virsh reset openbsd
Delete/remove a vm/domain called openbsd
To see a complete list of virsh command type
This entry is 2 of 4 in the Linux KVM Cloud Computing/VM Tutorial series. Keep reading the rest of the series:
How to install KVM on CentOS 7 / RHEL 7 Headless Server
How to install KVM on Ubuntu 16.04 LTS Headless Server
How to install KVM server on Debian Linux 9 Headless Server
How to reset root password for Linux KVM VM
Posted by: Vivek Gite
The author is the creator of nixCraft and a seasoned sysadmin,DevOps engineer,and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin,Linux/Unix and open source topics via RSS/XML Feed or weekly email newsletter.
GOT FeedBACK? CLICK HERE TO JOIN THE DISCUSSION# 欢迎使用Markdown编辑器写博客
本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:
快捷键
- 加粗
Ctrl + B
- 斜体
Ctrl + I
- 引用
Ctrl + Q
- 插入链接
Ctrl + L
- 插入代码
Ctrl + K
- 插入图片
Ctrl + G
- 提升标题
Ctrl + H
- 有序列表
Ctrl + O
- 无序列表
Ctrl + U
- 横线
Ctrl + R
- 撤销
Ctrl + Z
- 重做
Ctrl + Y
Markdown及扩展
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra, 扩展了很多好用的功能。具体请参考Github.
表格
Markdown Extra 表格语法:
项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
可以使用冒号来定义对齐方式:
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义列表
- Markdown Extra 定义列表语法:
- 项目1
- 项目2
- 定义 A
- 定义 B
- 项目3
- 定义 C
-
定义 D
定义D内容
代码块
@requires_authorization
def somefunc(param1='',param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
@H_339_1301@class SomeClass:
pass
>>> message = '''interpreter ... prompt'''
脚注
目录
用 [TOC]
来生成目录:
数学公式
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.
- 行内公式,数学公式为:
Γ(n)=(n−1)!∀n∈@H_861_1404@ℕ 。 - 块级公式:
更多LaTex语法请参考 这儿.
UML 图:
可以渲染序列图:
或者流程图:
离线写博客
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。