要检查是否在BIOS / UEFI中启用了Intel的VT-X或AMD的AMD-V,我使用:
if systool -m kvm_amd -v &> /dev/null || systool -m kvm_intel -v &> /dev/null ; then
echo "AMD-V / VT-X is enabled in the BIOS/UEFI."
else
echo "AMD-V / VT-X is not enabled in the BIOS/UEFI"
fi
我找不到检查BIOS / UEFI中是否启用了Intel的VT-D或AMD的IOMMU的方法。
我需要一种无需设置iommu内核参数(iommu=1
,amd_iommu=on
,intel_iommu=on
)即可检测其是否启用的方法。
我曾经有一个想法是使用rdmsr
,但是我不确定是否可行。我最初不是想使用systool
,而是想使用sudo rdmsr 0x3A
,但是它对我不起作用。它总是报告:
rdmsr: CPU 0 cannot read MSR 0x0000003a
rdmsr
是msr-tools
btw的一部分。要使用,需要首先加载msr
的Kenel模块(sudo modprobe msr
)。
据称sudo rdmsr 0x3A
应该返回3
或5
来指示已启用VT-X / AMD-V ...
答案 0 :(得分:3)
如果启用了VT-d,则Linux将在引导时配置DMA重映射。最简单的方法是在dmesg
中查找DMAR条目。如果没有看到错误,则启用VT-d。
例如:
[root@localhost ~]# dmesg | grep DMAR
[ 0.000000] ACPI: DMAR 0x00000000BBECB000 0000A8 (v01 LENOVO TP-R0D 00000930 PTEC 00000002)
[ 0.001000] DMAR: Host address width 39
[ 0.001000] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.001000] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[ 0.001000] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.001000] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.001000] DMAR: RMRR base: 0x000000bbdd8000 end: 0x000000bbdf7fff
[ 0.001000] DMAR: RMRR base: 0x000000bd000000 end: 0x000000bf7fffff
[ 0.001000] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.001000] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.001000] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.002000] DMAR-IR: Enabled IRQ remapping in x2apic mode
另一个选择退出x2apic的示例:
[root@localhost ~]# dmesg | grep DMAR
[ 0.000000] ACPI: DMAR 0000000079a20300 000C4 (v01 SUPERM SMCI--MB 00000001 INTL 20091013)
[ 0.106389] DMAR: Host address width 46
[ 0.106392] DMAR: DRHD base: 0x000000fbffc000 flags: 0x1
[ 0.106400] DMAR: dmar0: reg_base_addr fbffc000 ver 1:0 cap 8d2078c106f0466 ecap f020de
[ 0.106402] DMAR: RMRR base: 0x0000007bb24000 end: 0x0000007bb32fff
[ 0.106404] DMAR: ATSR flags: 0x0
[ 0.106407] DMAR: RHSA base: 0x000000fbffc000 proximity domain: 0x0
[ 0.106409] DMAR-IR: IOAPIC id 8 under DRHD base 0xfbffc000 IOMMU 0
[ 0.106411] DMAR-IR: HPET id 0 under DRHD base 0xfbffc000
[ 0.106413] DMAR-IR: x2apic is disabled because BIOS sets x2apic opt out bit.
[ 0.106414] DMAR-IR: Use 'intremap=no_x2apic_optout' to override the BIOS setting.
[ 0.106591] DMAR-IR: Enabled IRQ remapping in xapic mode
无论哪种方式,您都在寻找最后一行DMAR-IR: Enabled IRQ remapping in <whichever> mode
。
在禁用了VT-d的系统上,您将看到错误消息,或者什么都没有。
[root@localhost ~]# dmesg | grep DMAR
[root@localhost ~]#
答案 1 :(得分:1)
基于Jo-Erlend Schinstad的答案:
安装cpu-checker
$ sudo apt-get update
$ sudo apt-get install cpu-checker
然后检查:
$ kvm-ok
如果启用了CPU,您应该看到类似以下内容的
:INFO: /dev/kvm exists
KVM acceleration can be used
否则,您可能会看到类似以下内容的
:INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions
INFO: KVM (vmx) is disabled by your BIOS
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
and then hard poweroff/poweron your system
KVM acceleration can NOT be used
答案 2 :(得分:0)
我刚刚发现了另一种似乎可行的方法,即使尚未设置iommu内核参数:
<ion-content padding>
<ion-slides pager
#imageSlider>
<ion-slide *ngFor='let url of imageUrls'>
<img [src]='url'>
</ion-slide>
</ion-slides>
</ion-content>