
grep vmx 或 svm 只说明硬件能力,不等于能用
执行 grep -E "vmx|svm" /proc/cpuinfo 有输出,只代表 CPU 芯片本身支持 VT-x(Intel)或 AMD-V(AMD)。但常见断点在 BIOS 层:很多 OEM 主板默认关闭虚拟化,或恢复默认设置后自动关掉。部分低功耗 Intel CPU(如 J 系列、老 Atom)压根没 vmx 指令,即使 BIOS 开启也查不到。
若命令无输出,先确认 CPU 型号是否本就不支持(查 Intel ARK 或 AMD 官网);有输出但 KVM 不工作,优先进 BIOS 找“Intel Virtualization Technology”或“SVM Mode”,确保设为 Enabled。某些主板选项名很隐蔽,比如叫 “Processor Virtualization” 或“Secure Virtual Machine”。
kvm-ok 是最贴近真实使用场景的检测方式
kvm-ok 不仅检查 /proc/cpuinfo,还会验证 /dev/kvm 是否可访问、kvm_intel 或 kvm_amd 模块是否已加载、当前用户是否有权限。它模拟的是 QEMU/KVM 启动时的真实依赖链。
- 未安装时:
sudo apt install cpu-checker(Debian/Ubuntu),sudo yum install cpu-checker(RHEL/CentOS) - 运行
sudo kvm-ok,输出KVM acceleration can be used才算真正过关 - 若提示
Operation not permitted,大概率是 Secure Boot 阻止了kvm_intel加载,临时禁用 Secure Boot 再试
lsmod | grep kvm 必须看到对应模块
lscpu | grep Virtualization 显示“VT-x”并不保险——内核模块可能根本没加载。KVM 依赖 kvm_intel(Intel)或 kvm_amd(AMD)提供底层指令支持,缺一不可。
运行 lsmod | grep kvm,应至少看到一行含 kvm_intel 或 kvm_amd,且前面没有 unused 标记。
- 若为空,手动加载:
sudo modprobe kvm_intel(Intel)或sudo modprobe kvm_amd(AMD) - 加载失败常见于:Secure Boot 启用、内核版本太旧(5.4 以下对某些新 CPU 支持不全)、模块被黑名单(检查
/etc/modprobe.d/blacklist.conf)
嵌套虚拟化下所有本地检测都可能“骗人”
如果宿主机本身跑在 VMware 或 VirtualBox 里,而外层没开 “Nested VT-x” 选项,此时 grep vmx、lscpu、lsmod 全部显示正常,但 /dev/kvm 仍不可用。这种情况下,kvm-ok 会明确报错,比查 vmx 标志管用得多。
最容易被忽略的是权限问题:当前用户必须属于 kvm 组(sudo usermod -aG kvm $USER),且需重新登录生效;/dev/kvm 权限必须是 crw-rw----,否则即使模块加载成功也会被拒绝访问。
