笔者这几天在制作 Windows Server 2022 OVF 的时候,发现镜像在 ESXi 上明明运行良好,部署到 Fusion 或者 Workstation 上就蓝屏无法启动了,多次搜索蓝屏报错提示才找到问题所在。
现象描述
具体是这样的,通过 vCenter(本例为 vSphere 7.0 U2)导出的虚机,使用标准 ovf 配置,默认不会导出扩展属性(后来对比分析得出),导出的虚机在 Fusion 或者 Workstation 上无法启动,蓝屏报错:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED。
而同样的虚机通过 ESXi host Client 导出,默认包含了所有扩展属性 (sysin),导出的虚机在 Fusion 或者 Workstation 上可以正常运行。
原因
在目前版本的 Fusion 12.1 或者 Workstation 16.1 上默认没有启动 High Precision Event Timer (HPET),中文直译为高精度事件定时器,在 ESXi 7.0 中默认启用,而新版的 Windows 10 需要此功能。具体从何版本未验证,相关文档显示 Windows 10 1809 开始需要此功能,但是 Windows 2019 基于 1809 没有此问题,Windows 2022 基于 21H2 存在该问题。如有了解真相的读者还望留言告知,先谢过😄。
HPET 是什么?(下面是 网上摘抄 的,看起来有点玄乎。)
HPET(High Precision Event Timer, 高精度时钟),是 Intel 和微软为了替换之前 PIT 或 RTC(都可以当定时器用的一个东西)所设计的一个硬件。它由一个主的计数器和比较器组成 (sysin),计数器一般是 64 位的,比较器至少有 3 个最多 32 个(这个我没考察过,只是翻译),通常比较器是 32 位或 64 位的。HPET 通过内存映射 IO 来操作,内存的基地址可以从 ACPI 中找到。
解决方案
编辑虚机 vmx 加入:hpet0.present=true
或者在 OVF 中加入如下配置:
1 | <vmw:ExtraConfig ovf:required="false" vmw:key="hpet0.present" vmw:value="TRUE"/> |
提示:ovftool 中需要使用 --ExtraConfig 参数启用该项配置。
未来展望:新版的 Fusion 和 Workstation 可能会更改默认启用 HPET。
目前非微软系统都没有该项要求。
搜索到的参考文章
-
微软 蓝屏错误疑难解答
-
VMware Workstation: Downloaded ovf template does not boot: SYSTEM THREAD EXCEPTION NOT HANDLED
-
类似解决方案,问题本身无关,但是解释了相同的原因:Windows 10 1809 desktops experience performance issues and may become “Agent Unreachable” state if the High Precision Event Timer (HPET) is disabled. (67175)
下载仅供下载体验和测试学习,不得商用和正当使用。
下载体验