HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量
gOxiA 今天要与大家分享的内容与 Windows 10 系统文件占用的磁盘容量有关,虽然现在大容量硬盘已经相当普及,但是对于那些使用小容量固态硬盘的设备来说,能够在尽可能以最小性能牺牲的前提下,减少系统文件占用的磁盘空间还是显得相当的有价值!尤其对于 OEM 设备,过去 OEM 厂商需要占用 4G 左右的空间来存储用于系统恢复的映像文件,而现在微软在全新的 Windows 10 上进行了改进,在执行系统恢复重置时已不再需要系统映像,也就是无需在设备上单独存储一份 WIM 格式的系统映像,即使当前系统损坏程度已经相当严重,当然我们仍旧可以创建一份系统备份,以确保在系统无法成功恢复重置设备时,能够有效的将设备重置为原始状态。
前面所讲的仅仅是 Windows 10 的新特性之一,而本文的主角则是 Windows 10 的 CompactOS 功能,这一功能被微软官方解释为 WIMBOOT 的进化,WIMBOOT 的相关介绍可以参考 gOxiA 之前的文章《Windows 8.1 Update WIMBoot 概述》或在本站搜索 WIMBoot,了解 WIMBoot 的朋友应该知道 WIMBoot 利用了文件指针将当前安装的系统文件重定向到恢复映像中,这对于小容量存储(16 - 32GB)的 OEM 设备来说将大大降低整体磁盘的占有量,但是随着系统或预装应用的不断更新,WIMBoot 就会显得力不从心。而 CompactOS 则利用 Windows 10 高效的压缩算法,压缩系统二进制文件,可在32位系统上回收 1.5GB 和 64位系统上回收 2.6GB 的磁盘容量。再结合前面所讲的无需系统映像进行系统恢复重置的新特性,最终可有效回收 6.6GB 磁盘容量。
Windows 10 的 CompactOS 功能在应用上非常灵活,我们可以在执行 Windows 安装时就启用 CompactOS 功能。利用 Windows ADK 的 ICD(Windows Imaging and Configuration Designer)组件可以创建启用 CompactOS 的安装盘。
step.1 创建一个“New Windows image customization”项目,选择基于 WIM 文件,之后选择 对应的 SKU
step.2 创建生产介质,选择 WIM 格式,接下来的一步非常重要,务必勾选“Enable Compact OS” 的“Yes” 选择,最后根据需要直接创建 U盘或存储到一个目录。
如果觉得使用 ICD 太复杂,可以使用 WSIM(Windows System Image Manager)创建一个应答文件(unattend.xml),启用设置“Microsoft-Windows-Setup\ImageInstall\OSImage\Compact”。
还觉得复杂,那可以在安装的时候手工执行 setup.exe 命令,并附加“/compactos enable” 参数,需要注意这一方式仅限于升级模式下使用。
还无法满足?!那就手工安装吧,找个 Windows 10 安装盘(Build 10586),使用 DISM 命令应用映像,命令行参考如下:
对于使用 MDT 批量部署的用户,需要修改 LTIApply.wsf 文件,参考如下(高亮部分即增加的内容):
' Apply the image
sCmd = " /Apply-Image /ImageFile:""" & sImagePath & """"
If sRWMPath <> "" then
sCmd = sCmd & " /SWMFile:""" & sRWMPath & """"
End if
If sSWMPath <> "" then
sCmd = sCmd & " /SWMFile:""" & sSWMPath & """"
End if
sCmd = sCmd & " /Index:" & sImageIndex & " /ApplyDir:" & sDestinationDrive
If UCase(oEnvironment.Item("OSDCompact")) = “TRUE” then
sCmd = sCmd & " /Compact:ON"
End if
具体可参考 Michael Niehaus 的博客文章《Windows: Reducing the disk footprint》。当然 CompactOS 的灵活之处还不局限与上面所述的几个方法,除了可以在安装时启用这一功能外,还支持在已有系统上启用或关闭该功能。执行下面的命令行可查询当前系统是否启用了 CompactOS。
也可以附加“always 或 never”参数在当前系统上启用或关闭 CompactOS。