Fahamkayga hadda:
1) KVM
KVM (Mashiinka Virtual-based Kernel) waa hypervisor (VMM - Maareeyaha Mashiinka Virtual) oo u shaqeeya sidii module Linux OS ah. hypervisor ayaa loo baahan yahay si loo socodsiiyo qaar ka mid ah software-ka meel aan jirin (virtual) isla markaasna laga qariyo software-ka qalabka dhabta ah ee dhabta ah ee software-kani ku shaqeeyo. Hypervisor-ku wuxuu u shaqeeyaa sidii "spacer" inta u dhaxaysa qalabka jireed (martigeliyaha) iyo OS-ka (marti).
Maadaama KVM uu yahay cutubka caadiga ah ee kernel-ka Linux, waxay ka helaysaa dhammaan wanaagga loo baahan yahay kernel-ka (maamulka xusuusta, jadwaleeyaha, iwm.). Oo sidaas daraaddeed, dhamaadka, dhammaan faa'iidooyinkan waxay aadayaan martida (maaddaama martidadu ay ka shaqeeyaan hypervisor-ka ku shaqeeya Linux OS kernel).
KVM waa mid aad u dheereeya, laakiin lafteeda kuma filna in la socodsiiyo OS-ga casriga ah, sababtoo ah ... Tani waxay u baahan tahay ku dayasho I/O I/O (CPU, disks, network, video, PCI, USB, serial ports, iwm.) KVM waxay isticmaashaa QEMU.
2) QEMU
QEMU (Quick Emulator) waa emulator qalabyo kala duwan oo kuu oggolaanaya inaad ku socodsiiso nidaamyada hawlgalka ee loogu talagalay hal qaab-dhismeedka kale (tusaale, ARM -> x86). Marka lagu daro processor-ka, QEMU waxay ku dayataa aaladaha kala duwan ee durugsan: kaararka shabakada, HDD, kaararka fiidiyowga, PCI, USB, iwm.
Waxay u shaqeysaa sidatan:
Tilmaamaha/koodka binary-ga (tusaale, ARM) waxa loo rogaa kood madax-bannaan oo dhexdhexaad ah iyada oo la adeegsanayo beddelaha TCG (Tiny Code Generator) ka dibna koodhkan binary-ga ah ee madax-bannaan ee madal ayaa loo rogaa tilmaamo/code (tusaale, x86).
ARM -> dhexdhexaad_code -> x86
Asal ahaan, waxaad ku wadi kartaa mashiinnada farsamada QEMU martigeliyaha kasta, xitaa moodooyinka processor-ka hore ee aan taageerin Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Si kastaba ha ahaatee, kiiskan, waxay u shaqeyn doontaa si tartiib tartiib ah, sababtoo ah xaqiiqda ah in fulinta code binary u baahan yahay in lagu soo koobo duulimaadka laba jeer, iyadoo la adeegsanayo TCG (TCG is a Just-in-Time compiler).
Kuwaas. QEMU lafteedu waa mega qabow, laakiin si tartiib tartiib ah ayey u shaqeysaa.
3) Faraantiga ilaalinta
Koodhka barnaamijka binary-ga ee soo-saareyaashu waxay u shaqeeyaan sabab, laakiin waxay ku yaalliin heerar kala duwan (faraanado / siddo ilaalin) oo leh heerar kala duwan oo helitaan xog ah, laga bilaabo kuwa ugu mudnaanta badan (Ring 0), ilaa kan ugu xaddidan, nidaamsan iyo "laska la adkeeyay β (Xalqada 3aad).
Nidaamka hawlgalka (OS kernel) wuxuu ku shaqeeyaa Ring 0 (qaabka kernel) wuxuuna ku samayn karaa wax kasta oo uu rabo xog kasta iyo qalab kasta. Codsiyada isticmaaluhu waxay ku shaqeeyaan heerka Ring 3 (qaabka isticmaalaha) loomana oggola inay sameeyaan wax kasta oo ay rabaan, laakiin taa beddelkeeda waa inay codsadaan gelitaanka wakhti kasta si ay u fuliyaan hawlgal gaar ah (sidaa darteed, codsiyada isticmaaleyaashu waxay heli karaan oo keliya xogtooda mana heli karaan galayβ sanduuqa ciid ee qof kale). Giraanta 1 iyo 2 waxaa loogu talagalay inay isticmaalaan darawallada.
Ka hor intaan la abuurin Intel VT-x / AMD SVM, hypervisors waxay ku ordeen Ring 0, martidana waxay ku ordeen Ring 1. Tan iyo Ring 1 ma laha xuquuq ku filan hawlgalka caadiga ah ee OS-ka, iyadoo wicitaan kasta oo mudnaan leh uu ka helo nidaamka martida, hypervisor waa inuu wax ka beddelo wicitaankan duullimaadka oo uu ku fuliyaa giraanta 0 (sida ay QEMU samayso). Kuwaas. binary martida MAYA waxaa si toos ah loogu fuliyay processor-ka, mar kastana waxa uu soo maray dhowr isbeddel oo dhexdhexaad ah oo duullimaad ah.
Dulqaadku wuxuu ahaa mid muhiim ah tanina waxay ahayd dhibaato weyn, ka dibna soo-saareyaasha soo-saareyaasha, si madax-bannaan midba midka kale, ayaa sii daayay tilmaamo dheeri ah (Intel VT-x / AMD SVM) kaasoo u oggolaanaya fulinta koodka OS-ka martida. SI toos ah processor-ka martida loo yahay (iyadoo laga gudbayo tillaabooyin dhexdhexaad ah oo qaali ah, sidii horeba ahayd).
Markii ay soo baxday Intel VT-x / AMD SVM, waxaa la sameeyay heer cusub oo giraan ah -1 (mid laga jaray). Oo hadda hypervisor-ka ayaa ku shaqeeya, martiduna waxay ku ordaan Ring 0 oo waxay fursad u helaan helitaanka CPU.
Kuwaas. ugu dambayn:
- martigeliyaha wuxuu ku socdaa giraanta 0
- martida waxay ku shaqeeyaan Ring 0
- hypervisor wuxuu ku socdaa Ring -1
4) QEMU-KVM
KVM waxay siisaa martida marin u helka Ring 0 waxayna isticmaashaa QEMU si ay ugu daydaan I/O (processor, disks, network, video, PCI, USB, serial ports, iwm. in martidu ay "arkaan" oo ay la shaqeeyaan).
Markaa QEMU-KVM (ama KVM-QEMU):)
DHIBCAHA
PS Qoraalka maqaalkan waxaa markii hore lagu daabacay kanaalka Telegram
Ku qor faallooyinka meesha aanan si sax ah u fahmin mawduuca ama haddii ay jiraan wax lagu daro.
Waad ku mahadsan tahay!
Source: www.habr.com