有台神舟 A360-i3 D1 笔记本,准系统 H33Y(UMA) / intel HM55 芯片组。曾经陪着度过帝都的漂泊生活,一直运行 Win8.0。上网,看视频,刷网站一直正常。在 Win8 结束支持后打算升级到Win 10,无论下载哪个版本的 Win10 安装镜像都无法成功安装 Win10 不是蓝屏,就是自动关机 :) 一直等待修复这个问题,然鹅没有结果。

        今年初翻出它来,Win8 用起来各种老旧。还是升级到 Win10,再战到 Win10 2025 结束支持前。

        好,不多说。

        解决这个问题之前先来看原因。

        准备工具 windbg 。使用 bcdedit 配置 Win10 安装盘为 debug 模式。当 windbg 连接到安装环境,可以看到发生如下输出后关机

蓝天准系统备份bios 蓝天准系统zen3_蓝天准系统备份bios

        "Above critical temperature(_TMP 3232, _CRT 2732). Shutdown initiated"
        从字面可以看到,windows 认为当前系统温度已经超过临界紧急温度,因此ACPI 驱动发出了紧急关机事件,所以无法进行到安装界面。
        然后是 balabalabala 的 debug,出问题部分贴见下图。

蓝天准系统备份bios 蓝天准系统zen3_蓝天准系统备份bios_02

        Windows 开发文档中有规定,EC 的 _REG 模块未被正确调用前,禁止访问 EC 寄存器。这里可以看到 _REG 模块中只是简单将 ECFL 设定一个值,表示是否能访问 EC 寄存器。
        从 windbg 中观察到 THRM._CRT 模块在 EC0._REG 之前被调用,由于此时 EC0._REG 未调用而不满足访问条件,_SB.TCRT 未被赋值,直接返回到 ACPI 驱动中为 0 值。导致关机发生。

        这里假定 _CRT _TMP 并不需要由 EC 访问保护,看起来也是如此。

        有尝试修改 BIOS 文件来修正它,但 BIOS 中 ACPI 部分,看起来是压缩过的,没能成功处理。嘿嘿,但作为一只图吧垃圾佬整个 MBR 神马的,还是很轻松嘛,所以做一个小的引导程序来修正它。这里简单的将 ECFL 初值设置为 1,即可正常的安装 Windows 10

蓝天准系统备份bios 蓝天准系统zen3_蓝天准系统备份bios_03


        注意: 没有充分的测试环境,这台 A360 BIOS 为 205 版本,内存为 8G ,另修改引导磁盘的 MBR,可能会引起反病毒软件提示。这里 windows 防火墙没有任何警告。

        如何找到 DSDT 表可以参考

        https://wiki.osdev.org/Category:ACPI       

        如果对你有所帮助,资源中可以下载到源代码