本文共 3587 字,大约阅读时间需要 11 分钟。
几个月前,微软在即将推出Windows 10时,曾透露过一个功能,当时称为InPrivate Desktop:一种轻量级虚拟机,用于在隔离环境中运行不受信任的应用程序。昨天,微软正式推出这个功能,名为Windows Sandbox。
Windows Sandbox是一种新的轻量级桌面环境,专为安全运行应用程序而量身定制。
有多少次,你下载了一个可执行文件,却不敢运行它?你是否曾经遇到过需要一个干净的Windows但又不想安装虚拟机的情况?
在微软,我们经常会遇到这些情况,因此我们开发了Windows Sandbox:一个独立的临时桌面环境,你可以在其中运行不受信任的软件,而不必担心会对你的PC产生任何影响。Windows Sandbox中安装的软件仅停留在Sandbox中,不会影响到宿主。关闭Windows Sandbox后,将永久删除所有安装的软件,包括软件相关的所有文件和状态。
Windows Sandbox具有以下特点:
使用Sandbox的先决条件:
Windows Sandbox使用了与Windows Containers相同的技术。Containers被设计为在云端运行,我们在Sandbox中采用了相同的技术,将其集成到Windows 10中,并添加了一些功能,使其更适合在设备和笔记本电脑上运行,而不需要Windows Server的全部功能。
我们所做的一些重要改进包括:
Windows Sandbox是一种轻量级虚拟机,所以需要一个操作系统镜像才能启动。我们为Windows Sandbox提供的一项重要增强功能是能够使用计算机上已经安装的Windows 10副本,而不是像普通虚拟机那样下载新的VHD镜像。
我们希望提供一个干净的环境,不过挑战在于有些操作系统文件可能会发生变化。我们的解决方案是构建“动态基础镜像”:也就是一种操作系统镜像,它包含了可以被修改的文件的干净副本,同时链接宿主主机上已存在的Windows镜像中的不可修改文件。因为大多数文件(不可变文件)是链接,所以整个操作系统镜像很小(~100MB)。我们把它叫作Windows Sandbox的“基础镜像”。
如果未安装Windows Sandbox,我们会将动态基础镜像保存在压缩包中,大小只有25MB,展开后占用大约100MB的磁盘空间。
我们同时将内存管理集成到Windows内核中。微软的Hypervisor可以将单个物理机分为多个共享相同物理硬件的虚拟机。这种方法适用于传统的服务器,但不适合资源有限的设备。我们设计了Windows Sandbox,宿主主机可以根据实际情况回收Sandbox的内存。
此外,Windows Sandbox基本上运行与宿主相同的操作系统镜像,因此我们通过“直接映射”技术让Sandbox使用与宿主操作系统一样的物理内存页。换句话说,宿主主机的ntdll可执行页被映射到Sandbox中。
微软的Hypervisor可以控制普通虚拟机中的虚拟处理器调度。但在Windows Sandbox中,我们使用了一种叫作“集成调度程序”的新技术,宿主主机可以决定何时运行Sandbox。
我们为Sandbox虚拟处理器使用了一种独特的调度策略,这种策略与调度线程的方式是一样的。宿主主机上的高优先级任务可以抢占Sandbox中不太重要的任务。使用集成调度程序的好处是宿主主机可以将Windows Sandbox作为一个进程而不是虚拟机来管理,让宿主主机的响应速度更快,类似于Linux KVM。
我们的整体目标是将Sandbox视为一个应用程序,同时具备虚拟机那样的安全性。
如上所述,Windows Sandbox使用了微软的Hypervisor。我们基本上是在运行另一个Windows副本,所以可能需要一些启动时间。为了不在每次启动Windows Sandbox时都要花很多时间启动整个操作系统,我们使用了其他两项技术,即“快照”和“克隆”。
通过使用快照,在启动一次Sandbox环境之后,将内存、CPU和设备状态保存到磁盘上。然后,当我们需要一个新的Windows Sandbox实例时,可以直接从磁盘恢复Sandbox环境,并将其放入内存,而不是重新启动它。这显著改善了Windows Sandbox的启动时间。
硬件加速渲染是带来良好用户体验的关键,特别是对于图形密集型或媒体密集型的场景来说。虚拟机与宿主是相隔离的,无法访问GPU等高级设备。因此,图形虚拟化技术(例如微软的RemoteFX)是弥合这一差距的关键,并在虚拟化环境中提供硬件加速。
最近,微软与图形生态系统合作伙伴合作,将现代图形虚拟化功能直接集成到DirectX和WDDM中,它们是Windows显示驱动程序使用的驱动程序模型。
这种图形虚拟化大致工作原理如下:
Windows Sandbox因此能够受益于硬件加速渲染,Windows可以在宿主主机和Sandbox之间动态分配图形资源,提升了运行在Windows Sandbox中的应用程序的性能和响应能力,同时改进了电池寿命(对于图像密集型的使用场景)。
要获得这些优势,你需要有一个具有兼容GPU和图形驱动程序(WDDM 2.5或更高版本)的系统,否则将使用微软的基于CPU的渲染技术在Windows Sandbox中渲染应用程序。
Windows Sandbox可以知道宿主主机的电池状态,从而进行功耗优化。这对于笔记本电脑来说至关重要,因为用户对笔记本的耗电非常敏感。
安装Windows 10 Pro或企业版build 18305或更高版本;
启用虚拟化:
Set-VMProcessor -VMName -ExposeVirtualizationExtensions $true
从“开始”菜单中找到Windows Sandbox,运行它。
从宿主操作系统复制一个可执行文件。
将可执行文件粘贴到Windows Sandbox的窗口中。
在Windows Sandbox中运行可执行文件,如果是安装程序,请继续安装。
运行应用程序并像平常一样使用它。
完成实验后,你只需关闭Windows Sandbox即可。所有Sandbox中的内容都将被丢弃并永久删除。
确认宿主操作系统中没有你在Windows Sandbox中做出的任何修改。
总体来看,Windows Sandbox结合了虚拟机和容器的元素。Sandbox和主机操作系统之间的安全边界是靠硬件强制分隔,就像虚拟机一样。而且Sandbox和VM一样有虚拟化的硬件,在磁盘上和内存中与主机共享可执行文件。
目前,Sandbox的生命周期很短暂。它会在关闭时被销毁并重置,因此变更不会在不同Sandbox运行之间持续。 Edge浏览器虚拟机的第一个版本Sandbox工作机制类似,在后续版本中,微软对其添加了将文件从虚拟机传输到主机的支持,以便可以持久存储它们。
我们期待Windows Sandbox的类似演变。
英文原文:
转载地址:http://snqtx.baihongyu.com/