ʻO koʻu ʻike i kēia manawa:
1) KVM
ʻO KVM (Kernel-based Virtual Machine) kahi hypervisor (VMM - Virtual Machine Manager) e holo ana ma ke ʻano he module ma Linux OS. Pono ka hypervisor no ka holo ʻana i kekahi polokalamu i loko o kahi kaiapuni ʻole (virtual) a ma ka manawa like e hūnā mai kēia polokalamu i ka lako kino maoli kahi e holo ai kēia polokalamu. Hana ʻia ka hypervisor ma ke ʻano he "spacer" ma waena o ka ʻenehana kino (host) a me ka OS virtual (malihini).
No ka mea ʻo KVM kahi module maʻamau o ka kernel Linux, loaʻa iā ia nā mea maikaʻi a pau mai ka kernel (hoʻokele hoʻomanaʻo, scheduler, etc.). A no laila, i ka hopena, hele kēia mau pōmaikaʻi a pau i ka poʻe malihini (no ka mea, hana nā malihini i kahi hypervisor e holo ana ma / ma ka Linux OS kernel).
He wikiwiki loa ʻo KVM, akā ʻaʻole lawa ia e holo i kahi OS virtual, no ka mea ... Pono kēia i ka emulation I/O. No I/O (CPU, disks, network, video, PCI, USB, serial ports, etc.) Hoʻohana ʻo KVM i ka QEMU.
2) QEMU
ʻO QEMU (Quick Emulator) he emulator no nā ʻano mea like ʻole e hiki ai iā ʻoe ke holo i nā ʻōnaehana hana i hoʻolālā ʻia no kekahi hale kiʻi ma kekahi (no ka laʻana, ARM -> x86). Ma kahi o ke kaʻina hana, hoʻohālikelike ʻo QEMU i nā ʻenehana peripheral like ʻole: kāleka pūnaewele, HDD, kāleka wikiō, PCI, USB, etc.
Ke hana nei e like me kēia:
Hoʻololi ʻia nā ʻōlelo aʻoaʻo / code binary (no ka laʻana, ARM) i ke code waena-kūʻokoʻa me ka hoʻohana ʻana i ka mea hoʻololi TCG (Tiny Code Generator) a laila hoʻololi ʻia kēia code binary platform-independent i nā kuhikuhi / code (e laʻa, x86).
ARM -> waena_code -> x86
ʻO ka mea nui, hiki iā ʻoe ke holo i nā mīkini virtual ma QEMU ma kekahi host, ʻoiai me nā hiʻohiʻona kaʻina hana kahiko i kākoʻo ʻole iā Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Eia naʻe, i kēia hihia, e hana mālie loa ia, ma muli o ka pono e hoʻohui hou ʻia ka code binary hoʻokō i ka lele ʻelua, me ka hoʻohana ʻana iā TCG (TCG he Just-in-Time compiler).
ʻO kēlā mau. ʻO QEMU ponoʻī he mega ʻoluʻolu, akā hana mālie.
3) Nā apo pale
Hoʻohana ʻia nā code binary program ma nā kaʻina hana no kahi kumu, akā aia ma nā pae like ʻole (rings / Protection rings) me nā pae like ʻole o ka loaʻa ʻana o ka ʻikepili, mai ka mea nui loa (Ring 0), a hiki i ka mea i kaupalena ʻia, hoʻoponopono ʻia a "me nā nati i hoʻopaʻa ʻia. ” (Ring 3).
Holo ka ʻōnaehana hana (OS kernel) ma ka Ring 0 (kernel mode) a hiki iā ia ke hana i kāna makemake me nā ʻikepili a me nā mea hana. Hoʻohana ʻia nā noi mea hoʻohana ma ka pae Ring 3 (mode mea hoʻohana) a ʻaʻole ʻae ʻia e hana i nā mea a lākou e makemake ai, akā pono e noi i ke komo i kēlā me kēia manawa e hana i kahi hana kūikawā (no laila, loaʻa i nā noi mea hoʻohana i kā lākou ʻikepili ponoʻī a ʻaʻole hiki ke "loaʻa. i loko o” pahu one a kekahi). Hoʻohana ʻia ke kani 1 a me 2 e nā mea hoʻokele.
Ma mua o ka hana ʻana o Intel VT-x / AMD SVM, ua holo nā hypervisors ma ka Ring 0, a holo nā malihini ma ka Ring 1. Mai ka Ring 1 ʻaʻole i lawa nā kuleana no ka hana maʻamau o ka OS, me kēlā me kēia kelepona ponoʻī mai ka ʻōnaehana malihini, Ua hoʻololi ʻo hypervisor i kēia kelepona ma ka lele a hoʻokō iā ia ma ka Ring 0 (e like me kā QEMU). ʻO kēlā mau mea. binary malihini ʻAʻole ua hoʻokō pololei ʻia ma ka kaʻina hana, a i kēlā me kēia manawa e hele i kekahi mau hoʻololi waena ma ka lele.
He mea koʻikoʻi ke poʻo a he pilikia nui kēia, a laila hoʻokuʻu nā mea hana hana, kūʻokoʻa i kekahi i kekahi, i kahi hoʻonohonoho lōʻihi o nā kuhikuhi (Intel VT-x / AMD SVM) e ʻae ai i ka hoʻokō ʻana i ka code OS malihini. PONO ma ke kaʻina hana hoʻokipa (ke kaʻe ʻana i nā ʻanuʻu waena, e like me ka hihia ma mua).
Me ka hiki ʻana mai o Intel VT-x / AMD SVM, ua hana ʻia kahi pae Ring hou kūikawā -1 (minu hoʻokahi). A i kēia manawa ke holo nei ka hypervisor ma luna, a holo ka poʻe malihini ma ka Ring 0 a loaʻa iā lākou ke komo pono i ka CPU.
ʻO kēlā mau. hope loa:
- holo ka host ma ke kani 0
- hana nā malihini ma ke kani 0
- holo ka hypervisor ma ka Ring -1
4) QEMU-KVM
Hāʻawi ʻo KVM i nā malihini i ka Ring 0 a hoʻohana iā QEMU e hoʻohālike i ka I/O (processor, disks, network, video, PCI, USB, serial ports, etc. a nā malihini e "ʻike" a hana pū me).
No laila QEMU-KVM (a i ʻole KVM-QEMU) :)
KEKAHI
PS Ua paʻi mua ʻia ka kikokikona o kēia ʻatikala ma ke kahawai Telegram
E kākau i loko o nā manaʻo kahi aʻu i maopopo ʻole ai i ke kumuhana a inā he mea e hoʻohui ai.
Alakaʻi!
Source: www.habr.com