KVM就绪需硬件支持、内核模块加载和工具链安装三者同时满足;缺一即导致virt-install报错、virsh连不上或kvm-ok提示加速不可用。

KVM 不是装一个软件就能用的,它依赖硬件支持、内核模块和工具链三者同时就位;缺任何一环,virt-install 会报错、virsh list 连不上、甚至 kvm-ok 明确提示 “KVM acceleration can't be used”。
检查 CPU 是否真支持且被内核识别
很多人看到 BIOS 里开了 Intel VT-x 或 AMD-V 就以为万事大吉,但 kvm-ok 仍失败。这不是误报,常见真实原因有:
- Windows 宿主机上启用了 Hyper-V(比如 WSL2 或 Docker Desktop 默认开启),会独占虚拟化能力;需在管理员 PowerShell 中运行
bcdedit /set hypervisorlaunchtype off并重启 - BIOS 中启用了 Trusted Execution Technology(TXT)或某些 Secure Boot 子项,干扰
kvm_intel/kvm_amd模块加载;建议关闭 TXT,Secure Boot 可保留但要确保内核签名被信任 -
cat /proc/cpuinfo | grep -E "(vmx|svm)"无输出 —— 此时不是 BIOS 没开,而是服务器厂商(如 Dell iDRAC、HPE iLO)固件太旧,需升级管理控制器固件
加载 kvm 内核模块并确认 /dev/kvm 可用
即使 CPU 支持,若模块没加载,/dev/kvm 就不会存在,所有虚拟机操作都会直接失败:
- 先手动加载基础模块:
sudo modprobe kvm - 再按 CPU 厂商加载扩展模块:
sudo modprobe kvm_intel(Intel)或sudo modprobe kvm_amd(AMD) - 验证:
lsmod | grep -E '^(kvm|kvm_intel|kvm_amd)'应有输出;ls -l /dev/kvm应显示crw-rw-rw-且 group 为kvm - 若每次重启后模块丢失,把
kvm、kvm_intel(或kvm_amd)写入/etc/modules文件末尾
安装最小必要工具链,避开包名陷阱
不同发行版包名差异极大,装错会导致 virsh 找不到连接、qemu-system-x86_64 命令不存在:
- Ubuntu/Debian:
sudo apt install -y qemu-kvm libvirt-daemon-system virtinst virt-manager;virt-manager非必需,但 GUI 能快速暴露网络/存储配置错误 - CentOS/RHEL 8+:
sudo dnf install -y @virtualization(注意是@virtualization组,不是单装qemu-kvm) - 必须启用服务:
sudo systemctl enable --now libvirtd - 非 root 用户需加组:
sudo usermod -aG libvirt $USER,然后重新登录或运行newgrp libvirt
创建虚拟机前必须处理的两个权限/路径坑
virt-install 失败 90% 出在这两处,报错常表现为 “permission denied” 或 “no storage pool found”:
- 磁盘路径必须可写且在
libvirtd上下文能访问;默认/var/lib/libvirt/images/最安全;若用/home/user/vms,需执行:sudo chown -R root:libvirt /home/user/vms+sudo chmod -R g+rw /home/user/vms - 网络后端不匹配:默认 NAT 网络叫
default,可用virsh net-list --all确认;若想用桥接,必须先定义桥接接口(如br0),再在virt-install中显式指定--network bridge=br0,不能只写--network network=default
最容易被忽略的是:KVM 的“就绪”状态不是靠某个命令返回 success 就算数,而是三个独立条件必须同时满足——/dev/kvm 存在且可读写、libvirtd 服务运行中、当前用户属于 libvirt 组。少一个,virsh -c qemu:///system list 就会静默失败或报 connection refused。


















