VirtualBox Ubuntu虚拟机KVM启用失败,提示“CPU does not support KVM extensions”求助
VirtualBox Ubuntu虚拟机KVM启用失败,提示“CPU does not support KVM extensions”求助
看起来你已经做了不少基础配置,但还是遇到了KVM不支持的问题,我来帮你一步步排查和解决:
首先明确核心问题:从你提供的CPU flags里看不到vmx(Intel虚拟化指令集),这是KVM能正常工作的关键——没有这个flag,Ubuntu就识别不到KVM扩展,自然会报错。接下来我们从主机到虚拟机逐层排查:
1. 确认嵌套虚拟化命令的执行条件是否正确
你用了VBoxManage modifyvm "YourVMName" --nested-hw-virt on这个命令,但要注意:
- 必须在Ubuntu虚拟机完全关机的状态下执行,不能是暂停或休眠状态
- 要确保
YourVMName和VirtualBox里显示的虚拟机名称完全一致(包括大小写、空格,最好用引号包裹)
执行完命令后,打开VirtualBox的虚拟机设置→系统→处理器,看看“嵌套VT-x/AMD-V”选项是否已经被勾选(如果命令生效,这个选项会自动启用)。
2. 彻底关闭Windows主机的Hypervisor相关组件
你已经关闭了Windows功能里的Hyper-V等,但有时候系统还会残留Hypervisor的启动项,需要额外操作:
- 以管理员身份打开命令提示符(CMD)
- 执行命令:
bcdedit /set hypervisorlaunchtype off - 重启你的Windows主机
这一步能确保Hypervisor完全不启动,避免和VirtualBox的嵌套虚拟化冲突。
3. 确认主机BIOS/UEFI的虚拟化设置完全开启
你的CPU是11代Intel i9,需要确保BIOS里的以下选项都已启用:
- VT-x(Intel硬件虚拟化)
- VT-d(I/O虚拟化,可选但建议开启,避免后续兼容性问题)
- 有些主板还会有“Intel Virtualization Technology”或类似名称的选项,都要设为Enabled
4. 在Ubuntu虚拟机中检查并加载KVM模块
进入Ubuntu虚拟机后:
- 先检查是否有vmx flag:执行
grep -E 'vmx|svm' /proc/cpuinfo- 如果有输出,说明虚拟化指令集已经被识别,继续下一步
- 如果没有输出,回到前面的步骤重新检查嵌套虚拟化和Hypervisor设置
- 检查KVM模块是否加载:执行
lsmod | grep kvm- 如果没有看到
kvm_intel和kvm,手动加载模块:sudo modprobe kvm_intel
- 如果没有看到
- 再次运行
sudo kvm-ok,应该就能看到支持的提示了
额外注意:关于Docker的需求
其实Docker默认使用containerd作为运行时,不需要KVM就能正常工作——除非你是要运行需要硬件加速的虚拟机类 workload(比如Docker Machine、Kubernetes节点,或者带硬件加速的容器)。如果只是普通的Docker容器,你可以先跳过KVM的问题,直接安装Docker试试:
sudo apt update sudo apt install docker.io docker-compose-plugin
备注:内容来源于stack exchange,提问作者jarvis




