
Cloud Hypervisor 上运行 Windows 客户机镜像制备、UEFI 引导、SAC 控制台与网络配置实战指南【免费下载链接】cloud-hypervisorA Virtual Machine Monitor for modern Cloud workloads. Features include CPU, memory and device hotplug, support for running Windows and Linux guests, device offload with vhost-user and a minimal compact footprint. Written in Rust with a strong focus on security.项目地址: https://gitcode.com/GitHub_Trending/cl/cloud-hypervisor本文围绕 Cloud Hypervisor一个面向现代云负载的 Rust 虚拟化监控器 VMM的 Windows 客户机支持展开完整讲解从「基于 QEMU 制备 Windows 系统镜像」到「使用 Cloud Hypervisor 引导与日常运维」的全流程。你将掌握 Windows Server / Windows 11 镜像的 UEFI VirtIO 制备方法、kvm_hyperv等关键启动参数、SAC 文本控制台、guest 网络与 RDP/SSH 配置以及 CPU/内存/设备热插拔等实操要点。文中涉及的所有命令均可直接对照 vmm/src/config.rs、arch/src/x86_64/hyperv_msrs.rs 等仓库源码交叉验证。支持范围与总体要求自 Cloud Hypervisor 0.10.0 版本起项目正式支持 Windows 客户机。前提条件只有两条宿主机需开启 KVM准备好「UEFI 引导、且已集成 VirtIO 驱动」的 Windows 客户机镜像详见 docs/uefi.md。任何现代 Windows Server 版本均兼容Windows 11 同样支持。Cloud Hypervisor 已实测通过的系统包括Windows Server 2019、Windows Server Core 2004与Windows 11 IoT Enterprise LTSC 2024。需要特别强调的是当前阶段只支持 UEFI 引导的 Windows 镜像——这意味着在 Windows 安装阶段以及后续所有使用中都必须具备 OVMF 固件BIOS 引导不被支持。原因在于 Cloud Hypervisor 的固件路径依赖 EDK II 风格的 UEFI 固件x86-64 对应CLOUDHV.fddocs/uefi.md 明确指出Windows guests under Cloud Hypervisor only support UEFI boot, therefore OVMF is mandatory。镜像制备Image PreparationCloud Hypervisor 本身不提供 Windows 安装界面因此镜像制备阶段需要借助 QEMU推荐版本 5.0.0完成系统安装QEMU仅用于制备阶段最终镜像完全由 Cloud Hypervisor 驱动。前置条件清单项目说明QEMU版本 5.0.0 推荐Windows 安装 ISO通过 MSDN、Visual Studio 订阅、评估中心等渠道获取VirtIO 驱动 ISOstable-virtioWindows 11 请使用 VirtIO Windows 11 attestation 文件virtio-win11-attestation-0.1-258.zip固件Cloud Hypervisor 用CLOUDHV.fdQEMU 用OVMF.fd磁盘空间Windows Server 建议镜像 30GWindows 11 建议放大到 64GB满足其最小硬件要求TPM 2.0仅 Windows 11需 TPM 2.0 支持CPU 核数仅 Windows 112 核及以上建立公共变量先定义一组 shell 变量后续命令均复用它们IMG_FILEwindows-disk.raw WIN_ISO_FILEen_windows_server_version_2004_updated_may_2020_x64_dvd_1e7f1cfa.iso VIRTIO_ISO_FILEvirtio-win-0.1.185.iso OVMF_DIR./FV创建空的 raw 格式磁盘镜像qemu-img create -f raw $IMG_FILE 30GWindows Server 安装QEMUqemu-system-x86_64 \ -machine q35,accelkvm \ -cpu host \ -m 4G \ -bios ./$OVMF_DIR/OVMF_CODE.fd \ -cdrom ./$WIN_ISO_FILE \ -drive file./$VIRTIO_ISO_FILE,index0,mediacdrom \ -drive ifnone,idroot,file./$IMG_FILE \ -device virtio-blk-pci,driveroot,disable-legacyon \ -device virtio-net-pci,netdevmynet0,disable-legacyon \ -netdev user,idmynet0 \ -vga std要点说明-machine q35,accelkvm使用 q35 机型并开启 KVM 加速q35 是 OVMF/UEFI 引导所必需的平台。-bios指向 OVMF 固件磁盘与网卡均使用 VirtIO 设备disable-legacyon强制使用现代 virtio 1.0 接口与后续 Cloud Hypervisor 的设备模型保持一致。安装过程中当 Windows 询问存储驱动时需要手动指向 VirtIO 光盘并安装存储控制器驱动viostor随后附加硬盘才会可见安装才能继续。Windows 11 请勿在此时安装网络驱动若不想被强制登录/创建 Microsoft 账户网络设置界面选择I dont have internet即可。Windows 11 安装QEMU swtpmWindows 11 有 TPM 2.0 与双核的最低硬件要求TPM 由swtpm软件模拟提供。先用swtpm启动 TPM 2.0 后台服务# Create directory to store state mkdir -p /tmp/mytpm1 # Start swtpm daemon for TPM 2.0 support swtpm socket \ --tpm2 \ --ctrl typeunixio,path/tmp/swtpm-sock \ --tpmstate dir/tmp/mytpm1 \ --flags startup-clear \ --log level20 \ --log file/tmp/swtpm.log \ --daemon再启动 QEMU 完成 Windows 11 安装qemu-system-x86_64 \ -machine q35,accelkvm \ -cpu host \ -m 4G \ -bios ./$OVMF_DIR/OVMF.fd \ -cdrom ./$WIN_ISO_FILE \ -drive file./$VIRTIO_ISO_FILE,index0,mediacdrom \ -drive ifnone,idroot,file./$IMG_FILE \ -device virtio-blk-pci,driveroot,disable-legacyon \ -device virtio-net-pci,netdevmynet0,disable-legacyon \ -netdev user,idmynet0 \ -vga std \ -smp 4 \ -chardev socket,idchrtpm,path/tmp/swtpm-sock \ -tpmdev emulator,idtpm0,chardevchrtpm \ -device tpm-tis,tpmdevtpm0两个关键差异原文档特别强调必须-smp 2以上示例为 4以满足 Windows 11 双核最低要求末尾三行chardev / tpmdev /tpm-tis设备用于接通 TPM 2.0不能使用OVMF_CODE.fd否则 QEMU 报错qemu: could not load PC BIOS ././FV/OVMF_CODE.fd需要改用OVMF.fdWindows 11 attestation 驱动场景下需进入viostor目录手动安装存储控制器驱动。TPM 的更多细节Cloud Hypervisor 侧仅实现 TPM 2.0 的 CRB 接口devices/src/tpm.rs 中可见CapCRB、CRB_LOC_STATE等 CRB 寄存器定义参见 docs/tpm.md其中同时给出了 Cloud Hypervisor 侧--tpm socket...参数的启用方式与 guest 内tpm_crb内核模块、/dev/tpm0设备的验证方法。使用 Cloud Hypervisor 引导 Windows 镜像基本启动命令安装完成并做完下述「镜像配置」步骤后即可用 Cloud Hypervisor 引导cloud-hypervisor \ --kernel ./$OVMF_DIR/CLOUDHV.fd \ --disk path./$IMG_FILE,image_typeraw \ --cpus boot1,kvm_hypervon \ --memory size4G \ --serial tty \ --console off \ --net tap首次执行前请先阅读本仓库 README.md 的 Getting Started 章节并务必给 cloud-hypervisor 二进制授予正确 capability以便其在宿主机上创建 TAP 接口否则上述命令会失败。必须始终遵循两条规则在--kernel选项里携带 OVMF 固件CLOUDHV.fd在--cpus选项里加上kvm_hypervon。kvm_hypervon的含义可以在源码中印证vmm/src/config.rs 将其解析为Toggle布尔开关vmm/src/vm_config.rs 中默认值为false当开启后vmm/src/cpu.rs 会把它传入 CPUID 生成generate_common_cpuid与 MSR 更新逻辑generate_required_msr_updates。其本质是向 Windows 客户机暴露 KVM 的 Hyper-V 兼容接口对应 arch/src/x86_64/hyperv_msrs.rs 中HV_X64_MSR_GUEST_OS_ID、HV_X64_MSR_HYPERCALL等一系列0x4000xxxxHyper-V MSR让 Windows 的时钟与中断机制正常工作——这正是 Windows 客户机能否稳定运行的关键之一。地址空间限制max_phys_bits当宿主机处理器支持的物理地址空间超过 39 位时可能需要对地址空间做裁剪在--cpus参数后追加max_phys_bitsXX为需要支持的位数。Windows 至少实测支持 39 位地址空间。源码层面max_phys_bits默认值为DEFAULT_MAX_PHYS_BITS 46vmm/src/vm_config.rs解析入口在 vmm/src/config.rs实际生效时取宿主物理位数与配置值的较小者physical_bits()实现为cmp::min(host_phys_bits, max_phys_bits)vmm/src/vm.rs并在 vmm/src/cpu.rs 处参与 CPUID 的phys_bits计算。后台化运行需要将 Cloud Hypervisor 进程转为守护进程时可使用nohup同时做必要的 STDIO 重定向简单场景下把全部输出重定向到/dev/null即可nohup cloud-hypervisor \ --kernel ./$OVMF_DIR/CLOUDHV.fd \ --disk path./$IMG_FILE,image_typeraw \ --cpus boot1,kvm_hypervon \ --memory size4G \ --serial tty \ --console off \ --net tap \ /dev/null 21 关于 Windows 11 TPM 的已知情况需要如实说明目前 Cloud Hypervisor 下 Windows 11 客户机带 TPM 2.0 运行时尚未验证成功会出现thread vcpu0 panicked。不过不带 TPM 运行 Windows 11 是可行的因此上文基本命令同样适用于 Windows 11 虚拟机。镜像配置Image Configuration设备驱动补全由于安装时某些设备如网络卡可能未使用QEMU 安装完成后镜像内可能仍存在无驱动设备。为确保后续配置与使用大多依赖网络请再次在 QEMU 下引导镜像打开设备管理器确认所有驱动尤其是网卡均已正确安装若网卡未知右键选择Update driver并浏览到 VirtIO 光盘中的NetKvm目录安装驱动。另外由于 Cloud Hypervisor 可能引入新设备当 RDP 可用后建议在 Cloud Hypervisor 引导下重复一遍上述检查流程。启用 Windows 特殊管理控制台SACCloud Hypervisor没有实现 VGA 适配器因此基于文本的控制台 SACSpecial Administration Console是管理 Windows 客户机的重要工具。先在 QEMU 下引导镜像。对于所有非 Server 版 Windows需先在系统的Optional features可选功能菜单中下载并启用 SAC。随后以管理员权限执行以下命令永久启用 SACbcdedit /emssettings emsport:1 emsbaudrate:115200 bcdedit /ems on bcdedit /bootems on启用后即可在 Cloud Hypervisor 下引导镜像串口上会看到 SAC 提示符Computer is booting, SAC started and initialized. Use the ch -? command for information about using channels. Use the ? command for general help. SAC在 SAC 中打开 guest 控制台会话SACcmd The Command Prompt session was successfully launched. SAC EVENT: A new channel has been created. Use ch -? for channel help. Channel: Cmd0001 SACch -si 1ch -si 1切换到刚才创建的Cmd0001通道即可获得 guest 内的命令行。更完整的 SAC 用法可参考文末 链接 中 Emergency Management Services 文档。网络配置基础组网最简单的方式是使用--net tapCloud Hypervisor 会在宿主机创建vmtapX设备默认 IPv4 地址为192.168.249.1。SAC 可用后在 guest 内配置静态 IPSACi 10 192.168.249.2 255.255.255.0 192.168.249.1其中10是i命令列出的设备索引。guest 访问互联网在 guest 内添加 DNS 服务器用netsh或通过Network and Connectivity Center编辑适配器属性在宿主机配置流量转发将NET_DEV替换为宿主机的网络设备名NET_DEVwlp3s0 sysctl -w net.ipv4.ip_forward1 iptables -t nat -A POSTROUTING -o $NET_DEV -j MASQUERADE如需允许宿主机向 guest 发起 ICMP ping可在 guest 内执行netsh advfirewall firewall add rule nameAllow ICMPv4 protocolicmpv4:8,any dirin actionallow启用远程桌面RDP方式一图形界面QEMU 下运行SystemPropertiesRemote在属性窗口中选择 Allow remote connections to this computer点击 Select Users 将用户加入允许列表。方式二PowerShellSet-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\ -Name fDenyTSConnections -Value 0 Enable-NetFirewallRule -DisplayGroup Remote Desktop Add-LocalGroupMember -Group Remote Desktop Users -Member someuser管理员始终可以通过 RDP 登录非管理员用户必须显式加入 Remote Desktop Users 组。配置完成后RDP 客户端即可连接192.168.249.2。SSH在 guest 内以 PowerShell 启用 OpenSSH ServerAdd-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType ‘Automatic’随后即可从远端 SSH 登录例如ssh administrator192.168.249.2。在 Windows 11 上还需额外放行防火墙端口 22New-NetFirewallRule -Name sshd -DisplayName OpenSSH Server -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22更详细的 OpenSSH 配置指南见文末 链接 中的 MSDN 文章。热插拔能力HotplugWindows 客户机下各类资源的热插拔支持情况如下资源热添加热移除说明CPU支持不支持Windows 不支持 CPU 热移除即使通过ch-remote调小 vCPU 数量也需在同一 hypervisor 实例内重启 OS 后才生效内存支持名义支持实际受限pnpmem.sys驱动声称支持 RAM 热移除但被拔出内存必须未在使用且无保留页多数场景下热移除无法成功ch-remote调小内存后同样需重启 OS 才可见网络设备支持支持—磁盘支持支持热插后需在 guest 内将磁盘 online可借助 PowerShell 的Get-Disk/Set-Disk完成配置与激活CPU/内存热插拔通过ch-remote的 resize API 触发参见 docs/hotplug.md# 增加 vCPU 数 ./ch-remote --api-socket/tmp/ch-socket resize --cpus 8 # 减少 vCPU 数Windows 下需重启 OS 后生效 ./ch-remote --api-socket/tmp/ch-socket resize --cpus 2 # 调整内存大小 ./ch-remote --api-socket/tmp/ch-socket resize --memory 3G磁盘热插拔可参考add-disk/remove-deviceAPIdocs/hotplug.md例如./ch-remote --api-socket/tmp/ch-socket add-disk path/foo/bar/cloud.img,image_typeraw ./ch-remote --api-socket/tmp/ch-socket remove-device _disk0调试DebuggingWindows 客户机的内核级调试有两种方式均有独立文档Windows Kernel Debugging over virtio-net (KDNET)Windows Kernel Debugging over serial (KDCOM)链接Fedora VirtIO guide for WindowsVirtIO 驱动在 Windows 虚拟机中的安装指引VirtIO 驱动二进制stable-virtio 发行目录VirtIO 驱动源码kvm-guest-drivers-windowsEmergency Management ServicesSAC / EMS 串口管理文档OpenSSH server/client configurationMSDNWindows guest debugging under KVMLinux KVM 维基ENLIGHTENING KVMFOSDEM 2019 关于 KVM Hyper-V 仿真接口的演讲资料可深入理解kvm_hypervon背后的实现提示链接地址均为原文所列外部参考资料的名称与主题索引原始 URL 请直接查阅 docs/windows.md 末尾的 Links 小节。小结本文完整覆盖了在 Cloud Hypervisor 上运行 Windows 客户机的三条主线镜像制备QEMU VirtIO OVMFWindows 11 额外叠加 swtpm TPM 2.0、日常引导与配置CLOUDHV.fd固件、kvm_hypervon、SAC 控制台、网络 / RDP / SSH、以及运维能力热插拔与双通道内核调试。其中kvm_hyperv、max_phys_bits等关键参数都可在 vmm/src/config.rs、vmm/src/cpu.rs、arch/src/x86_64/hyperv_msrs.rs 中找到解析与生效逻辑做到文档给步骤、源码给原理。按此流程操作即可获得一个完全由 Cloud Hypervisor 驱动、具备完整网络与远程管理能力的 Windows 客户机。【免费下载链接】cloud-hypervisorA Virtual Machine Monitor for modern Cloud workloads. Features include CPU, memory and device hotplug, support for running Windows and Linux guests, device offload with vhost-user and a minimal compact footprint. Written in Rust with a strong focus on security.项目地址: https://gitcode.com/GitHub_Trending/cl/cloud-hypervisor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考