Skip to content

Instantly share code, notes, and snippets.

@justkelvin
Forked from tatumroaquin/archlinux-qemu-kvm.md
Created April 5, 2024 01:58
Show Gist options
  • Save justkelvin/1e2c07246815ccb23f30cacea1093187 to your computer and use it in GitHub Desktop.
Save justkelvin/1e2c07246815ccb23f30cacea1093187 to your computer and use it in GitHub Desktop.
QEMU-KVM Installation for Arch Linux

Arch Linux QEMU-KVM

install all necessary packages

sudo pacman -S virt-manager virt-viewer qemu qemu-arch-extra \
edk2-ovmf vde2 ebtables dnsmasq bridge-utils openbsd-netcat libguestfs

enable libvirt daemon

systemctl enable libvirtd.service
systemctl start libvirtd.service

create bridge interface

sudo nvim br10.xml

<network>
  <name>br10</name>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='br10' stp='on' delay='0'/>
  <ip address='192.168.30.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.30.50' end='192.168.30.200'/>
    </dhcp>
  </ip>
</network>

define and autostart network bridge

sudo virsh net-define br10.xml
sudo virsh net-start br10
sudo virsh net-autostart br10

enable normal user account to use KVM

sudo nvim /etc/libvirt/libvirtd.conf

unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"

add current user to kvm and libvirt groups

sudo usermod -a -G kvm $(whoami)
sudo usermod -a -G libvirt $(whoami)
newgrp libvirt

enable nested virtulization (optional)

sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1
echo "options kvm-intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf

verify nested virtualization

systool -m kvm_intel -v | grep nested
cat /sys/module/kvm_intel/parameters/nested
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment