Windows VM készítése Qemu környezetben

Az Alkalmazásfejlesztés tárgy keretein belül elkerülhetetlenül szükség van egy windows környezetre az UWP futtatásához. Ez a snippet abban próbál segítséget nyújtani, hogy hogyan tudjuk magunknak ezt a VM-et összerakni, hogy lehetőleg jó teljesítmény mellett tudjuk futtatni a Visual Studio-t

Minimal megoldás script és qemu segítségével

Szükséges előkészületek

Én ahol lehet nem telepítek fel új programot, ha már egy meglévő ökosisztéma képes a feladat elvégzésére. Ezért ennek a VM-nek a felállításában is csak egy shellre, és a qemu packagere lesz szükség.

A qemu egy nyílt forráskódú program, amely virtualizálásra, és rendszer emulálásra képes, így lehet akár ARM utasításokat futtatni x86 alapú processzoron, vagy esetünkben egy virtuális gépet létrehozni, amelyen egy tetszőleges guest OS-t futtathatunk. A qemu támogatja a KVM módot, amely a Kernel Virtualization Module kifejezést rejti maga mögött. Ez a kernel modul teszi lehetővé, hogy a kód amelyet qemun keresztül futtatunk, egyenesen a fizikai processzoron fusson, így jobb teljesítményhez fogunk jutni, amelyre a windows és a VS során szükségünk is lesz.

Feltételezhetően shell mindenkinek áll a rendelkezésére, qemut pedig, a következő parancsok egyikével fogjuk tudni telepíteni:

Archlinux

sudo pacman -S qemu-full

A megfelelő működéshez szükséges számunkra még a libvirt nevű package, amely egy API-t biztosít a virtualizációs eszközök számára. Ezt a libraryt a fentihez hasonló módon telepítsük.

Archlinux

sudo pacman -S qemu-full

A package telepítése után pedig indítsuk el:

sudo systemctl start libvirtd.service

TODO: többi distro, debian, fedora

A többi disztribúción nem teszteltem a telepítést viszont a qemu minden nagyobb disztribúcióhoz tartozó package repositoryban elérhető.

A script

A telepítés és futtatás ettől a ponttól kezdve shellből manuálisan megtehető, viszont a kezelést sokkal kényelmesebbé tudja tenni egy script.

Image létrehozása

Az első lépés egy virtuális disk létrehozása, amely gyakorlatilag egy egyszerű file. A scriptben ezt a -c (vagy --create) kapcsolóval tehetjük meg, amelyet követő szám határozza meg a lemez méretét. Amennyiben nem adunk meg méretet, a default beállítás 128G. Ez az érték természetesen módosítható a script szerkesztésével.

./windows-alkfejl -c 128G

A Windows telepítése

A következő lépésben szükségünk lesz egy telepítő image-re amelyről a Windowst telepíthetjük. Ezt a Microsoft weboldaláról le tudjuk tölteni. Sajnos ez az oldal feketemágiát használ így nem tudtam automatizálni a letöltési folyamatot, ezt kézzel kell megcsinálnunk.

Ha ez megtörtént, akkor a telepítést a -i (vagy --install) kapcsolóval kezdhetjük, amelyhez adjuk meg a telepítő image elérési útját. Ezek után a virtuális gép elindul, és telepíthetjük az operációs rendszert ugyanúgy mintha egy fizikai gépen végeznénk a telepítést.

A Windows indítása

Az általános indítást a telepítést követően a -l (avagy --launch) kapcsolóval érhetjük el. A virtuális gép egy új ablakban fog megjelenni, amelyet (az eredeti beállítások mellett) az F11 billentyűvel tehetünk teljes képernyős módba, illetve innen vissza ablakba. A kurzorunkat egyszeri belekattintás után elkapja a rendszer, majd a shift-F12 billentyűkombinációval tudjuk visszairányítani a host OS-be.

Konfigurálás

Hardver erőforrások

A script 4. - 6. sorában beállítható hogy hány magot használhasson a virtuális gép, illetve hogy mennyi memóriát akarunk a rendszer számára biztosítani.

Windows integrálás

A rendszer jobb integrációja kedvéért javaslom a következő csomag letöltését és telepítését a virtuális gépre: link

Kényelmesebb megoldás VirtManager segítségével

TODO

Források, tutorialok, amik segíthetnek

https://wiki.archlinux.org/title/QEMU https://www.youtube.com/watch?v=BgZHbCDFODk https://www.spice-space.org/download.html https://wiki.gentoo.org/wiki/QEMU/Windows_guest