運用 Windows Sandbox 打造容器輕量級桌面環境

Windows10自帶Linux子系統(WSL,Windows Subsystem for Linux)後,微軟又推出了一種新的輕量級桌面環境 Windows Sandbox,專為安全運行應用程序而量身定製。

你有多少次下載了一個可執行文件,卻害怕運行它?您是否曾經遇到過需要徹底安裝Windows 但又不想設置虛擬機的情況?

在Microsoft,我們經常遇到這些情況,因此微軟開發了 Windows Sandbox:一個獨立的臨時桌面環境,您可以在其中運行不受信任的軟件,而不必擔心會對您的PC 產生持久影響。Windows Sandbox 中安裝的任何軟件僅保留在沙箱中,不會影響您的主機。Windows Sandbox 關閉後,將永久刪除包含其所有文件和狀態的所有軟件。

Windows Sandbox 具有以下屬性:

Windows 原生功能 - 此功能所需的一切都隨Windows 10 Pro 和Enterprise 一起提供。無需下載VHD!

純淨 - 每次Windows Sandbox 運行時,它都像Windows 的全新安裝一樣乾淨

一次性 - 設備上沒有任何東西; 關閉應用程序後,一切都將被丟棄

安全 - 使用基於硬件的虛擬化進行內核隔離,後者依靠Microsoft 的虛擬機管理程序運行單獨的內核,將Windows Sandbox 與主機隔離開來

高效 - 使用集成的內核調度程序,智能內存管理和虛擬GPU


使用該功能的先決條件

  • Windows 10 Pro 或Enterprise Insider 內部版本18305 或更高版本
  • AMD64 架構
  • 在BIOS 中啟用虛擬化功能
  • 至少4GB 的RAM(推薦8GB)
  • 至少1 GB 的可用磁盤空間(建議使用SSD)
  • 至少2 個CPU 核心(建議使用4 個超線程核心)


快速開始

  • 安裝Windows 10 預覽版18305 (專業版 或 企業版)
  • 啟用虛擬化:
  • 如果您使用的是物理機,請確保在BIOS 中啟用了虛擬化功能。
  • 如果您使用的是虛擬機,請使用此PowerShell cmdlet 啟用嵌套虛擬化:Set-VMProcessor -VMName -ExposeVirtualizationExtensions $ true
  • 打開Windows 功能,然後選擇Windows Sandbox。選擇“ 確定” 以安裝Windows Sandbox。系統可能會要求您重新啟動計算機。


運用 Windows Sandbox 打造容器輕量級桌面環境


  • 使用“ 開始” 菜單,找到Windows Sandbox,運行它並允許提權
  • 從主機複製可執行文件
  • 將可執行文件粘貼到Windows Sandbox 的窗口中(在Windows 桌面上)
  • 在Windows Sandbox 中運行可執行文件; 如果是安裝程序,請繼續安裝
  • 運行應用程序並像平常一樣使用它
  • 完成實驗後,您只需關閉Windows Sandbox 應用程序即可。所有沙盒內容都將被丟棄並永久刪除
  • 確認主機沒有您在Windows Sandbox 中進行的任何修改



運用 Windows Sandbox 打造容器輕量級桌面環境


Windows Sandbox 遵循宿主機的數據設置。所有其他隱私設置都設置為其默認值。

Windows Sandbox 技術詳解

Windows Sandbox 構建於 Windows 容器技術之上。Window容器最初的設計是為應用在雲中運行。Windows Sandbox採用了該技術,增加了與Windows 10 的集成,並構建了一些功能,使其更適合在PC和筆記本電腦上運行,而無需Windows Server 的全部功能。

微軟所做的一些重要改進包括:

  • 動態生成的圖像

Windows Sandbox 的核心是一個輕量級虛擬機,因此需要一個操作系統鏡像才能啟動。Windows Sandbox的一項重要增強功能是能夠使用計算機上安裝的Windows 10 副本,而不是像使用普通虛擬機那樣下載新的VHD 映像。

我們希望始終呈現一個乾淨的環境,但挑戰在於某些操作系統文件可能會發生變化。Sandbox的解決方案是構建稱之為“動態基本映像” 的操作系統映像:具有可以更改的文件的乾淨副本的操作系統映像,但鏈接到主機上已存在的Windows 映像中無法更改的文件。大多數文件是

鏈接(不可變文件),這就是完整操作系統的小尺寸(~100MB)的原因。我們使用Windows 容器術語將此實例稱為Windows Sandbox 的“基本映像”。

如果未安裝Windows Sandbox,我們會將動態基本映像保存在僅 25MB 的壓縮包中。安裝動態基礎包時,它佔用大約100MB 的磁盤空間。


運用 Windows Sandbox 打造容器輕量級桌面環境


  • 智能內存管理

內存管理是Sandbox與Windows 內核集成的另一個領域。Microsoft 的虛擬機管理程序允許將單個物理機器劃分為多個共享相同物理硬件的虛擬機。雖然這種方法適用於傳統的服務器工作負載,但它不適合運行資源有限的設備。微軟設計了Windows Sandbox,以便主機可以根據需要從沙盒中回收內存。

此外,由於Windows Sandbox 基本上運行與主機相同的操作系統映像,因此還允許Windows Sandbox通過稱為“直接映射” 的技術使用與操作系統二進制文件的主機相同的物理內存頁面。換句話說,ntdll 的相同可執行頁面將映射到主機上的沙箱中。Windows Sandbox確保以安全的方式完成這項工作,並且不會分享任何涉密內容。


運用 Windows Sandbox 打造容器輕量級桌面環境


  • 集成內核調度程序

使用普通虛擬機,Microsoft 的虛擬機管理程序可控制在VM 中運行的虛擬處理器的調度。但是,對於Windows Sandbox,使用稱為“集成調度程序” 的新技術,該技術允許主機決定何時運行沙箱。

Windows Sandbox採用了一種獨特的調度策略,該策略允許以與為進程調度線程相同的方式調度沙箱的虛擬處理器。主機上的高優先級任務可以搶佔沙箱中不太重要的工作。使用集成調度程序的好處是,主機將Windows Sandbox 作為一個進程而不是虛擬機來管理,從而產生響應速度更快的主機,類似於 Linux KVM。

這裡的整個目標是將Sandbox 視為應用程序,但具有虛擬機的安全保障。

  • 快照和克隆

如上所述,Windows Sandbox 使用Microsoft 的虛擬機管理程序。如果我們需要運行一個Windows副本,可能需要一些時間來啟動副本。因此,不是每次啟動Windows Sandbox 時都佔用使用沙盒操作系統的全部資源,而是使用其他兩種技術; “快照” 和“克隆”。

快照允許我們一次啟動沙盒環境並將內存,CPU 和設備狀態保存到磁盤。然後,當我們需要一個新的Windows Sandbox 實例時,我們可以從磁盤恢復沙箱環境並將其放入內存而不是啟動它。這明顯減少了Windows Sandbox 的啟動時間。

  • 圖形虛擬化

硬件加速渲染是快速穩定的響應用戶體驗的關鍵,特別是對於圖形密集型或媒體密集型用例。但是,虛擬機與其主機隔離,無法訪問GPU 等高級設備。因此,圖形虛擬化技術的作用是彌合這一差距,並在虛擬化環境中提供硬件加速; 例如 Microsoft RemoteFX。

最近,Microsoft 與它的圖形生態系統合作伙伴合作,將現代圖形虛擬化功能直接集成到DirectX 和WDDM 中,這是Windows 上顯示驅動程序使用的驅動程序模型。

從較高層面來看,這種形式的圖形虛擬化的工作原理如下:

  • 在Hyper-V VM 中運行的應用程序正常使用圖形API。
  • VM 中的圖形組件(已被開啟以支持虛擬化)在VM 邊界與主機協調以執行圖形工作負載。
  • 主機在VM 中的應用程序之間分配和調度圖形資源以及本機運行的應用程序。從概念上講,它們表現為一個圖形客戶端池。


此過程如下所示:


運用 Windows Sandbox 打造容器輕量級桌面環境


這使Windows Sandbox VM 能夠受益於硬件加速渲染,Windows 可以在主機和來賓之間動態分配圖形資源。其結果是提高了Windows Sandbox 中運行的應用程序的性能和響應能力,並提高了圖形密集用例的電池壽命。

要利用這些優勢,您需要一個具有兼容GPU 和圖形驅動程序(WDDM 2.5 或更高版本)的系統。不兼容的系統將使用Microsoft 的基於CPU 的渲染技術在Windows Sandbox 中呈現應用程序。

  • 電池直通

Windows Sandbox 還了解主機的電池狀態,從而可以優化功耗。這對於將用於筆記本電腦的技術至關重要,因為不浪費電池對用戶來說非常重要。


分享到:


相關文章: