KVM 虚拟化需 CPU 支持并启用 VT-x/AMD-V,通过 egrep -c '(vmx|svm)' /proc/cpuinfo 验证;若返回大于 0 但 dmesg 显示 disabled by bios,需在 BIOS 中开启虚拟化;安装对应发行版的 KVM 组件后,须启用 libvirtd 服务、将用户加入 libvirt 和 kvm 组,并在 SELinux 启用时设置 virt_use_kvm 1;最后用 virt-install 创建虚拟机验证全链路。

检查 CPU 是否支持虚拟化
KVM 要求 CPU 硬件开启虚拟化支持(Intel VT-x 或 AMD-V),否则 kvm-intel 或 kvm-amd 模块根本加载不了。很多人装完发现 lsmod | grep kvm 为空,第一反应是软件没装对,其实是 BIOS/UEFI 里没开。
- 先执行
egrep -c '(vmx|svm)' /proc/cpuinfo:结果为 0 表示 CPU 不支持,或 BIOS 未启用 - 若返回大于 0,再查
dmesg | grep -i kvm,看有没有KVM: disabled by bios这类提示 - 进 BIOS/UEFI 找 “Intel Virtualization Technology” 或 “SVM Mode”,设为 Enabled;部分品牌(如联想、戴尔)还藏在 “Security → Virtualization” 二级菜单里
安装 KVM 基础组件和管理工具
不同发行版包名差异大,但核心就三块:内核模块、QEMU 后端、用户态管理工具。Debian/Ubuntu 和 RHEL/CentOS 的包名不互通,装错会导致 virsh list 报 Failed to connect to the hypervisor。
- Debian/Ubuntu:
sudo apt install qemu-kvm libvirt-daemon-system virtinst virt-manager - RHEL/CentOS 8+:
sudo dnf install @virtualization(注意是@virtualization组,不是单个包) - 装完必须重启
libvirtd:sudo systemctl enable --now libvirtd,否则virsh连不上 socket - 普通用户要加进
libvirt组才能免 sudo 运行virsh:sudo usermod -aG libvirt $USER,然后重新登录终端
验证 KVM 是否真正可用
光看到 kvm_intel 模块加载成功还不够——很多环境卡在 /dev/kvm 权限或 SELinux 策略上,导致创建虚拟机时直接报 Operation not supported: domain 'xxx' does not support operation 或 Permission denied on '/dev/kvm'。
- 确认设备存在:
ls -l /dev/kvm,应显示属组为kvm,权限含读写(如 crw-rw----) - 检查当前用户是否在
kvm组:groups输出里要有kvm;没有就补加:sudo usermod -aG kvm $USER - SELinux 启用时(RHEL/CentOS 默认),需确保策略允许:
sudo setsebool -P virt_use_kvm 1,否则qemu-system-x86_64会被拒绝访问/dev/kvm - 最简验证命令:
sudo virt-install --connect qemu:///system --name test --ram 512 --vcpus 1 --disk size=1 --import --graphics none --os-variant detect,能跑起来说明链路通了
创建第一个虚拟机的最小可行命令
不用图形界面也能完成初始化,virt-install 是最可控的方式。新手常误用 --cdrom 指向 ISO 却忘了配网络,结果装到一半卡在 DHCP 获取 IP;或者用 --import 却漏掉 --disk,报 No storage specified。
- 从 ISO 安装(推荐测试):
sudo virt-install --name ubuntu22 --ram 2048 --vcpus 2 --disk size=20 --cdrom /path/to/ubuntu-22.04-live-server-amd64.iso --os-variant ubuntu22.04 --network network=default --graphics vnc,listen=0.0.0.0 - 关键点:
--os-variant必须填对,否则 CPU 特性模拟不准,Ubuntu 系统可能启动黑屏;可用osinfo-query os查支持列表 -
--network若不指定,默认走defaultNAT 网络;想桥接物理网卡,得先建好bridge并用--network bridge=br0 - VNC 端口默认 5900,连上去后按提示操作即可;别用
--graphics none装图形化系统,会卡在 installer 界面
真正麻烦的从来不是命令敲不对,而是 BIOS 设置、用户组权限、SELinux 策略这三层叠加出问题。一个 /dev/kvm 权限不对,就能让前面所有步骤白做。










