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

zf2sa74q  于 2023-03-07  发布在  Linux
关注(0)|答案(8)|浏览(207)

我有一台英特尔酷睿i5 M 450@2.40GHz的笔记本电脑,它显然有VT-x,但没有VT-d。我有Ubuntu 12.04 32位,但希望有一个虚拟的64位基于终端的Linux运行在上面。我如何知道BIOS是否有这个VT-x功能激活,而不必重新启动?

h4cxqtbf

h4cxqtbf1#

您可以使用 msr-tools 中的 rdmsr 读取寄存器 IA32_FEATURE_CONTROL(地址 * 0x 3a *)。为此,必须加载内核模块 msr
在大多数Linux系统上:

sudo modprobe msr
sudo rdmsr 0x3a

35表示它已激活。

pu82cl6c

pu82cl6c2#

您可以使用

sudo kvm-ok

在逻辑最复杂的Intel上,kvm-ok检查rdmsr 0x3a的位0是否(锁定位)被设置,位2(允许在SMX模式之外使用virt,与可信引导有关)。如果rdmsr 0x3a的输出不是13,您将能够使用kvm。kvm将设置msr的第2位,如果需要的话,我希望virtualbox和其余的具有相同的逻辑。

ev7lccsx

ev7lccsx3#

安装CPU检查器并运行“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
umuewwlo

umuewwlo4#

您可以用途:

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

o3imoua45#

在Linux中,你可以检查cpuinfo:

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

mwecs4sa6#

我发现,SCAI的答案不工作在我的AMD锐龙系统。
不过,这对我来说非常有效,甚至在英特尔上也是如此:

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包中找到。)
对于英特尔的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

(It如果没有设置iommu内核参数,甚至可以为我工作。)

swvgeqrz

swvgeqrz7#

确认Vt-D在BIOS中启用的简单方法是通过Linux系统。如果VT-D在BIOS中启用,Iommu=ongrub.cfg中启用,则会自动创建以下文件夹结构以保存虚拟设备。
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
然而,如果VT-D或Iommu选项之一未配置/启用,则不会创建上述文件夹结构。此行为在CentOS 7.4和Ubuntu中得到确认。希望此行为在其他操作系统中也类似,但需要确认。

y53ybaqx

y53ybaqx8#

虽然我迟到了,但这可能是一个长期的问题/答案。在锐龙、Fedora 36上,其他答案都无法完全澄清我是否需要重新启动。红帽提供this
简而言之,要检查AMD CPU:

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

(but我知道Ryzen是有能力的)然后,

# lsmod | grep kvm

检查kvm_amd或kvm_intel。未加载kvm_amd模块,因此建议重新启动以检查BIOS。稍后更新。

相关问题