Ke kūkulu nei ka papahana NetBSD i kahi hypervisor NVMM hou

Nā mea hoʻomohala papahana NetBSD kūkala ʻia e pili ana i ka hana ʻana i kahi hypervisor hou a me ka hoʻopili virtualization e pili ana, i hoʻokomo ʻia i loko o ka lālā hoʻokolohua NetBSD-i kēia manawa a e hāʻawi ʻia i ka hoʻokuʻu paʻa o NetBSD 9. Ua kaupalena ʻia ʻo NVMM i ke kākoʻo ʻana i ka hoʻolālā x86_64 a hāʻawi i ʻelua backends no hiki i nā mīkini virtualization hardware: x86-SVM me ke kākoʻo no ka AMD a me x86-VMX CPU hoʻonui virtualization no nā CPU Intel. Ma kona ʻano i kēia manawa, hiki ke holo i nā mīkini virtual 128 ma hoʻokahi host, hiki ke hoʻokaʻawale ʻia kēlā me kēia i 256 virtual processor cores (VCPU) a me 128 GB o RAM.

Loaʻa i ka NVMM kahi mea hoʻokele e holo ana ma ka pae kernel ʻōnaehana a hoʻonohonoho i ke komo ʻana i nā mīkini virtualization hardware, a me kahi waihona Libnvmm e holo ana ma kahi o ka mea hoʻohana. Hana ʻia ka pilina ma waena o nā ʻāpana kernel a me ka wahi hoʻohana ma o IOCTL. ʻO kahi hiʻohiʻona o NVMM e hoʻokaʻawale iā ia mai nā hypervisors e like me KVM HAXM a ʻo Bhyve, aia ma ka pae kernel wale nō ka hana liʻiliʻi i koi ʻia e pili ana i nā mīkini virtualization hardware, a ua hoʻoneʻe ʻia nā code emulation hardware āpau mai ka kernel i loko o kahi mea hoʻohana. ʻO kēia ala e hiki ai iā ʻoe ke hōʻemi i ka nui o nā code i hoʻokō ʻia me nā pono kiʻekiʻe a hōʻemi i ka pilikia o ka hoʻololi ʻana i ka ʻōnaehana holoʻokoʻa i ka wā o ka hoʻouka ʻana i nā nāwaliwali i ka hypervisor. Eia kekahi, ʻike ʻia ka maʻalahi o ka debugging a me ka hoʻāʻo fuzzing o ka papahana.

Eia naʻe, ʻaʻole i loko o Libnvmm nā hana emulator, akā hāʻawi wale i kahi API e hiki ai iā ʻoe ke hoʻohui i ke kākoʻo NVMM i nā emulators e loaʻa nei, no ka laʻana, QEMU. Hoʻopili ka API i nā hana e like me ka hana ʻana a me ka hoʻokuʻu ʻana i kahi mīkini virtual, ka hoʻokaʻawale ʻana i ka hoʻomanaʻo i ka ʻōnaehana malihini, a me ka hoʻokaʻawale ʻana i nā VCPU. No ka hoʻomaikaʻi ʻana i ka palekana a me ka hōʻemi ʻana i nā vectors hoʻouka ʻia, hāʻawi ʻo libnvmm i nā hana i noi maopopo ʻia - ma ke ʻano maʻamau, ʻaʻole kāhea ʻia nā mea paʻa paʻakikī a ʻaʻole hiki ke hoʻohana ʻia inā hiki ke pale ʻia. Hoʻāʻo ʻo NVMM e mālama i nā mea maʻalahi, me ka ʻole o ka paʻakikī, a e ʻae iā ʻoe e hoʻomalu i nā ʻano he nui o kāu hana.

Ke kūkulu nei ka papahana NetBSD i kahi hypervisor NVMM hou

Hoʻopili paʻa ʻia ka ʻāpana kernel-level o NVMM me ka kernel NetBSD, a hiki i ka hoʻomaikaʻi ʻana i ka hana ma o ka hoʻemi ʻana i ka helu o nā hoʻololi pōʻaiapili ma waena o ka OS malihini a me ka puni hoʻokipa. Ma ka ʻaoʻao ākea o ka mea hoʻohana, hoʻāʻo ʻo libnvmm e hōʻuluʻulu i nā hana I/O maʻamau a pale i ka hana ʻana i nā kelepona ʻōnaehana me ka pono ʻole. Hoʻokumu ʻia ka ʻōnaehana hoʻomanaʻo hoʻomanaʻo ma ka subsystem pmap, kahi e hiki ai iā ʻoe ke kipaku i nā ʻaoʻao hoʻomanaʻo malihini i ka ʻāpana swap inā pilikia ka hoʻomanaʻo i ka ʻōnaehana. Loaʻa ka NVMM i nā laka honua a me nā unahi maikaʻi, e ʻae iā ʻoe e hoʻohana i nā cores CPU like ʻole e holo i nā mīkini virtual malihini.

Ua hoʻomākaukau ʻia kahi hoʻonā QEMU e hoʻohana ana i ka NVMM e hiki ai i nā mīkini virtualization hardware. Ke hoʻomaka nei ka hana e hoʻokomo i nā ʻāpana i hoʻomākaukau ʻia i loko o ke ʻano nui o QEMU. Aia ka hui QEMU+NVMM Ua apono holo maikaʻi nā ʻōnaehana malihini me FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 a me nā OS ʻē aʻe ma nā ʻōnaehana x86_64 me nā kaʻina hana AMD a me Intel (ʻaʻole pili ʻia ʻo NVMM i kahi hoʻolālā kikoʻī, no ka laʻana, inā hana ʻia ka backend kūpono. , hiki iā ia ke hana ma nā ʻōnaehana ARM64). Ma waena o nā wahi o ka noi hou ʻana o NVMM, ʻike pū ʻia ka hoʻokaʻawale ʻana o ka sandbox o nā noi pākahi.

Ke kūkulu nei ka papahana NetBSD i kahi hypervisor NVMM hou

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka