CPU 微码

来自 Alpine Linux

CPU 微码 是一种控制处理器内部运作的固件形式。

在现代处理器中,微码处理复杂和高度专业化指令的执行。微码的部分也充当处理器嵌入式控制器的固件,甚至用于修复或缓解 处理器设计/实现错误/漏洞。考虑到现代处理器的复杂性,一个 CPU 可能有一百多个这样的错误。

最近,由于针对 CPU 的 侧信道攻击,微码更新已成为安全方面的强制要求。

在 Alpine 上获取微码更新

警告: 某些 Intel CPU,例如带有 PSE 错误的 Intel Atom,以及带有 TSX 错误的 Intel Haswell + Broadwell,只能通过 BIOS 或 UEFI 更新(包括微码)来修复;如果您正在使用这些 CPU 之一,请不要使用以下说明


在 Alpine Linux 上,CPU 微码通过 initrd 镜像早期加载,预制镜像可从软件包获得

要获取 AMD 处理器的微码更新包

apk add amd-ucode

要获取 Intel 处理器的微码更新包

apk add intel-ucode

如果您在典型的设置中使用 syslinux 或 grub,这些软件包将自动附加您的 extlinux.confgrub.conf 文件,并且只需重启即可运行新的微码。 使用 UEFI 内置启动管理器的用户将必须使用 efibootmgr 添加第二条 initrd 行。 同样,如果您使用 limine 引导加载器,则需要在 limine.cfg 中添加第二条 MODULE_PATH 指令,指向 ucode 文件。

验证微码镜像是否已加载

运行命令

dmesg | grep microcode

如果微码 initrd 镜像已加载,微码更新驱动程序将打印签名和修订版本

Intel 示例

[ 2.198775 ] microcode: sig=0x6fd, pf=0x80, revision=0xa4

AMD 示例

[   11.442146] microcode: Current revision: 0x0a0011d5
[   11.447027] microcode: Updated early from: 0x0a0011d3
待办事项:需要 VIA CPU 的示例,它们似乎打印略有不同。


检查 CPU 缓解措施是否工作

此命令不仅显示微码是否工作,还显示其他受影响的 CPU 漏洞

cat /sys/devices/system/cpu/vulnerabilities/*