我想在运行 Windows 10 之前更新我的 CPU 的微码。
想法是使用 GRUB(这里是 NeoGrub 来自https://neosmart.net/wiki/easybcd/neogrub/) 来完成任务。
背景:
我为什么要这么做?我的英特尔主板上装有官方未支持的 Xeon x5470 CPU(因此 BIOS 没有可用的微码,并且由于数字签名,英特尔的 BIOS 无法修补);Windows 7 64b 运行正常,但 Windows 10 64b 无法启动(而装有 E8400 CPU 的同一台机器启动成功,因此罪魁祸首在于 CPU - 可能缺少 compareexchange128 指令,该指令可能是通过微码更新提供的)
更新:
根据 BIOS BITS,我的 X5470 具有:
- 0001067a 的签名
- 平台 ID 为 00000004
- 微码修订版 00000a0b
并且使用英特尔最新的微代码,没有任何更新,Windows 10 仍然在启动时挂起 :(
因此我确实确认该任务可以通过 BIOS BITS 完成,但不幸的是它并不能解决我的问题;可能是 BIOS 没有打开某些 CPU 功能(PAE、NX、SSE2);BIOS BITS 也应该能够做到这一点,我只需要学习如何去做......
嗯,看起来这个 CPU 没有必需的功能
ecx[13] cnpxchg16b=0
但从网络搜索我发现这是一条相当古老的指令,应该由该 CPU 提供;该 CPU 的其他用户报告它可用(http://www.cpu-world.com/cgi-bin/CompareCPUID.pl?CPUID=47075&CPUID=47071&PROCESS=Compare+selected);我可以使用 wrmsr 来打开它吗?
答案1
是的,这是可能的,但不能使用标准 grub。
请检查“BIOS BITS”项目的引导加载程序是否能正常工作。它能更新微码,然后链式加载操作系统,但这是一个非常非常先进的工具。
答案2
摘自BITS的README.txt:
- “配置菜单”包含临时重新配置系统的选项。这些选项都不会触及您的 BIOS 或永久更改您的系统配置,但它们只会覆盖当前启动的配置。
因此,您确实可以加载微码,但显然仅适用于单个启动会话!