问题源于BIOS/UEFI中虚拟化功能未启用,需重启进入固件界面开启Intel VT-x或AMD-V选项,保存后在麒麟终端执行egrep -c '(vmx|svm)' /proc/cpuinfo确认输出大于0,并检查Kysec内核保护是否拦截KVM模块加载。

如果您在银河麒麟系统上尝试运行虚拟机软件但提示“虚拟化未启用”或“无法检测到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终端中执行命令确认内核已识别硬件虚拟化支持,避免因设置未保存或固件兼容性导致误判。
打开终端,执行命令:egrep -c '(vmx|svm)' /proc/cpuinfo。
若输出结果为大于0的整数(如 8、16),表明CPU已成功报告虚拟化指令集可用。
进一步验证KVM内核模块是否可加载:lsmod | grep kvm。
若无任何输出,可尝试手动加载:【sudo modprobe kvm_intel(Intel CPU)或 sudo modprobe kvm_amd(AMD CPU)】。
检查Kysec安全中心内核保护策略
Kysec是银河麒麟默认安装的安全中心,其内核保护策略可能拦截KVM模块加载,导致modprobe失败或virsh连接被拒绝。
打开开始菜单 → 安全中心 → 内核保护 → 查看“KVM模块加载”是否被禁止。
若状态为“已拦截”,点击右侧“解除保护”按钮并确认。
这一步漏掉会导致libvirtd服务启动后仍报“Permission denied”错误,且dmesg | grep kvm可见拒绝日志。
启用IOMMU以支持GPU直通等高级虚拟化功能
当需使用VFIO实现PCI设备(如显卡、网卡)直通至虚拟机时,必须启用IOMMU(Intel VT-d 或 AMD IOMMU),否则设备无法被隔离绑定。
① 重启进入BIOS/UEFI,定位至Advanced → System Agent Configuration → Graphics Configuration或类似路径。
② 查找并启用Intel VT-d(Intel平台)或AMD IOMMU(AMD平台)。
③ 保存退出后,在麒麟OS终端中执行:dmesg | grep -i iommu。
④ 若输出中包含“IOMMU enabled”或“AMD-Vi: Enabled”,则表示内核已启用IOMMU支持。
运行全链路诊断验证
执行最终校验命令,一次性覆盖硬件、内核、服务、权限四层:
sudo virt-host-validate
重点关注五项输出:QEMU、LXC、Networking、Firewall、SELinux/KYSEC——全部显示PASS即表示虚拟化技术支持已就绪。
若某项显示FAIL,直接按其提示修复,例如“Checking for device /dev/vhost-net”失败,说明vhost-net内核模块未加载,执行sudo modprobe vhost_net即可。

















