几天前,我收到了英特尔微码的更新通知,并及时安装了更新。在此之前,我穿的是透明(冷)靴子。我的意思是,在启动过程中,错误的“^[k”字符串(不带引号)不会间歇性地自动生成。我所说的间歇性是指这些字符串:
- 会在一次(冷)启动期间出现,但不会在另一次启动期间出现;
- 会预先添加随机的启动文本行;
- 会在启动期间在随机文本行上自动生成不同数量的这些字符串。
当我使用以前的 Kubuntu 22.04.2 时,我没有遇到这种错误行为,但在当前的 Kubuntu 22.04.3 中却遇到了这种错误行为。我想知道最近的英特尔微码更新是否与此有关,因为我在该更新之前已经设法稳定了系统。
我已经执行了“apt-cache策略intel-microcode”并发现了以下内容。
$ apt-cache policy intel-microcode
intel-microcode:
Installed: 3.20230808.0ubuntu0.22.04.1
Candidate: 3.20230808.0ubuntu0.22.04.1
Version table:
*** 3.20230808.0ubuntu0.22.04.1 500
500 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
3.20210608.2ubuntu1 500
500 http://gb.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
由于我怀疑微码更新可能包含对于这款 Core i3 笔记本电脑来说“太新”的代码,如何将微码恢复到版本“3.20210608.2ubuntu1 500”?
答案1
要安装版本 3.20210608.2ubuntu1,请使用以下命令指定它=
:
sudo apt install intel-microcode=3.20210608.2ubuntu1
微码包包含许多不同的微码更新,这些更新适用于您的CPU,具体取决于它的型号;因此,您应用的更新不太可能对您的 CPU 而言“太新”。微代码更新也不太可能导致您所描述的症状,但按照上面的方式进行恢复将允许您确定这一点,并且您始终可以升级回最新版本。
如果你想避免恢复后的未来更新,您可以保留该包:
sudo apt-mark hold intel-microcode
答案2
我的理解是,如果内核有一个,内核只会更新微代码之后与 BIOS 相比,微代码的修订版。
如果运行dmesg|grep -i microcode
输出可以指示内核是否已更新微代码。
例如,Ubuntu 18.04 中的以下示例是 BIOS 的微代码版本比软件包中的Xeon E5 v3
版本更早,因此内核更新了微代码,如消息所示:0x49
intel-microcode
microcode updated early to revision 0x49
$ dmesg|grep -i microcode
[ 0.000000] microcode: microcode updated early to revision 0x49, date = 2021-08-11
[ 1.749574] microcode: sig=0x306f2, pf=0x1, revision=0x49
[ 1.750009] microcode: Microcode Update Driver: v2.2.
而在应用包含微代码修订的 BIOS 更新后,0x49
内核不再更新微代码:
$ dmesg|grep microcode
[ 1.750130] microcode: sig=0x306f2, pf=0x1, revision=0x49
[ 1.750515] microcode: Microcode Update Driver: v2.2.
即,在有问题的机器上,您应该能够判断内核是否实际上正在更新处理器的微代码。