讨论更新BIOS中的微码

您所在的位置:网站首页 华硕bios更新有什么用 讨论更新BIOS中的微码

讨论更新BIOS中的微码

2023-08-10 16:06| 来源: 网络整理| 查看: 265

摘要:CPU的微码少有人知,其负责为CPU提供一系列重要的支持功能、硬件的勘误以及安全缓解措施。在现代系统中,通常CPU的微码可以由系统补丁提供软升级,但通常版本较老(linux系统可以提供接近最新的版本,前提是你经常检查更新);但依然有少数不信邪的geek选择通过修改BIOS来获得更多的好处:更加现代的微码版本、以及魔改主板以支持额外的CPU。本文将以实际操作为主线,整合关于获取最新微码、修改BIOS的细节知识,试图在中文互联网上为各位提供一些有用的信息。

关键词:微码 (Microcode), BIOS, 魔改 (Mod), 神舟(Hasee), 蓝天 (Clevo), 准系统 (Bare System), K680e-g6d1, W650KK, W650KJ_KK

前言

相信通过百度来到这里的人已经了解过CPU的微码(Microcode)是什么以及有什么用了,在此我就不做过多阐述。不了解但仍有兴趣继续阅读的(大可不必,乱搞会把电脑变砖),可以看看Intel的介绍:

About

The Intel Processor Microcode Update (MCU) Package provides a mechanism to release updates for security advisories and functional issues, including errata. In addition, MCUs are responsible for starting the SGX enclave (on processors that support the SGX feature), implementing complex behaviors (such as assists), and more. The preferred method to apply MCUs is using the system BIOS. For a subset of Intel's processors, the MCU can also be updated at runtime using the operating system. The Intel Microcode Package shared here contains updates for those processors that support OS loading of MCUs.

Why update the microcode?

Updating your microcode can help to mitigate certain potential security vulnerabilities in CPUs as well as address certain functional issues that could, for example, result in unpredictable system behavior such as hangs, crashes, unexpected reboots, data errors, etc. [1]

需要提醒的是,有些人可能会不希望因漏洞缓解补丁而受到性能损失,在此我想发表如下暴论:

漏洞缓解补丁切实地修复了可能引起确切安全隐患的重大漏洞,而在中文互联网上很少有人提到过的是,Intel官方制作的漏洞缓解补丁仍在以每年数个的版本迭代升级,在一定程度上减少了对性能的影响。大可不必以最大的恶意揣测这些措施吃掉了你的大量性能。关于这一点的讨论及实测数据可以在参考链接中看到。[2]

对于较新的硬件(2019年后的产品),部分上述缓解措施可能已经硬编码入了CPU的逻辑电路,或内嵌进了BIOS中。在这种情况下,通过操作系统关闭缓解措施也许无法得到足够显著的性能提升。仅当缓解措施完全由操作系统及软微码更新应用时,关闭缓解措施才能达到宣传中最大的性能提升。

关于关闭缓解措施的方法,对于Windows平台可见参考链接中的内容,对于linux……发行版太多,百度一下都有,就不加赘述了。[3]

前面bb了一堆,真正的干货其实只在后面三两个链接和图片里,无非是搜集信息的能力而已。

如何获得最新的微码文件

(我只用到了Intel的微码,不放出来AMD、VIA、Freescale的……不过分吧?)

虽然说硬件厂商会警告说乱用最新的微码有可能会导致兼容性问题,但在我看来这玩意绝大多数情况下是向后兼容的,既然你都能刷BIOS了,总不会不会编程器救BIOS吧,不会吧不会吧……

方法有如下2种:

1.提取自Linux的更新包【推荐】

此方法提取的是受到过大量用户测试的最新版本,无脑用不会有大问题。

百度关键词:debian microcode

找到软件包下载并解压下个MCExtractor用-mass参数批量解析解压之后的微码

解析后,最新的微码就会以命名好的方式存在\MC Extractor v1.73.0 r218\Extracted\Intel目录里了。

2.直接从大佬platomav的储存库里拿

github.com/platomav/CPUMicrocodes/

最新肯定是最新,没有比这个新的了,敢不敢用就不是我的事情了。以CPU906EA为例,20220207的linux包里(以及[1]中Intel官方的微码库里),最新版微码版本为cpu906EA_plat22_ver000000EC_2021-04-28_PRD_9C25B317.bin;但这个老哥库里最新的是cpu906EA_plat22_ver000000F0_2021-11-15_PRD_971C6BF2.bin。你说邪门不邪门?劝你善良。

打心眼里佩服这老哥,是钻研固件的汇编大佬,瑞思拜。

前面得到了几十个天书一样的文件。聪明的人早就发现了微码以CPUID区分,那么如何知道自己的CPU是什么呢?

官方说的很明白了[4],你装个软件就行

替换BIOS里的微码

这个嘛,每个人BIOS的公司不一样,大体用UEFITools是都可以的,我的AMI Aptio 5的BIOS,有方便的工具肯定是方便着来了。你要是不知道你的BIOS生产商,首先建议停下阅读左转动画区,误导小白把电脑刷成砖的每一步都是罪过……

工具:mmtool64.exe (MMTOOL 5.2.0.25)

说重点:先删掉全部微码再放新的进去,没修改过的版本也要导出-删除-插入,没删干净就插会导致什么什么size error。

最后另存为保存新文件就好了

关于刷入BIOS的部分会在后面发新的文章,累死我了写这玩意……

参考链接:

[1]https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files#readme

[2]https://www.win-raid.com/t3355f47-Intel-AMD-VIA-amp-Freescale-CPU-Microcode-Repositories-Discussion-45.html#msg151267

[3]https://support.microsoft.com/en-us/topic/windows-client-guidance-for-it-pros-to-protect-against-speculative-execution-side-channel-vulnerabilities-35820a8a-ae13-1299-88cc-357f104f5b11

[4]https://www.intel.cn/content/www/cn/zh/support/articles/000055672/processors.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3