问题根源是bios/uefi中虚拟化技术未启用,需依次完成五步:一、重启按del/f2进入bios,启用intel vt-x或amd-v;二、在麒麟os执行egrep -c '(vmx|svm)' /proc/cpuinfo确认输出>0,并加载kvm_intel/kvm_amd模块;三、如需gpu直通,bios中启用vt-d/iommu并在系统验证dmesg | grep -i iommu;四、检查kysec安全中心内核保护策略是否拦截kvm模块;五、运行sudo virt-host-validate进行全链路诊断。

如果您在麒麟OS上尝试运行虚拟机软件但提示“虚拟化未启用”或“无法检测到VT-x/AMD-V”,则问题很可能源于CPU虚拟化功能在BIOS/UEFI中处于关闭状态。以下是开启虚拟化技术支持的具体操作步骤:
一、确认CPU硬件支持并进入BIOS/UEFI设置
麒麟OS依赖底层CPU的硬件虚拟化能力(Intel VT-x 或 AMD-V)才能正常运行KVM、VMware等虚拟化平台。若物理CPU不支持或固件中未启用,所有后续软件配置均无效。需先验证并进入固件界面进行开启。
1、重启计算机,在开机自检阶段反复按 Del、F2 或 F12 键(具体按键依主板或整机品牌而定,常见于联想、华为、浪潮等国产服务器/工作站)。
2、进入BIOS/UEFI后,使用方向键切换至 Advanced(高级) 或 Security(安全) 选项卡。
3、查找以下任一名称的选项:Intel Virtualization Technology、VT-x、Intel VT-d、SVM Mode、AMD-V。
4、将该选项设置为 Enabled,按 F10 保存并退出,系统自动重启。
二、在麒麟OS中验证虚拟化是否已启用
BIOS设置生效后,需在麒麟OS终端中执行命令确认内核已识别硬件虚拟化支持,避免因设置未保存或固件兼容性导致误判。
1、打开终端,执行命令:egrep -c '(vmx|svm)' /proc/cpuinfo。
2、若输出结果为大于 0 的整数(如 8、16),表明CPU已成功报告虚拟化指令集可用。
3、进一步验证KVM内核模块是否可加载:lsmod | grep kvm。
4、若无任何输出,可尝试手动加载:sudo modprobe kvm_intel(Intel CPU)或 sudo modprobe kvm_amd(AMD CPU)。
三、启用IOMMU以支持GPU直通等高级虚拟化功能
当需使用VFIO实现PCI设备(如显卡、网卡)直通至虚拟机时,必须启用IOMMU(Intel VT-d 或 AMD IOMMU),否则设备无法被隔离绑定。
1、重启进入BIOS/UEFI,定位至 Advanced → System Agent Configuration → Graphics Configuration 或类似路径。
2、查找并启用 Intel VT-d(Intel平台)或 AMD IOMMU(AMD平台)。
3、保存退出后,在麒麟OS终端中执行:dmesg | grep -i iommu。
4、若输出中包含 "IOMMU enabled" 或类似信息,则表示内核已启用IOMMU支持。
四、通过Kysec安全中心检查虚拟化相关策略限制
银河麒麟内置的Kysec安全中心可能启用内核保护机制,意外拦截KVM模块加载或虚拟化调用,需人工核查策略配置是否构成干扰。
1、点击开始菜单 → 打开 安全中心(Kysec)。
2、进入 内核保护 模块,查看当前策略状态是否为“已启用”。
3、若启用,临时切换为“禁用”状态并重启系统,观察虚拟化功能是否恢复正常。
4、如确认为Kysec策略冲突,可在策略详情中单独放行 kvm、kvm_intel、kvm_amd、vfio-pci 等关键模块。
五、使用virt-host-validate工具进行全链路诊断
该工具由libvirt提供,可一次性检测CPU虚拟化、KVM模块、QEMU、网络、SELinux等全部依赖项是否就绪,快速定位阻断点。
1、确保已安装libvirt相关包:sudo apt install libvirt-daemon-system。
2、执行诊断命令:sudo virt-host-validate。
3、逐行查看输出结果,重点关注标有 FAIL 或 WARN 的项目。
4、对提示失败的项(如 QEMU、KVM、LXC),依据其具体描述回溯对应步骤进行修复。











