云固件通常使用VHD(x)作为标准的镜像格式,但制作的方法和微软提供的VHD(x)镜像格式制作过程有很大的不同。
具体差异主要表现在微软要求的本地启动VHD镜像使用位于VHD(x)文件之外的引导管理器(Boot Loader),而云固件使用VHD(x)镜像文件内ESP分区内的引导管理器。因此,云固件使用的VHD(x)镜像文件是可以作为虚拟机的磁盘启动的,但微软要求的本地启动VHD(x)镜像是无法启动,原因是缺少ESP分区。
VHD(x)镜像格式支持Fixed、Dynamic、Difference三种模式,其中Difference模式(差分模式)可以生成父子镜像,提供了快照、回滚等多种高级功能,云固件充分利用了这些能力来方便用户。
云固件提供了标准镜像文件,使用VHDx动态格式,容量为256G,区块大小为默认值;分区使用GPT格式。
云固件支持差分格式的磁盘镜像格式,为了让制作的镜像文件能够得到最大化的利用,云固件提出了如下分层规范:
- 分层按照L0-L9来定义;
- 高层级镜像原则上要求包含低层级全部镜像内容;
- 除L0级别外,每个层级均可以生成差分级别;
- 同层级的差分镜像使用层级加两位数的顺序号来区分,如301,305,501,511等;
根据分层规范要求,约定各层级的具体要求。
L0层为待安装操作系统层,仅对Windows系列有效。 使用GPT格式进行磁盘分区; 可通过dism命令将wim文件展开到系统分区,使用bcdboot添加引导文件;亦可通过Windows安装程序在虚拟机内进行部署至待重启为止。
本层为基本安装层。 Windows系统或者Linux执行基本安装过程,安装期间断开网络,防止自动更新; 用户名me,无密码或者有密码统一为“[email protected]”,不包含引号部分;
L2层为完善驱动层。 本层在L1的基础上,安装完善宿主机需要的全部驱动程序,包括自动更新驱动的服务程序,如Thinkpad的System Updater、NUC上的Intel® Driver & Support Assistant (Intel® DSA)等。
对于DIY主机,由于独立显卡的差异,本层会分化出一个L2.5层,满足针对N卡、A卡、I卡(Intel Arc系列独立显卡)一次性部署需求。
针对Linux系统,也需更新包括集成显卡、独立显卡、网卡等驱动程序。
L3层为系统更新层。 本层执行系统非跨版本更新,更新时限为制作时。如Windows 10 1809,不可跨版本升级到1903版本。
L4层为系统激活层。 用户根据自身需要使用企业内部KMS服务器激活Windows系统。 默认激活服务器为KMS.local。 用户也可以在本层使用sysprep更新用户设置信息。
L5到L9层为用户自定义层。 用户可以在本层安装用户所需的应用程序或者数据文件,比如Microsoft Office、电子邮件客户端、开发工具等。 用户也可以在这些层级上定义不同目的镜像分层。
本规范要求的分层约定能满足常见系统的使用要求,但并非所有系统均能满足这些约定,因此本约定为建议规范。 一些常见的例外情况如下:
- 品牌PC厂商通常会提供OEM激活的Windows Home版操作系统。Windows Home版的系统镜像部署后,会立即满足激活条件,用户可在L2层上即可看到Windows系统已经被激活。
- Windows系统在L4层的激活过程,由于很多企业并未购买KMS服务,但还是存在L5-L9层的应用环境需求,所以提供这类镜像时,必须要镜像的说明文件中明确系统未激活,或者使用180天试用激活。
- Linux系统不存在Windows系统的释放过程,但很多安装ISO镜像文件提供LiveCD的体验环境,因此,Linux系统可封装出L0层级的可启动ISO镜像环境。本层级无法被后续更高层级继承。