再谈 CompactOS
距离上一次谈及 CompactOS 已经过去十年了,那还是在2015年的12月与大家分享了“HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量”。感叹时间过得可真快,很多东西都已经变了……Windows 10 都已经发布10年之久了,说到这里提醒各位距离 Windows 10 生命周期结束还剩10个月左右(Windows 10 2025年10月14日终止服务),要抓紧向新的操作系统版本迁移!!!话题回到 CompactOS,再聊起它是因为最近在测试 Windows 11 IoT Enterprise LTSC 2024(以下简称W11IoTEntLTSC2024),先看下面两幅图。
第一张图,是未启用 CompactOS 时空间占用情况,达到了 10.5GB,后者是启用了 CompactOS 的结果,仅占用了不到7GB的空间。对于结合了云端服务的现代计算设备而言,存储空间显得并不那么重要,先不说那些动辄 8~18TB 甚至更大海量存储的机械式硬盘,单固态硬盘 256GB ~ 1TB 也是常见,再高的还有 2TB ~ 4TB。既然不缺存储空间为什么还要谈 CompactOS 呢?对于 IoT 场景,通常设备存储不会太大,32GB ~ 64GB更为常见,按照 gOxiA 这个极端测试,仅配置了一个 16GB 的存储,此时操作系统的占用空间就显得尤为重要,越少的占用意味着可以留出更多空间给业务应用使用。所以,我们仍会用到 CompactOS,利用这个功能我们可以仅压缩运行操作系统所使用的文件,这些文件在运行读取操作时并不会在硬盘上进行解压缩,仅当需要进行写操作时才会从内存释放到硬盘。对于现代计算设备 CompactOS 所带来的影响是微乎其微的,甚至我们根本不会察觉到有什么变化,尤其是使用固态硬盘时!此外,根据微软官方的解释,由于压缩意味着减少读取,这将消除存储设备的负载,并提高 I/O 性能;但也意味着增加解压缩,此时 CPU 的负载将增加从而降低性能。这个特性也使 CompactOS 在具有快速 CPU 和 慢速存储 I/O 的系统上表现出可能更好的性能,当然这并不是绝对的!!! 下面是对启动过程做的评估,两台设备都是执行的全新安装,左列的设备在安装时使用应答文件启用的 CompactOS,为了确保数据的准确性,各做了三次启动数据的收集。左列设备的数据展示了在启用 CompactOS 后确实会对设备性能造成一些小的影响,启动速度慢了2秒左右,感官上确实没什么感觉!
之后对收集的 ETL 数据继续了对比,确实如官方文档所述,挺有意思!
综上,如果我们要启用 CompactOS,建议使用更快的 CPU 和更大容量更快的内存,为了确保整体的运行性能,建议首选固态硬盘!对于启用 CompactOS,到目前 Windows 11 的 24H2 版本,Windows Setup 提供的 CompactOS 参数仍只支持升级模式,全新安装模式仍不受支持!要想在全新安装时启用 CompactOS 建议通过应答文件实现,参考如下:
结束本次分享前,快速聊一下 CompactOS 所使用的压缩算法 - XPRESS4K,压缩率低但速度最快,与它一起提供的算法还有 XPRESS8K,XPRESS16K 以及 LZX。当我们要单独压缩某个程序时就可以根据实际需求执行,例如:compact /c /exe:lzx c:\program files\lobapp\lobapp.exe,对于 OEM 也可以对预装的那些只读程序文件进行压缩。
最后推荐两篇微软的官方文档供大家参考:
Compact OS, single-instancing, and image optimization | Microsoft Learn
Using Compact OS with Windows IoT Enterprise | Microsoft Learn