我有一个新的戴尔 7530 移动工作站,刚刚开始配置。
这台机器采用英特尔至强 E-2186M并具有 32 GB 的 ECC DRAM。此 CPU 完全支持最新的硬件虚拟化技术 (VT-x、VT-d、EPT)。
由于没有时间切换操作系统,这台机器最初将运行 Windows 10。我真的希望大约一年后有时间投资切换到 Linux,因为我讨厌 Bea$t 新的间谍软件即服务业务模式。在此期间,我肯定会在其上运行 Linux 虚拟机。
我首先要做的就是进入 BIOS 并浏览所有设置。我很高兴看到戴尔的默认设置大部分都很好,只需要进行一些更改。例如,它默认配置为安全启动。
在其虚拟化支持部分,他们默认启用了“英特尔虚拟化技术”(VT-x)和“直接 I/O 的 VT”(VT-d),这也很好。
但是,英特尔的可信执行技术 (TXT) 的第 3 个选项已被禁用。我认为 BIOS 描述是这样的:
此选项指定测量虚拟机监视器 (MVMM) 是否可以利用英特尔可信执行技术提供的额外硬件功能。必须启用 TPM 虚拟化技术和直接 I/O 虚拟化技术才能使用此功能。
可信执行——默认情况下禁用。
我说“认为”是因为7530 BIOS 的戴尔官方文档截至今天,还没有提到该选项。上面的文字是戴尔 Latitude E7470,尽管我记得我的 BIOS 是这么说的。
根据上述描述,再加上英特尔白皮书,这听起来像是我想要启用的东西,因为我肯定会使用 VirtualBox(将来还会使用更强大的东西,如 KVM 或 Xen)。不幸的是,网上搜索没有找到支持该理论的证据。
相反,我发现只有几份报告说要关闭 VirtualBox 和 KVM,尤其是在戴尔系统上:链接1,链接2。(我原来的问题在这里放了更多链接,但当我尝试提交时,这个网站声称我的问题是垃圾邮件......)
有人知道确切的答案吗?
我注意到一些链接说不要启用它是几年前的,所以也许它曾经是正确的建议,但现在不再有效了?
答案1
我认为应该启用这个选项。
我已禁用它,我想检查 IOMMU 是否已启用。
当然我之前已经附加intel_iommu=on
参数/etc/default/grub
并更新了 grub 并重启了系统。
当我发出命令时,我的显卡出现了错误:
dmesg | grep -E (”DMAR | IOMMU”)
它给了我两行:
DMAR: IOMMU enabled
DMAR: BIOS has allocated no shadow GTT; disabling IOMMU for graphics.
因此,我的显卡的 IOMMU 被禁用了。然后,我在 BIOS 中将“Intel 可信执行技术”设置为启用,现在命令:
dmesg | grep -E (”DMAR | IOMMU”)
产生的输出:
[ 0.057735] ACPI: DMAR 0x00000000CA9B0718 0000B8 (v01 INTEL CP_DALE 00000001 INTL 00000001)
[ 0.417895] DMAR: IOMMU enabled
[ 0.504475] DMAR: Host address width 36
[ 0.504476] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.504483] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c9008020e30272 ecap 1000
[ 0.504484] DMAR: DRHD base: 0x000000fed91000 flags: 0x0*
[ 0.504487] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap c0000020230272 ecap 1000
[ 0.504488] DMAR: DRHD base: 0x000000fed93000 flags: 0x1
[ 0.504493] DMAR: dmar2: reg_base_addr fed93000 ver 1:0 cap c9008020630272 ecap 1000
[ 0.504494] DMAR: RMRR base: 0x000000ca971000 end: 0x000000ca985fff
[ 0.504496] DMAR: RMRR base: 0x000000cdc00000 end: 0x000000cfffffff
[ 1.635058] DMAR: Disabling batched IOTLB flush on Ironlake
[ 2.201405] DMAR: No ATSR found
[ 2.201519] DMAR: dmar1: Using Register based invalidation
[ 2.201541] DMAR: dmar0: Using Register based invalidation
[ 2.201568] DMAR: dmar2: Using Register based invalidation
[ 2.201599] DMAR: Setting RMRR:
[ 2.201821] DMAR: Setting identity map for device 0000:00:02.0 [0xcdc00000 - 0xcfffffff]
[ 2.202736] DMAR: Setting identity map for device 0000:00:1a.0 [0xca971000 - 0xca985fff]
[ 2.202898] DMAR: Setting identity map for device 0000:00:1d.0 [0xca971000 - 0xca985fff]
[ 2.202941] DMAR: Prepare 0-16MiB unity mapping for LPC
[ 2.203069] DMAR: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
[ 2.233832] DMAR: Intel(R) Virtualization Technology for Directed I/O
[ 14.362393] [drm] DMAR active, disabling use of stolen memory
我认为现在 IOMMU 处于活动状态。希望这能帮助您做出决定。