Virtuelle maskiner med KVM og Virt-manager


Indledning

Jeg formoder at vi alle har lidt forskellige behov for, at afvikle en virtuel maskine. I mit tilfælde har jeg indimellem et behov for adgangen til Microsoft Excel på farten, selvom jeg kun har min Linux-maskine med. Personligt har jeg dårlig erfaring med Wine, når det kommer til Microsoft Office-pakke, efter de flyttede til “skyen”, så jeg benytter i stedet en virtuel maskine med Windows 7.

Inden vi går i gang med opsætningen af KVM (Kernel Virtual Machine) og Virt-Manager, skal vi lige undersøge om din processor er klar til hardware virtualisering.

Din processor omtales som CPU i resten af denne how-to.

VMX eller SVM? (Hardware virtualiserings tjek)

I /proc/cpuinfo kan du se om din CPU understøtter hardware virtualisering. Det er nemmest at kigge under flags:. Understøttes hardware virtualisering, vil der stå svm (Secure Virtual Machine) hvis du har en AMD-CPU, eller vtx (Virtual Machine Extensions) hvis du har en Intel-CPU.

Du kan hurtigt farve vmx eller svm med følgende kommando: grep --color -E 'vmx|svm' /proc/cpuinfo

Output med VMX - Intel CPUI

Finder du hverken vmx eller svm-udtrykket, kan det skyldes at du endnu ikke har aktiveret Hardware Virtulization i BIOS. Opbygningen af menu-strukturen i BIOS er meget forskelligt, alt efter hvad der kommer med din computer. Jeg underlader derfor at guide yderligere herom, men du kan evt. læse mere her. Normalt tilgås BIOS ved klik på F2, ESC eller Delete under opstart af maskinen.

Da vi nu ved at maskinen understøtter VT-x, kan vi fortsætte til næste step.

Installer KVM og Virt-manager

Vi er nu klar til at påbegynde installationen af henholdsvis KVM, Virt-Manager og andre påkrævede pakker. KVM styres via kommandoer i din terminal, men med Virt-Manager får du et grafisk interface der gør det hele lidt nemmere at gå til.

sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager ebtables dnsmasq qemu-utils gir1.2-spiceclientgtk-3.0

ebtables og dnsmasq benyttes til netværks-relaterede ting. qemu-utils indeholder bl.a. værktøjet qemu-img som skal benyttes, hvis man ønsker at lave non-raw file images. Jeg anbefaler selv at man laver raw-storage volumes, da disse har bedre performance, dog færre features. For at kunne vise grafisk output fra vores VM, skal gir1.2-spiceclientgtk-3.0 installeres.

Herefter skal vi sikre at du har de tilstrækkelige rettigheder.

Brug først sudo virsh -c qemu:///system list til at tjekke, om virsh virker. Hvis dette virker, så fortsæt uden sudo for at tjekke om din bruger har rettigheder hertil.

virsh med og uden sudo

Som udgangspunkt vil kommandoen fejle uden sudo. Løsningen er dog ganske ligetil, da vi hurtigt kan oprette en gruppe, og herefter tilføje vores bruger hertil. Normalt findes gruppen i forvejen, men hvis alle tre kommandoer afvikles, er du på den sikre side, hvis du efterfølgende vil rode mere med libvertd og kvm.

sudo addgroup libvirtd
sudo adduser {brugernavn} libvirtd
sudo adduser {brugernavn} kvm

Herefter skal du genstarte din computer.

Virtual Machine Manager

Når KVM og Virt-manager er installleret og vi har rettigheder hertil, så skal du blot have oprettet din nye virtuelle maskine.

Første gang kan det være lidt rodet, hvis man kommer fra fx. Oracle Virtual Box, men det kræver blot lidt tilvænning.

Du er velkommen til at stille spørgsmål nedenfor, og så skal jeg nok forsøge at lave opdateringer til guiden, om nødvendigt. Du kan dog finde step-by-step guide til resten ved howtogeek. Dernæst findes endnu en guide på dennisnotes.com hvor der også bliver nævnt væsentlige ting i forbindelse med opsætningen. Fx. raw-volume, fremfor non-raw. Caching metoder, valg af ISO-image, og opsætningen af det virtuelle netværksinterface (NIC).

Første start og andre tips

Fejlbeskeder

I modsætningen til fx. VirtualBox, skal du indimellem arbejde lidt mere for at få tingene til at køre som smurt. Der kan forekomme fx. manglende biblioteker mm. Læs derfor altid fejlbeskederne når de forekommer. Du er velkommen til at spørge her, om nødvendigt.

Fanget cursor (mus)

Hvis du får “kabret” din cursor i en virtuel maskine, skal du blot bruge din venste Ctrl og Alt for at slippe cursoren fri fra din virtuelle maskine.

Manglende boot-device

Når du starter din VM første gang, skal du huske at have tildelt en .ISO fil til et diskdrev, og dernæst også at have ændret boot-order, så maskinen starter via dette drev. Boot Options i Virt-manager Virtual Machine Manager

Manglende drev ved Windows-installation

Benytter du guiden fra dennisnotes.com, skal du være OBS på, at der skal indlæses drivers under installationen af Windows - ellers kan drevet ikke findes. viostor.inf tilføjelse under installationen Drivers indlæses

Find ISO-filen lige her, og læs mere her.

Windows Gæste-drivers

Som med fx. VMWare og VirtualBox, findes der også gæste-drivers til Windows afviklet via KVM. Det kendes som spice guest tool, og kan findes lige her - du kan hente nyeste version her.

Med gæste-driverne får du bedre understøttelse af grafik, copy/paste understørrelse, automatisk tilpasning af opløsing og en del andet. Se evt. mere her under Windows binaries.

OBS: Med virtio-drivers og andet nævnt i Manglende drev ved Windows-installation, er du nødsaget til at hente en .ISO-fil med flere drivers på. På denne findes også guest-agent som du med fordel kan installere. Dernæst findes bl.a. mappen NetKVM hvor netværksdrivers findes. Derfor kan det være en fordel at hente dette image og mounte som disk nr. 2. Disk nr. 2 - IDE CDROM 2 i Virtual Machine Manager Du kan finde en glimrene guide til installation af driversne herfra på redhat.com.

Billede af enheder uden drivers

Enhed Driver fra image
Ethernet Controller NetKVM
PCI Device Balloon
PCI Simple Communications Controller vioserial

Ingen netværk

Med virsh net-list --all kan du se, om du har fået sat NAT-baseret netværk op som standard. Output skal være:

Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

Har du ikke det, kan du læse mere her

Du kan desuden angive virsh til at starte automatisk med dit system, med kommandoen virsh net-autostart default. Og hvis du vil angive det som standard, kan det gøres med virsh net-start default. Du skal dog sikre at netværket er afbrudt, når du afvikler denne kommando.

Når libvirt’s default netværk er kørende, vil du se et isoleret bro-netværk på din værts-maskine. Du kan se bro-interfaces med brctl show.

ridge name	bridge id		    STP enabled	    interfaces
virbr0		8000.52540067346d	yes		    virbr0-nic
                							vnet0
											

Hvis du stadig ikke har adgang til internettet via Internet Exporer, så forsøg at ping google.com via CMD. Lykkedes dette, så skal du forsøge med en anden browser. Kopier .exe-filen via et USB-stick, hvis du ikke har fået oprettet et netværk-share, eller alternativt så inkluder det i din .ISO-fil med drivers.

Hvor er min .xml-fil som der henvises til?

Konfigurationsfilen til din VM findes oftest under /etc/libvirt/qemu/. Det kunne fx. være /etc/libvirt/qemu/windows7.xml.

Mulighederne med KVM

KVM kan rigtig mange ting, og i modsætning til andre løsninge, så er det stort set ingen begrænsninger. Selv har jeg kigget på fx. Looking Glass der tillader pass-through af et grafikkort, skærm, tastatur og mus. Du kan reelt slippe for dual-booting og fx. Wine. Bemærk dog at dette kræver at du har et andet grafikkort til rådighed, og at et dedikeret grafikkort i en bærbar, ikke nødvendigvis er nok. Disse kort er rent teknisk omtalt som muxless/non-MXM Optimus kort, og har ikke deres eget display output. Læs meget mere om det lige her. Hvis det har fanget din interesse og har du en bærbar hvor du alligevel vil forsøge dig frem, så kig forbi dette issue på Github. En verden åbner sig for iOOMU, initramfs, vfio_pci og meget andet.

God fornøjelse med opsætningen af KVM og Virt-manager. Jeg beklager at denne how-to er ganske rodet. Det skyldes at jeg undervejs har indsamlet en masse links samt erfaringer undervejs.

Windows 7 installationen er i gang med QEMU/KVM Virtual Machine Manager