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

719*_*016 34 linux virtualization virtualbox

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

sca*_*cai 33

您可以使用RDMSRMSR工具读取寄存器IA32_FEATURE_CONTROL(地址0x3a).必须为此加载内核模块msr.

在大多数Linux系统上:

sudo modprobe msr
sudo rdmsr 0x3a
Run Code Online (Sandbox Code Playgroud)

35意味着它被激活.

  • 以下是关于MSR位的更多内容:http://www.thomas-krenn.com/en/wiki/Activating_the_Intel_VT_Virtualization_Feature http://security.stackexchange.com/questions/15555/can-a-hypervisor-rootkit-enable-硬件辅助虚拟化,当-IT-有蜂 (7认同)
  • 在AMD Ryzen上,我得到“ rdmsr:CPU 0无法读取MSR 0x0000003a”。 (4认同)
  • 在 Ubuntu 16.04(Xenial Xerus)上安装 msr-tools 包就像在终端上运行以下命令一样简单:`sudo apt-get update sudo apt-get install msr-tools` (2认同)

Tob*_*obu 15

您可以使用

sudo kvm-ok
Run Code Online (Sandbox Code Playgroud)

来自cpu-checker.在具有最复杂逻辑的Intel上,kvm-ok 检查如果rdmsr 0x3a(锁定位)的位0 置位,则位2(允许在SMX模式之外使用virt,与可信引导有关)也必须设置.如果输出rdmsr 0x3a不是13,则可以使用kvm.如果需要,kvm将设置msr的第2位,我希望virtualbox和其余的具有相同的逻辑.


Vis*_*esn 11

安装cpu-checker并运行"kvm-ok"

如果CPU已启用,您应该看到如下内容:

INFO: /dev/kvm exists
KVM acceleration can be used
Run Code Online (Sandbox Code Playgroud)

othewise

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
Run Code Online (Sandbox Code Playgroud)

  • 在RHEL衍生品上,我们有`virt-host-validate`,由`libvirt-client`提供 (7认同)
  • `kvm-ok`仅适用于ubuntu系统.它不能用于debian或red hat. (3认同)

Gig*_*egs 7

在linux中你可以检查cpuinfo:

cat /proc/cpuinfo| egrep "vmx|svm"
Run Code Online (Sandbox Code Playgroud)

  • 这仅显示CPU是否支持VT-x,而不是在BIOS中激活它. (7认同)

gha*_*adr 6

您可以使用:

sudo apt-get update
sudo apt-get install cpu-checker
kvm-ok
Run Code Online (Sandbox Code Playgroud)


For*_*vin 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
Run Code Online (Sandbox Code Playgroud)

(在大多数发行版的软件包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
Run Code Online (Sandbox Code Playgroud)

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