微軟貢獻(xiàn)Linux內(nèi)核代碼,可運(yùn)行多個Windows[Linux]?
聲明:本文來自于微信公眾號OSC開源社區(qū)(ID:oschina2013),授權(quán)轉(zhuǎn)載發(fā)布。
近日微軟為了擴(kuò)展內(nèi)核支持,為 Linux 內(nèi)核提供了一系列的補(bǔ)丁,其中一個值得注意的地方是微軟為 Linux 帶來了運(yùn)行嵌套監(jiān)控程序(Hyper-V)或嵌套虛擬化的功能。
這組補(bǔ)丁是由微軟的 Linux 高級工程師 Jinank Jain 在本周三發(fā)出的,補(bǔ)丁說明如下:
該系列補(bǔ)丁計劃增加對運(yùn)行嵌套式微軟 Hypervisor(虛擬機(jī)監(jiān)控程序) 的支持。在嵌套微軟 Hypervisor 的情況下,有一些特權(quán)的 hypercalls 需要走 L0Hypervisor(在物理硬件上運(yùn)行的 Hyper-V 虛擬機(jī)監(jiān)控程序) 而不是 L1Hypervisor(在 Hyper-V <愛尬聊_知識大全>虛擬機(jī)中運(yùn)行的嵌套虛擬機(jī)監(jiān)控程序)。這個補(bǔ)丁系列基本上可以識別這樣的 hypercalls,并用嵌套的 hypercalls 替換它們。
補(bǔ)丁中包含的變化包括:
mshv: 增加對檢測嵌套的 hypervisor 的支持
hv:在嵌套 root 分區(qū)的情況下設(shè)置 synic 寄存器
hv: 增加一個接口來執(zhí)行嵌套的 hypercalls 超調(diào)用
hv: 為嵌套的 root 分區(qū)啟用 vmbus 驅(qū)動
hv, mshv : 改變嵌套 root 分區(qū)的中斷向量
Hyper-V 是 Microsoft 的硬件虛擬化產(chǎn)品。它允許你創(chuàng)建和運(yùn)行一個稱為虛擬機(jī)的計算機(jī)的軟件版本。每個虛擬機(jī)都充當(dāng)運(yùn)行操作系統(tǒng)和程序的完整計算機(jī)。當(dāng)需要計算資源時,虛擬機(jī)可讓你更靈活,并且比在物理硬件上運(yùn)行一個操作系統(tǒng)更高效地使用硬件。
而嵌套虛擬化允許用戶在一個 Hyper-V 虛擬機(jī)內(nèi)運(yùn)行 Hyper-V,與裸機(jī)相比,在虛擬機(jī)中運(yùn)行時,Hypervisor 可以顯著提高性能。可以通過使用 L0Hypervisor 提供的啟用接口,將 L1Hypervisor 優(yōu)化為在 Hyper-V VM 中運(yùn)行。
因此如果這個補(bǔ)丁能夠成功合并,那么你就可以在 Linux 中運(yùn)行一個以上的 Windows 實例,嵌套虛擬化這樣的功能通常來說是為企業(yè)設(shè)計的,絕大多數(shù)的普通用戶都用不上這樣的功能。
這個補(bǔ)丁僅有超過100行的新代碼,如果代碼審查順利的話,這個嵌套的微軟 hypervisor 支持可能會在 Linux6.2內(nèi)核周期中合并進(jìn)主線。
相關(guān)鏈接:https://lore.kernel.org/lkml/cover.1667406350.git.jinankjain@linux.microsoft.com/
