我有一台配备 Intel Core i5 M 450 @ 2.40GHz 的笔记本电脑,显然有 VT-x 但没有 VT-d。我有 Ubuntu 12.04 32 位,但希望在其上运行基于虚拟 64 位终端的 Linux。我如何知道 BIOS 是否已激活此 VT-x 功能而无需重新启动?
您可以使用msr-tools中的rdmsr来读取寄存器IA32_FEATURE_CONTROL(地址0x3a)。为此必须加载内核模块 msr。
在大多数 Linux 系统上:
sudo modprobe msr
sudo rdmsr 0x3a
值
3
和 5
表示已激活。
你可以使用
sudo kvm-ok
来自 cpu-checker。在逻辑最复杂的 Intel 上,kvm-ok 检查,如果
rdmsr 0x3a
的位 0(锁定位)被设置,位 2(允许 virt 在 SMX 模式之外使用,与可信启动有关) ) 也必须设置。如果 rdmsr 0x3a
的输出不是 1 或 3,则您将能够使用 kvm。如有必要,kvm 将设置 msr 的位 2,我希望 virtualbox 和其余的具有相同的逻辑。
安装 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
您可以使用:
sudo apt-get update
sudo apt-get install cpu-checker
kvm-ok
在linux中你可以查看cpuinfo:
cat /proc/cpuinfo| egrep "vmx|svm"
我发现 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 内核参数,它甚至对我有用。)
确认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 中得到了证实。希望其他操作系统的行为也类似,但这需要确认。
参加这个聚会迟到了,但这可能是一个长期存在的问题/答案。在 Ryzen、Fedora 36 上,其他答案都没有完全澄清我是否需要重新启动。红帽提供了this
简单来说,检查AMD CPU:
$ grep -E 'svm|vmx' /proc/cpuinfo
(但我知道Ryzen有能力)那么,
# lsmod | grep kvm
检查 kvm_amd 或 kvm_intel。未加载
kvm_amd
模块,因此建议需要重新启动以检查 BIOS。稍后更新。