在 Linux 中检查 VT-x 是否已激活而无需重新启动?

问题描述 投票:0回答:8

我有一台配备 Intel Core i5 M 450 @ 2.40GHz 的笔记本电脑,显然有 VT-x 但没有 VT-d。我有 Ubuntu 12.04 32 位,但希望在其上运行基于虚拟 64 位终端的 Linux。我如何知道 BIOS 是否已激活此 VT-x 功能而无需重新启动?

linux virtualization virtualbox
8个回答
40
投票

您可以使用msr-tools中的rdmsr来读取寄存器IA32_FEATURE_CONTROL(地址0x3a)。为此必须加载内核模块 msr

在大多数 Linux 系统上:

sudo modprobe msr
sudo rdmsr 0x3a

3
5
表示已激活。


21
投票

你可以使用

sudo kvm-ok

来自 cpu-checker。在逻辑最复杂的 Intel 上,kvm-ok 检查,如果

rdmsr 0x3a
的位 0(锁定位)被设置,位 2(允许 virt 在 SMX 模式之外使用,与可信启动有关) ) 也必须设置。如果
rdmsr 0x3a
的输出不是 13,则您将能够使用 kvm。如有必要,kvm 将设置 msr 的位 2,我希望 virtualbox 和其余的具有相同的逻辑。


16
投票

安装 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

7
投票

您可以使用:

sudo apt-get update
sudo apt-get install cpu-checker
kvm-ok

6
投票

在linux中你可以查看cpuinfo:

cat /proc/cpuinfo| egrep "vmx|svm"

5
投票

我发现 scai 的答案在我的 AMD Ryzen 系统上不起作用。

然而,这对我来说非常有效,即使在英特尔上也是如此:

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

systool
可以在大多数发行版的
sysfsutils
包中找到。)

对于Intel的VT-D / AMD的IOMMU,我想出了这个解决方案:

if compgen -G "/sys/kernel/iommu_groups/*/devices/*" > /dev/null; then
    echo "AMD's IOMMU / Intel's VT-D is enabled in the BIOS/UEFI."
else
    echo "AMD's IOMMU / Intel's VT-D is not enabled in the BIOS/UEFI"
fi

(如果未设置 iommu 内核参数,它甚至对我有用。)


1
投票

确认BIOS中Vt-D是否启用的一个简单方法是通过Linux系统。如果在 BIOS 中启用了 VT-D 并且在

Iommu=on
中启用了
grub.cfg
,则会自动创建以下文件夹结构来保存虚拟设备。

/sys/kernel/iommu_groups/0/devices/0000:00:00.0

如果未配置/启用 VT-D 或 Iommu 选项之一,则不会创建上述文件夹结构。此行为在 CentOS 7.4 和 Ubuntu 中得到了证实。希望其他操作系统的行为也类似,但这需要确认。


1
投票

参加这个聚会迟到了,但这可能是一个长期存在的问题/答案。在 Ryzen、Fedora 36 上,其他答案都没有完全澄清我是否需要重新启动。红帽提供了this

简单来说,检查AMD CPU:

$ grep -E 'svm|vmx' /proc/cpuinfo

(但我知道Ryzen有能力)那么,

# lsmod | grep kvm

检查 kvm_amd 或 kvm_intel。未加载

kvm_amd
模块,因此建议需要重新启动以检查 BIOS。稍后更新。

© www.soinside.com 2019 - 2024. All rights reserved.