虚拟化开不了?
KVM/虚拟化开不了的原因分诊:BIOS 未开硬件虚拟化、内核模块没加载、芯片不支持该功能、SELinux 拦设备访问,按顺序排查。
简短答案
“开不了虚拟化”按四层查:芯片支持(lscpu 无标志位)、BIOS 开关(硬件虚拟化项没开)、内核模块(没加载或没设自加载)、设备访问被 SELinux 拦。每层一条命令定界,不用重装系统。
现象对照表
| 现象 | 对应层 |
|---|---|
| 标志位里无虚拟化条目 | 芯片不支持或未识别 |
| 有标志位但模块未加载 | 内核模块层 |
| 模块在但创建设备被拒 | SELinux 或设备节点权限 |
| 每次重启又没了 | 没配模块自加载 |
排查步骤
# 1. 芯片虚拟化标志位
lscpu | grep -i -E 'virtual|vt'
# 2. 内核模块是否加载
lsmod | grep -E 'kvm'
# 查看是否有对应设备节点
ls -l /dev/kvm
# 3. 设自加载(模块名以系统为准,常见 kvm 与宿主模块)
echo 模块名 >> /etc/modules-load.d/kvm.conf
modprobe 模块名
# 4. SELinux 拒绝记录
ausearch -m av -ts recent | grep -i kvm | head
个别机型该功能需单独启用,是否支持与厂商文档为准,以发行说明为准。
处理办法
- 标志位缺失:确认芯片是否支持该功能(不支持则换硬件,不硬开);
- BIOS 项未开:进 BIOS 找到硬件虚拟化开关启用;
- 模块未加载:按上面配自加载并重启验证;
- SELinux 拦设备:先 permissive 复现,再给 /dev/kvm 加对应上下文;基线对照 服务器 V11 条目;
- 整系统重置兜底:介质取 麒麟快捷入口 对应条目,U 盘制作参考 Rufus 启动盘条目。
操作小结
- 四层顺序查,别跳层;
- 标志位决定硬件上限;
- 模块层要配自加载防重启丢失;
- 拿不准硬件支持就注明以厂商文档为准。