Viszonylag hamar felmerül egy kezdő felhasználóban is a kérdés, hogy vajon milyen lehet egy másfajta rendszer, lehet e futtatni valami más operációs rendszert, alkalmazásokat és programokat, esetleg egy teljesen más architektúrát kipróbálni az adott gépen.
Az emuláció szerintem korántsem ismeretlen fogalom az emberek nagy többsége előtt, sokan használják retró számítógépek, játékok vagy különféle operációs rendszerek próbálgatására.
Néhány a legismertebbek közül, persze a teljesség igénye nélkül: VirtualBox, VmWare , QEMU, DosBox, 86Box
Egy biztos, sokáig lehetne sorolni és mindenkinek meg van a saját kedvence ezek közül.
Azzal mindenki tisztában van, hogy egy emulált gép sokszor jóval lassabb, mint ha azt natívan a fizikai gépen futtatnánk, hiszen egy rakás eszköz nem valós, hanem egy virtuális eszköz, amit szintén emulálni kell, így ahhoz is plusz erősorrás kell, hogy ezt a környezetet kialakítsuk.
Természetesen a dolog nem ennyire egyszerű, hiszen mi linuxosok egyébként sem szeretjük az egyszerű dolgokat.
Az emulált környezeteknek több típusa létezik és nem minden esetben kell minden egyes PC alkatrészt szimulálni.
Itt jön a képbe a KVM.
Mi az a KVM?
A Qumranet cég által 2006-ban bevezetett Kernel-alapú virtuális gép (KVM) 2007 elején hivatalosan is bekerült a Linux kernel 2.6.20-as verziójába. A következő évben a Qumranet-et a Linux disztribútor RedHat vásárolta meg. A technológia továbbfejlesztése érdekében a RedHat az IBM-mel közösen megalapította az Open Virtualization Alliance (OVA) szövetséget. Ebben a szövetségben olyan vállalatok vettek részt, mint a SUSE, az Intel és a HP.
A KVM szorosan kapcsolódik a QEMU emulációs szoftverhez, ami főként a hardver virtualizálásához nyújt funkciókat, míg a Linux KVM a gazdarendszer erőforrásainak kiosztását kezeli, ezért használják gyakran a KVM/QEMU kifejezést. Mivel a KVM a Linux szerves része, ez a virtualizációs megoldás nem használható Windows számítógépeken. A Windows azonban a legtöbb Unix-szerű operációs rendszerrel, például a Linux, a Solaris és a BSD mellett vendégrendszerként támogatott és ugyan a KVM a legtöbb Linux-disztribúcióban alapértelmezett, mégis előfordul, hogy engedélyezni kell.
Mint a nevében is benne van, ez a technológia kernel alapú, vagyis kernelmodulokat kell betölteni a működéséhez, ahhoz, hogy valójában ki tudjuk használni a hardveres virtualizációt. Amennyiben nincs engedélyezve a BIOS-ban a VT-X, vagy nincsenek betöltve a szükséges modulok a kernelben, akkor a QEMU csak szimulált módban tud majd üzemelni, ami lényegesen lassabb virtuális gépet eredményez.
A működéshez 2 kernel modulra van szükségünk: kvm.ko és kvm-intel.ko ( AMD esetén ez kvm-amd.ko)
Néhány alapfogalmat viszont nagyon fontos tisztázni, hiszen ezek nélkül aligha fogunk tudni tovább haladni a témában.
- Hypervisor: A vendégrendszerek számára biztosított hardvert vagy szoftveresen emulálják, vagy egy hypervisor vezérli, és valódi hardveres erőforrásokhoz rendelik. A hypervisor egy menedzsment- vagy fordítási réteg a valós és a virtuális hardver között
- Teljes virtualizáció: A hardvert teljes mértékben emulálják szoftveresen, ezért nincs szükség interakcióra a valódi hardverrel, ami szükségtelenné teszi a megfelelő illesztőprogramokat is. Ez a típus a leglassabb megoldás.
- Paravirtualizáció: A vendégrendszer közvetlenül a hypervisorral lép kapcsolatba, és speciálisan erre a célra tervezett illesztőprogramokat igényel.
- Hardveres paravirtualizáció: A hardveres támogatás már a processzorba van integrálva, ez növeli a hatékonyságot, és csökkenti a vendégrendszerekhez szükséges testreszabás mértékét. Az Intel (Intel-VT-x) és az AMD (AMD-V) modern processzorai rendelkeznek ezzel a funkcióval. Bizonyos körülmények között ezt aktiválni kell a BIOS/UEFI-ben.
- VirtIO illesztőprogramok: A vendégrendszerek speciális illesztőprogramjai, amelyeket a hypervisorhoz terveztek, és lehetővé teszik a paravirtualizálást.
- A libvirt: egy nyílt forráskódú API platform virtualizációhoz. Használható KVM, Xen, VmWare ESX, QEMU és más virtualizációs technológiákkal. https://hu.wikipedia.org/wiki/Libvirt
Egy másik fontos fogalom pedig a SPICE protokoll.
Mi az a SPICE protokoll ?
SPICE (the Simple Protocol for Independent Computing Environments) – egy virtuális környezetekhez épített távoli megjelenítő rendszer, amely lehetővé teszi a felhasználók számára, hogy egy számítástechnikai “asztali” környezetet – nemcsak a számítógép-szerver gépén, hanem az internet bármely pontjáról – a legkülönbözőbb gépi architektúrák segítségével megtekinthessenek.
A Qumranet eredetileg 2007-ben fejlesztette ki egy zárt forráskódú kódbázis felhasználásával. A Red Hat, Inc. 2008-ban felvásárolta a Qumranetet, és 2009 decemberében nyílt forráskódú licenc alatt kiadta a kódot, és a protokollt nyílt szabvánnyá tette.
A SPICE projekt célja, hogy egy teljes nyílt forráskódú megoldást kínáljon a virtuális gépek távoli eléréséhez zökkenőmentes módon, hogy komplikációk nélkül játszhasson le videókat, rögzíthessen hangot, oszthasson meg usb eszközöket és oszthasson meg mappákat.
A SPICE 4 különböző összetevőre osztható: Protokoll, kliens, kiszolgáló és vendég.
A protokoll a specifikáció a három másik komponens kommunikációjában:
- a kliens, például a távoli megtekintő felelős az adatok küldéséért és az adatok lefordításáért a virtuális gépről (VM), hogy interakcióba léphessen vele
- a SPICE-kiszolgáló a hipervizor által használt könyvtár, hogy a VM-et a SPICE protokoll szerint megossza
- végül a vendégoldal az összes szoftver, amelynek a VM-ben futnia kell ahhoz, hogy a SPICE teljes mértékben működőképes legyen, például a QXL (az emulált videókártya) illesztőprogram és a SPICE VDAgent (egérelkapás, felbontás, stb…). séma SPICE komponensekkel
A Spice wikipédia linkje: https://en.wikipedia.org/wiki/Simple_Protocol_for_Independent_Computing_Environments
A SPICE projekt hivatalos weboldala és további információk: https://www.spice-space.org/index.html
Virt-Manager
A virt-manager alkalmazás egy asztali felhasználói felület a virtuális gépek kezelésére a libvirt segítségével. Elsősorban a KVM VM-eket célozza meg, de kezeli a Xen és az LXC linux konténereket is.
Összefoglaló nézetet nyújt a futó gépekről, valós idejű teljesítményéről és erőforrás-kihasználtsági statisztikáiról.
A varázslók lehetővé teszik új gépek létrehozását, valamint egy tartomány erőforrás-elosztásának és virtuális hardverének konfigurálását és beállítását.
A beágyazott VNC és SPICE kliens teljes grafikus konzolt kínál a vendégtartományhoz.
A CPU beállításoknál több beállítás is lehetséges, az egyik a “host-passthrough”, ami annyit jelent lényegében, hogy a libvirt arra utasítja a KVM -et, hogy mindenféle módosítás nélkül passzolja tovább a processzor utasításokat. Gyakorlatilag ez az opció biztosítja a legnagyobb sebességet.
A virt-manager weboldala és további infók: https://virt-manager.org/
Na most, amennyiben ezek után még nem fáradtunk el kellőképpen, akkor jöhet az, amiért ez a cikk tulajdonképpen megszületett, egy OpenGL-Virtio, Host-Passthrough KVM/VirtManager beállítás.
Ez a megoldás egyébként nyilván nem csak windows 10 esetén működik…
Egyszerűbben mondva, lássuk a medvét !
U.i.: Nem sokkal a cikk közzététele után kaptam egy fantasztikus linket a Magyar Linux Felhasználók facebook csoportban Zaza Nincsnev felhasználótól.
Looking Glass
Az oldalon megtalálható projekt leírása:
A Looking Glass egy nyílt forráskódú alkalmazás, amely lehetővé teszi a VGA PCI Pass-through-ra konfigurált KVM (Kernel-alapú virtuális gép) használatát csatlakoztatott fizikai monitor, billentyűzet vagy egér nélkül. Ez az utolsó lépés, amely ahhoz szükséges, hogy a nagy teljesítményű grafikát igénylő, régebbi programok esetében eltávolodjunk a más operációs rendszerekkel való kettős rendszerindítástól.
A hálózati alapú streaming alkalmazásokkal ellentétben a Looking Glass nem használ semmilyen tömörítést vagy színtér-átalakítást, minden képkocka 32 bites RGBA-ban kerül a nézőhöz (kliensalkalmazás), mindenféle átalakítás vagy módosítás nélkül. Ez egy megosztott memóriaszegmens használatával lehetséges, amely rendkívül nagy áteresztőképességű, alacsony késleltetésű vendég és a hoszt közötti kommunikációt tesz lehetővé.
- Követelmények – a host, azaz a gazdagép követelményei:
Bármilyen újabb grafikus eszköz, amely támogatja az OpenGL-t megfelel, a kliensalkalmazás nem végez nehéz grafikai munkát.
- guest – azaz a vendég követelményei
Jelenleg csak a Windows 10 támogatott, bármilyen videokártyával, amely támogatja a DXGI Desktop Duplication vagy az NVIDIA Capture API-t (NB: az NvFBC professzionális kártyát igényel, például Quadro-t).
A projekt hivatalos weboldala, dokumentáció és letöltés: https://looking-glass.io/
Természetesen ehhez a projekthez is tartozik egy szuper videó, íme:
Továbbra is várunk mindenkit nagy szeretettel csevegő oldalunkon élőben:
https://skamilinux.hu/chat/
Aktív fórum témák:
https://skamilinux.hu/phpBB3/search.php?search_id=active_topics
Legutóbbi PuppySzoftverek:
https://sourceforge.net/p/puppyszoftver/activity