错误信息提示需要检查:
看https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html更多细节。
但我不太确定如何解决这个问题。
我查看了 /etc/default/intel-microcode 并发现了以下内容:
# Configuration script for intel-microcode version 3
#
# initramfs helper
#
# Set this to "no" to disable automatic microcode updates on boot;
# Set this to "auto" to use early initramfs mode automatically (default);
# Set this to "early" to always attempt to create an early initramfs;
# IUCODE_TOOL_INITRAMFS=auto
# Set this to "yes" (default) to use "iucode_tool --scan-system" to reduce
# the initramfs size bloat, by detecting which Intel processors are active
# in this system, and installing only their microcodes.
#
# Set this to "no" to either include all microcodes, or only the microcodes
# selected through the use of IUCODE_TOOL_EXTRA_OPTIONS below.
#
# WARNING: including all microcodes will increase initramfs size greatly.
# This can cause boot issues if the initramfs is already large.
# IUCODE_TOOL_SCANCPUS=yes
# Extra options to pass to iucode_tool, useful to forbid or to
# force the inclusion of microcode for specific processor signatures.
# See iucode_tool(8) for details.
#IUCODE_TOOL_EXTRA_OPTIONS=""
我将其改为:
# Configuration script for intel-microcode version 3
#
# initramfs helper
#
# Set this to "no" to disable automatic microcode updates on boot;
# Set this to "auto" to use early initramfs mode automatically (default);
# Set this to "early" to always attempt to create an early initramfs;
IUCODE_TOOL_INITRAMFS=auto
# Set this to "yes" (default) to use "iucode_tool --scan-system" to reduce
# the initramfs size bloat, by detecting which Intel processors are active
# in this system, and installing only their microcodes.
#
# Set this to "no" to either include all microcodes, or only the microcodes
# selected through the use of IUCODE_TOOL_EXTRA_OPTIONS below.
#
# WARNING: including all microcodes will increase initramfs size greatly.
# This can cause boot issues if the initramfs is already large.
IUCODE_TOOL_SCANCPUS=yes
# Extra options to pass to iucode_tool, useful to forbid or to
# force the inclusion of microcode for specific processor signatures.
# See iucode_tool(8) for details.
#IUCODE_TOOL_EXTRA_OPTIONS=""
之前,我在 BIOS 中关闭了超线程,并且还将 /etc/default/grub 中的设置更改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash maxcpus=6"
因为我的机器上有六个物理 CPU。
答案1
笔记/etc/default/intel-microcode
:撤消先前对和的编辑/etc/default/grub
。
内核命令行上的缓解控制
内核命令行允许使用选项“mds=”在启动时控制 MDS 缓解措施。此选项的有效参数为:
full
如果 CPU 存在漏洞,请启用所有可用的 MDS 漏洞缓解措施,在退出用户空间和进入虚拟机时清除 CPU 缓冲区。如果启用了 SMT,空闲转换也会受到保护。
它不会自动禁用 SMT。
full,nosmt
与 mds=full 相同,在易受攻击的 CPU 上禁用 SMT。这是完整的缓解措施。
off
完全禁用 MDS 缓解措施。
sudo -H gedit /etc/default/grub
改变:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mds=full,nosmt"
保存文件并退出gedit
。
sudo update-grub
reboot
注意:请理解,在多 CPU 或多核配置下,性能会受到巨大影响。
注意:如果性能下降太大,请mds=full
尝试mds=full,nosmt
。
答案2
根据英特尔安全顾问公告为了缓解此问题,您应该更新 CPU 微码。此漏洞已于 20190514 修复更新微码。您可以使用命令检查系统中安装微码的软件包的当前版本dpkg -s intel-microcode
。如果它的数字更大,那么你没问题。
还要将 BIOS 更新到最新版本,但此步骤特定于供应商。您可以在英特尔网站上查看多家供应商的建议这里。
在某些情况下,这两个步骤结合起来应该可以缓解此漏洞。但如果输出dmesg | grep 'data leak'
仍然显示有关“MDS CPU 错误”的信息,则表示尚未完全缓解。您可以检查cat /sys/devices/system/cpu/vulnerabilities/mds
系统的哪些组件仍然受到影响。
在这种情况下,您应该考虑完全禁用超线程。但请注意,这可能会导致性能下降,正如@heynnema 在他的回答中提到的那样。
阅读Ubuntu 知识库文章详细描述了此漏洞。
因此,没有通用答案,这取决于用例。您可以以牺牲性能为代价来缓解此问题,也可以保持原样(英特尔表示“实际利用 MDS 是一项非常复杂的任务”)。