Kernel-based Virtual Machine(KVM) is a virtualization module in the Linux kernel that allows the kernel to function as a hypervisor. It is the leading open source virtualisation technology for Linux. It installs natively on all Linux distributions and turns underlying physical servers into hypervisors so that they can host multiple, isolated virtual machines (VMs). KVM comes with no licenses, type-1 hypervisor capabilities and a variety of performance extensions which makes it an ideal candidate for virtualisation and cloud infrastructure implementation.Â
Step 1 – Checking support for KVM
Hardware support
KVM requires that the virtual machine host’s processor has virtualization support (named VT-x for Intel processors and AMD-V for AMD processors). You can check whether your processor supports hardware virtualization with the following command:
$ LC_ALL=C lscpu | grep Virtualization
Alternatively:
$ grep -E --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo
If nothing is displayed after running either command, then your processor does not support hardware virtualization, and you will not be able to use KVM.
Kernel support
Arch Linux kernels provide the required kernel modules to support KVM.
- One can check if the necessary modules,Â
kvm
 and eitherÂkvm_amd
 orÂkvm_intel
, are available in the kernel with the following command:
$ zgrep CONFIG_KVM /proc/config.gz
The module is available only if it is set to either y
 or m
.
- Then, ensure that the kernel modules are automatically loaded, with the command:
➜ lsmod | grep kvm kvm_intel 364544 0 kvm 1097728 1 kvm_intel irqbypass 16384 1 kvm
Step 2 – Install KVM for ArchLinux/Manjaro
Fire up the terminal and run the following code for a direct install of KVM:
sudo pacman -S virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat
Also install ebtables  and iptables packages:
sudo pacman -S ebtables iptables
libguestfs is a set of tools used to access and modify virtual machine (VM) disk images. You can use this for:
- viewing and editing files inside guests
- scripting changes to VMs
- monitoring disk used/free statistics
- creating guests
- P2V
- V2V
- performing backup e.t.c
sudo pacman -S libguestfs
Start KVM libvirt service
Once the installation is done, start and enable libvirtd service to start at boot:
sudo systemctl enable libvirtd.service<br>sudo systemctl start libvirtd.service
Status show it’s running:
➜ systemctl status libvirtd.service (gke_upvest-production_europe-west3-c_sandbox-kiows4/default)
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-05-20 09:32:11 EAT; 10s ago
TriggeredBy: ● libvirtd.socket
● libvirtd-ro.socket
● libvirtd-admin.socket
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 22933 (libvirtd)
Tasks: 19 (limit: 32768)
Memory: 18.1M
CPU: 184ms
CGroup: /system.slice/libvirtd.service
└─ 22933 /usr/bin/libvirtd --timeout 120
May 20 09:32:11 home-pc systemd[1]: Starting Virtualization daemon...
May 20 09:32:11 home-pc systemd[1]: Started Virtualization daemon.
Enable normal user account to use KVM
Since we want to use our standard Linux user account to manage KVM, let’s configure KVM to allow this.
Open the file_Â /etc/libvirt/libvirtd.conf_Â for editing with your text editor. I am using vim.
sudo vim /etc/libvirt/libvirtd.conf
Set the UNIX domain socket group ownership to libvirt, (around line 85)
unix_sock_group = "libvirt"
Set the UNIX socket permissions for the R/W socket (around line 102)
unix_sock_rw_perms = "0770"
Add your user account to libvirt group.
sudo usermod -a -G libvirt $(whoami)<br>newgrp libvirt
Restart libvirt daemon.
sudo systemctl restart libvirtd.service
Enable Nested Virtualization (Optional)
Nested Virtualization feature enables you to run Virtual Machines inside a VM. Enable Nested virtualization for kvm_intel / kvm_amd
 by enabling kernel module as shown.
# For Intel Processor
sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1
# For AMD Processor
sudo modprobe -r kvm_amd
sudo modprobe kvm_amd nested=1
To make this configuration persistent,run:
echo "options kvm-intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf
Confirm that Nested Virtualization is set to Yes:
# For Intel processors
➜ systool -m kvm_intel -v | grep nested
nested = "Y"
nested_early_check = "N"
➜ cat /sys/module/kvm_intel/parameters/nested
Y
# For AMD Processor
$ systool -m kvm_amd -v | grep nested
nested = "Y"
nested_early_check = "N"
$ cat /sys/module/kvm_amd/parameters/nested
Y
Using KVM on Arch Linux / Manjaro
You have successfully installed KVM, QEMU and Virt Manager on Arch Linux and Manjaro. You are now good to go.
Open virt-manager from your launcher to get started.
You can install a Linux or Windows OS Virtual Machine and build your labs.
Related content:
- [][1]
- How to Install Kvm In Ubuntu 20.04
- Vagrant – Using Vagrantfile to manage virtual machines
- How to provision Vagrantboxes with Ansible
[1]: data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%221024%22 height=%22490%22%3E%3C/svg%3E