KVM/QEMU installeren op Manjaro/Archlinux

KVM is een acroniem van Kernel-gebaseerde Virtuele Machine, het is een technologie-oplossing voor virtualisatie die gebaseerd is op de Linux kernel module. KVM is een open-source software oplossing die draait op de Linux x86 machine met de ondersteuning van hardware virtualisatie uitbreidingen Intel VT of AMD-V. De KVM kernel module wordt sinds versie 2.6.20 naar de Linux kernel gestuurd en is naar andere besturingssystemen zoals FreeBSD en Illumos geporteerd als laadbare kernel modules.

De KVM technologie maakt van de Linux machine een hypervisor virtualisatie, die de host machine genoemd wordt. Op de host machine kun je meerdere geïsoleerde systemen maken die virtuele machines (VM) worden genoemd. Elke virtuele machine heeft zijn systeem (het kan Linux, Windows, of BSD zijn), en ook eigen gevirtualiseerde hardware zoals geheugen, CPU’s, netwerkkaart, schijf, grafiek, enz.

Wat is QEMU?

QEMU of Quick Emulator is een open-source systeememulator en virtualizer voor hardware virtualisatie. In het algemeen wordt het gebruikt als virtualizer met de KVM kernel module om virtuele machines te draaien. Om geweldige prestaties voor gastmachines/virtuele machines te bereiken, maakt het gebruik van de hardware virtualisatie uitbreidingen zoals Intel VT of AMD-V. De QEMU/KVM virtualisatie wordt meestal gebruikt als hypervisor in een datacentrum.

In deze gids leer je hoe je KVM/QEMU virtualisatie op Manjaro/Archlinux machine kunt instellen. Ook leer je hoe je de eerste virtuele machine maakt met de GUI toepassing “virt-manager” – een desktop gebruikersinterface voor het beheer van virtuele machines.

Vereisten

  • Een Manjaro/Archlinux met x86 of 64-bit architectuur.
  • Een CPU/processor met virtualisatie ondersteuning (Intel VT of AMD-V).
  • Een niet-root gebruiker met sudo root rechten.

Controleer systeemarchitectuur en CPU virtualisatie ondersteuning

Controleer eerst de architectuur van de machine en de hardware ondersteuning van virtualisatieversnelling Intel VT voor Intel CPU’s en AMD-v voor AMD CPU’s.

1. Voer het volgende commando uit om de systeemarchitectuur van je systeem te controleren.

uname -m

Je krijgt de volgende uitvoer.

Linux machine1 5.4.134-1 #1 SMP PREEMPT Tue Jul 06 08:10:03 UTC 2021 x86_64 GNU/Linux

Zoals te zien is, gebruiken we momenteel het Linux systeem met“x86_64” of“64-bit” architectuur en de kernel versie“5.4“.

2. Controleer vervolgens de hardware virtualisatie ondersteuning door het volgende commando uit te voeren.

sudo lscpu | grep Virtualization

Voor de Intel processor zie je soortgelijke uitvoer als hieronder.

Virtualization:                  VT-x

En voor AMD processoren is hieronder een soortgelijke uitvoer.

Virtualization:                  AMD-V

3. Optioneel kun je geneste virtualisatie op je machine inschakelen met het volgende commando.

sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1

Voer daarna het volgende commando uit om de geneste virtualisatie te verifiëren.

cat /sys/module/kvm_intel/parameters/nested

Als je de uitvoer krijgt als “Y” of “1”, betekent dit dat de eigenschap geneste virtualisatie is ingeschakeld. Anders zie je de foutmelding als “No such file or directory”.

Installeren van QEMU en Virt-Manager pakketten

1. Om qemu en virt-manager pakketten te installeren, voer je het onderstaande commando uit.

sudo pacman -S qemu virt-manager libvirt virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables libguestfs

Voor het manjaro systeem zal er een pakketconflict zijn tussen“iptables” en“ebtables“. Typ“y” om het standaard iptables pakket te verwijderen en te vervangen door de“ebtables” en“nftables“.

Hieronder staan essentiële pakketten die je moet kennen:

  • qemu: Een open-source machine emulator en virtualizer.
  • virt-manager; Een GUI toepassing voor het beheer van virtuele machines.
  • libvirt: Een API voor het aansturen van virtualisatie-engines zoals KVM, QEMU, enz.
  • dnsmasq: Lichtgewicht DNS forwarder en DHCP server.
  • bridge-utils: Hulpprogramma’s voor het configureren van een Linux ethernet brug.
  • libguestfs: Reeks gereedschappen voor het wijzigen van virtuele machine (VM) schijfimages.

2. Start vervolgens de dienst libvirtd en schakel die in met het volgende commando.

sudo systemctl enable --now libvirtd

Je krijgt soortgelijke uitvoer als hieronder.

Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Created symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket → /usr/lib/systemd/system/virtlockd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket → /usr/lib/systemd/system/virtlogd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.

3. Voer daarna het volgende commando uit om de status van de libvirtd service te controleren.

sudo systemctl status libvirtd

En je zou soortgelijke uitvoer moeten zien als hieronder. Zoals te zien is, is de libvritd dienst actief en draait.

? libvirtd.service - Virtualization daemon
     Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; disabled; vendor preset: disabled)
     Active: active (running) since Fri 2021-07-23 10:33:25 UTC; 6s ago
TriggeredBy: ? libvirtd-ro.socket
             ? libvirtd.socket
             ? libvirtd-admin.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 16828 (libvirtd)
      Tasks: 19 (limit: 32768)
     Memory: 16.4M
        CPU: 226ms
     CGroup: /system.slice/libvirtd.service
             ??16828 /usr/bin/libvirtd --timeout 120

Sta niet-root gebruikers toe KVM/QEMU virtualisatie te gebruiken

Standaard kan alleen de gebruiker “root” virtuele machines maken en beheren. Om niet-root gebruikers toe te staan virtuele machines te maken en te beheren, moet je de onderstaande libvirtd configuratie volgen.

1. Voer het volgende commando uit om de libvirtd configuratie te bewerken.

sudo nano /etc/libvirt/libvirtd.conf

Haal het commentaar weg bij de optie“unix_sock_group” en voer de groepsnaam in als“libvirt“.

# Set the UNIX domain socket group ownership. This can be used to
# allow a 'trusted' set of users access to management capabilities
# without becoming root.
#
# This setting is not required or honoured if using systemd socket
# activation.
#
# This is restricted to 'root' by default.
unix_sock_group = "libvirt"

Maak daarna het commentaar op de optie“unix_sock_rw_perms” ongedaan en laat de toestemming staan als standaard“0770“.

# Set the UNIX socket permissions for the R/W socket. This is used
# for full management of VMs
#
# This setting is not required or honoured if using systemd socket
# activation.
#
# Default allows only root. If PolicyKit is enabled on the socket,
# the default will change to allow everyone (eg, 0777)
#
# If not using PolicyKit and setting group ownership for access
# control, then you may want to relax this too.
unix_sock_rw_perms = "0770"

Sla de configuratie op door op de Ctrl+x toets te drukken en y te typen en dan enter te geven.

2. Voeg vervolgens je gebruiker toe aan de groep“libvirt” met het volgende commando.

sudo usermod -a -G libvirt username

3. Herstart daarna de dienst libvirtd om een nieuwe configuratie toe te passen.

sudo systemctl restart libvirtd

Nu kunnen alle gebruikers binnen de groep “libvirt” virtuele machines maken en instellen.

Verifieer de QEMU/KVM installatie met virt-manager

Open nu de toepassing“virt-manager” uit je toepassingsmenu.

1. Klik op het menu “Edit -> Connection Details” van de toepassing virt-manager.

Controleer Verbindingsdetails van QEMU/KVM

2. Op het tabblad“Overview” zie je dat de virt-manager automatisch verbinding maakt met“qemu:///system“.

virt-manager zal automatisch verbinding maken met de QEMU/KVM binnen het systeem

3. Ga naar de tabbladen“Virtual Networks” en je ziet de“standaard” netwerkconfiguratie.

  • Interface: virbr0
  • Automatisch starten bij opstarten: ja
  • IP adres: 192.168.122.0/24
  • Bereik DHCP IP adres: 192.168.122.2 – 192.168.122.254
  • Type netwerk: NAT

Standaard netwerkconfiguratie voor QEMU/KVM met NAT

4. Ga nu naar het tabblad“Storage“, en je ziet de“standaard” configuratie van de poolopslag.

  • Type: Bestandssysteem map
  • Grootte: Hangt af van je schijf
  • Locatie: /var/libvirt/images
  • Automatisch starten bij opstarten: ja

Alle virtuele machine images zullen beschikbaar zijn op deze standaard opslagplaats, de directory“/var/libvirt/images“.

Standaard QEMU/KVM Opslag

5. Klik vervolgens op de knop“+” om een nieuwe pool-opslag voor ISO image bestanden te maken. Alle ISO bestanden besturingssystemen zullen op deze pool beschikbaar zijn.

Volg de opslagconfiguratie zoals hieronder:

  • Naam: ISO
  • Type: dir: Bestandssysteem Directory
  • Doelpad: /pad/directory/naar/jouw/iso/

Maak nieuwe opslagruimte voor besturingssystemen met ISO bestanden

Klik op de knop“Finish” om het proces te voltooien. Daarna ben je klaar om nieuwe virtuele machines te maken.

Nieuwe virtuele machine aanmaken met virt-manager

1. Klik op de virt-manager toepassing op de knop“+” om een nieuwe virtuele machine te maken.

Maak een nieuwe virtuele machine met virt-manager

2. Kies“Local install media” om de ISO image voor de installatie te gebruiken en klik op de knop“Forward” om verder te gaan.

Kies lokale media ISO type installatie

3. Klik op de knop“Browse” om het ISO bestand te kiezen.

Blader door het ISO opearingsysteem dat je wilt installeren

Kies nu de pool opslag“ISO” en selecteer het iso bestand voor de installatie (voor dit voorbeeld is dat“Debian 10“), klik dan op“Choose Volume“.

Kies een OS ISO bestand voor installatie voorbeeld Debian 10

Vink de optie“Automatically detect from the installation media/sourceuit, typ het besturingssysteem dat je wilt installeren (voor dit voorbeeld is dat“Debian 10“), en klik dan weer op de knopForward” om verder te gaan.

Kies het soort besturingssysteem dat je wilt installeren

4. Kies hoeveel geheugen en CPU voor de virtuele machine, en klik dan op“Forward“.

geheugen en CPU configuratie voor virtuele machine

5. Kies hoeveel schijfruimte voor de virtuele machine en klik opForward”.

Kies grootte schijf voor virtuele machine

6. Dubbel-check je configuratie en klik op de“Finish” knop om te installeren.

Bevestig dat je een virtuele machine maakt en installeert

7. Nu is de virtuele machine up and running met QEMU/KVM virtualisatie, en kun je verder gaan met de os installatie.

Virtuele Machine is in werking met QEMU/KVM virtualisatie

Conclusie

Gefeliciteerd! Je hebt geleerd hoe je QEMU/KVM virtualisatie op Manjaro/Archlinux machine kunt instellen. Ook hoe je de virt-manager toepassing gebruikt om virtuele machines te maken. Nu kun je virtuele machines maken met het besturingssysteem van je voorkeur. Je kunt een andere Linux distro gebruiken, Windows, of BSD familie os.