适用环境:Kylin Linux Advanced Server V10 (Halberd) x86_64,包管理器为 yum/dnf
用途:运维排障参考 / 技术博客素材
更新日期:2026-08
一、为什么选虚拟机,不选双系统
| 方案 | 影响现有系统 | 卸载难度 | 推荐度 |
|---|---|---|---|
| KVM 虚拟机 | 完全隔离 | 删文件即可 | ★★★★★ |
| 移动硬盘安装 | 不碰本机磁盘 | 格式化移动盘 | ★★★☆ |
| 本机双系统 | 改分区+GRUB | 高风险 | ★ |
目标:不修改现有系统分区、用完即删。KVM 是银河麒麟官方支持方案,性能接近原生。
二、前置检查:确认硬件虚拟化可用
# 1. CPU 是否支持 VT-x/AMD-V(输出含 vmx/svm 即可)
lscpu | grep -iE 'virtualization|vmx|svm'
# 2. KVM 模块是否加载(存在 /dev/kvm 即 OK)
ls /dev/kvm
# 3. 内存/磁盘余量(Win11 建议 ≥8G 内存、≥100G 磁盘)
free -h
df -h /
本次实测:Intel i3-8100(带 vmx)+ 30G 内存 + 2TB 磁盘,满足要求。
三、安装虚拟化软件
# 安装 virt-manager(图形管理)、qemu-kvm(模拟器)、libvirt(管理服务)
sudo dnf install -y virt-manager qemu-kvm libvirt
# virt-install 命令行工具(后续用命令行建机更方便,需单独装)
sudo dnf install -y virt-install
# virt-viewer:SPICE 图形控制台客户端
sudo dnf install -y virt-viewer
# 启动 libvirtd 并设开机自启
sudo systemctl enable --now libvirtd
# 当前用户加入 libvirt 组(免 sudo 操作虚拟机,需重新登录生效)
sudo usermod -aG libvirt $USER
坑点 1:virt-install 不会随 virt-manager 自动安装,需单独 dnf install virt-install。
四、准备 Windows 11 安装镜像
ISO 从本地 Ventoy 移动硬盘获取(更快的官方下载方式见文末)。
# 拷贝镜像到 libvirt 标准目录(关键!)
sudo cp /run/media/root/Ventoy/ISO文件/Win11_24H2_Pro_Chinese_Simplified_x64.iso /var/lib/libvirt/images/
sudo chmod 644 /var/lib/libvirt/images/*.iso
坑点 2(权限):镜像放 /root 下 qemu 用户无法读取,会报
Could not open '...': Permission denied。必须放 /var/lib/libvirt/images/ 或 chmod 放开权限。
五、创建虚拟机
sudo virt-install \
--name win11 \
--memory 8192 \
--vcpus 4 \
--disk path=/var/lib/libvirt/images/win11.qcow2,size=100,format=qcow2 \
--cdrom /var/lib/libvirt/images/Win11_24H2_Pro_Chinese_Simplified_x64.iso \
--os-variant win10 \
--network default \
--graphics spice \
--boot uefi
参数说明:
--memory 8192:8G 内存--vcpus 4:4 核 CPU--disk ...format=qcow2:qcow2 格式(动态占用,按需增长)--boot uefi:UEFI 引导(Win11 必须)
坑点 3:麒麟 osinfo 数据库较旧,无 win11 标识,用 win10 代替即可(同内核,不影响安装)。
六、启动图形控制台
# 有桌面环境时:
sudo virt-manager --show-domain-console win11
# 或直接用 remote-viewer 连 SPICE 端口(更适合 SSH 场景)
DISPLAY=:0 XAUTHORITY=/run/lightdm/root/:0 remote-viewer spice://127.0.0.1:5900
SPICE 默认监听
127.0.0.1:5900,ss -tlnp | grep 5900可验证。
XAUTHORITY=/run/lightdm/root/:0是 root 桌面会话的授权文件,用桌面时实际无需手动指定。
七、踩坑实录(重点)
坑 4:UEFI 引导失败,落入 EFI Shell
现象:开机进不了安装界面,停在 Shell> 提示符,只有 BLK0 没有 FS0/FS1。
原因:OVMF 固件没有自动识别到可引导光驱。两种触发场景:
- 镜像为改造版/非标准启动结构,UEFI 固件找不到
\efi\boot\bootx64.efi - 重新
virsh define定义域后,NVRAM 被重置,启动顺序丢失(只剩hd,空盘无法启动)
排查:挂载 ISO 确认引导文件存在
sudo mount -o loop,ro /var/lib/libvirt/images/*.iso /tmp/iso_mount
ls /tmp/iso_mount/efi/boot/ # 应有 bootx64.efi
ls /tmp/iso_mount/efi/microsoft/boot/ # 应有 cdboot.efi 等
解决方案 A:EFI Shell 手动引导
Shell> fs0:
Shell> ls efi\boot\
Shell> efi\boot\bootx64.efi
注意:
\efi\microsoft\boot\里没有bootmgfw.efi是正常的,
\efi\boot\bootx64.efi就是它的同体文件(fallback 引导器)。
cdboot_noprompt.efi也可直接运行,免去按键。
解决方案 B(根治):调整启动顺序为光驱优先
查看 XML:
sudo virsh dumpxml win11 > /tmp/win11.xml
修改 /tmp/win11.xml,把 <os> 里:
<boot dev='hd'/>
改为:
<boot dev='cdrom'/>
<boot dev='hd'/>
重新定义并启动:
sudo virsh undefine win11 --nvram
sudo virsh define /tmp/win11.xml
sudo virsh start win11
坑点 5:设备级 <boot order='1'/> 不能与 <os> 级 <boot dev> 混用,libvirt 报
每个设备的 boot 元素无法与 os/boot 元素联合使用。二选一。
坑点 6:virsh undefine 会拒绝删除带 nvram 的域,需加 --nvram 参数。
坑 7:Win11「这台电脑不满足系统要求」
现象:安装界面直接弹「这台电脑当前不满足 Windows 11 系统要求」。
原因:Win11 强制要求 TPM 2.0 + Secure Boot,KVM 默认没有虚拟 TPM。
解决方案:加装虚拟 TPM 2.0(swtpm)
# 安装软件 TPM
sudo dnf install -y swtpm swtpm-tools
# 创建 TPM 状态目录(属主 tss)
sudo mkdir -p /var/lib/libvirt/swtpm/win11
sudo chown -R tss:tss /var/lib/libvirt/swtpm
编辑 XML,在 </devices> 前加入:
<tpm model='tpm-crb'>
<backend type='emulator' version='2.0'/>
</tpm>
# 生效
sudo virsh undefine win11 --nvram
sudo virsh define /tmp/win11.xml
sudo virsh start win11
验证 TPM 已启用:
pgrep -a swtpm # 看到 swtpm socket --tpm2 即成功
备选方案(临时绕过,不推荐做长期):安装界面 Shift+F10 打开 cmd →
regedit→ 在HKEY_LOCAL_MACHINE\SYSTEM\Setup建LabConfig项,
添加 BypassTPMCheck / BypassSecureBootCheck / BypassRAMCheck / BypassCPUCheck /
BypassStorageCheck 五个 DWORD 值 = 1。
坑 8:磁盘容量想改大(安装中途)
qcow2 支持在线/离线扩容,不需要重装:
# 1. 关闭虚拟机
sudo virsh destroy win11
# 2. 扩容(例:100G → 500G)
sudo qemu-img resize /var/lib/libvirt/images/win11.qcow2 500G
# 3. 验证
sudo qemu-img info /var/lib/libvirt/images/win11.qcow2 | grep 'virtual size'
# 4. 重启虚拟机
sudo virsh start win11
Windows 安装时在分区界面删掉旧分区,直接对"未分配空间"安装即可。
扩容发生在安装分配阶段也没关系,数据未写入,扩容后重新分区安装。
八、最终安装流程(顺顺利利版)
lscpu确认 vmx →ls /dev/kvm确认 KVM- 安装虚拟化套件 + swtpm
- ISO 放入
/var/lib/libvirt/images/ virt-install建机(UEFI + 8G + 4核 + 500G)- 确认 XML 里
<boot dev='cdrom'/>在前、<tpm>已添加 - 启动 → remote-viewer 连接
- 选「安装 Windows 11」→「我没有产品密钥」→ 选 Pro → 自定义安装
- 分区界面删旧分区 → 选未分配空间 → 下一步
- 等待自动安装(约 10-20 分钟,多次重启正常)
九、常用运维命令速查
sudo virsh list --all # 列出所有虚拟机
sudo virsh start/reboot/destroy win11 # 启动/重启/强制关机
sudo virsh shutdown win11 # 优雅关机
sudo virsh domstate win11 # 查看状态
sudo virsh dumpxml win11 # 导出配置
sudo virsh define /tmp/win11.xml # 重新定义配置
sudo virsh undefine win11 --nvram # 删除定义(含NVRAM)
rm -f /var/lib/libvirt/images/win11.qcow2 # 删除磁盘文件(卸载虚拟机)
# 卸载整套虚拟化
sudo dnf remove -y virt-manager qemu-kvm libvirt swtpm
十、官方 ISO 下载渠道(可选)
- 微软官方:下载 Windows 11
- ToDesk 官网有 Linux 各发行版客户端(本文虚拟机内安装 Windows 时如需远程可参考)
附:本次实战环境信息
| 项目 | 值 |
|---|---|
| 宿主机 OS | Kylin Linux Advanced Server V10 (Halberd) |
| 架构 | x86_64 (Intel i3-8100, vmx) |
| 包管理器 | yum/dnf |
| KVM 套件 | virt-manager 2.2.1 / qemu 4.1.0 / libvirt |
| swtpm | 0.3.3 |
| 客户机 | Windows 11 24H2 专业版(简体中文) |
| 客户机配置 | 8G 内存 / 4 vCPU / 500G qcow2 / UEFI+TPM2.0 |