Proxmox VE — Windows 7 VM 安装指南
📝 摘要
基于 Proxmox VE 8.4.0(i440fx/SeaBIOS)部署 Windows 7 Professional SP1 x64 虚拟机的完整实录,重点解决 VirtIO 驱动安装的兼容性陷阱。核心策略是先用 IDE 模式装系统、再切换 VirtIO Block 控制器,并写入 CriticalDeviceDatabase 注册表条目以避免 0x7B INACCESSIBLE_BOOT_DEVICE 蓝屏。
核心概念: Windows 7 不自带 VirtIO 驱动,且新版 virtio-win-0.1.271 标记为不兼容——必须使用 virtio-win-0.1.173,并通过临时磁盘触发硬件检测 + 注册表修复才能成功切换启动控制器。
关键技术栈 / 关键要点:
- VirtIO 驱动版本锁定 — 必须使用
virtio-win-0.1.173(最后一个含 Win7 签名驱动的版本),0.1.271 在 Device Manager 报不兼容 - IDE → VirtIO 两阶段安装 — Win7 安装程序无 VirtIO 驱动,先用
ide0装系统,装完驱动后再切virtio0 - CriticalDeviceDatabase 注册表修复 — 即使
viostor的Start=0、Group=SCSI miniport、文件齐全,缺硬件 ID 映射仍会蓝屏;需写入PCI\VEN_1AF4&DEV_1001与DEV_1042条目 - VirtIO Block 优于 VirtIO SCSI — Win7 下
vioscsi签名有问题,推荐virtio0+viostor,性能足够且兼容性好 - Windows 7 TLS 修复 — Win7 原生仅 TLS 1.0,需依次安装 KB3020369 → KB3125574 → KB3140245 并启用注册表 TLS 1.2 才能访问现代 HTTPS
关键结论 / 实践建议: 部署 Win7 on PVE 的难点不在系统安装本身,而在驱动切换的启动阶段——临时磁盘触发检测 + CriticalDeviceDatabase 注册表是避免蓝屏的两把钥匙;VNC 剪贴板受限时用 ISO 挂载方式在 VM 内执行脚本。
Proxmox VE — Windows 7 VM 安装指南
基于 PVE 8.4.0 (i440fx/SeaBIOS) 的 Windows 7 Professional SP1 x64 虚拟机部署实录,包含 VirtIO 驱动安装的完整踩坑与解决方案。
最终配置
| 配置项 | 值 | 说明 |
|---|---|---|
| VMID | 115 | |
| 名称 | win7 |
|
| OS 类型 | win7 |
SeaBIOS + i440fx,不用 UEFI |
| CPU | 4 cores, x86-64-v2-AES |
|
| 内存 | 4096 MB (balloon 2048) | |
| 系统盘 | 80 GB, VirtIO Block (virtio0), SAMSUNG2TB |
最终用 VirtIO Block 而非 VirtIO SCSI |
| 网络 | VirtIO, vmbr0 |
|
| 机器类型 | pc-i440fx-9.2+pve1 |
SeaBIOS |
| VirtIO 驱动 | virtio-win-0.1.173 |
必须用此版本,新版 0.1.271 不兼容 Win7 |
完整流程
1. 获取 Windows 7 ISO
来源:Internet Archive — Windows 7 Pro SP1 English (HeiDoc)
- 文件:
Win7_Pro_SP1_English_x64.iso(3.1 GB) - SHA-256:
3dae1a531b90fa72e59b4a86b20216188d398c8c070da4a5c5a44fe08b1b6e55
PVE 主机无法直接访问 archive.org,需从本地 Mac 下载后 scp 上传:
# 本地下载
curl -L -o /tmp/Win7_Pro_SP1_English_x64.iso \
'https://archive.org/download/win7-pro-sp1-english/Win7_Pro_SP1_English_x64.iso'
# 上传到 PVE
scp /tmp/Win7_Pro_SP1_English_x64.iso \
root@192.168.50.3:/var/lib/vz/template/iso/
2. 获取兼容 Win7 的 VirtIO 驱动
关键:必须使用 virtio-win-0.1.173,这是最后一个包含 Win7 签名驱动且有实际兼容性的版本。
- 新版
0.1.271的 Win7 驱动标记为不兼容,Device Manager 拒绝安装 - 下载地址:fedorapeople.org — virtio-win-0.1.173-4 (376 MB)
# PVE 主机可直接下载此 URL
curl -L -o /var/lib/vz/template/iso/virtio-win-0.1.173.iso \
'https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.173-4/virtio-win-0.1.173.iso'
3. 创建 VM(先用 IDE 模式)
Windows 7 安装程序不自带 VirtIO 驱动,必须先用 IDE 磁盘安装系统,安装完后再切换到 VirtIO。
qm create 115 \
--name win7 \
--ostype win7 \
--machine pc-i440fx-9.2+pve1 \
--cpu x86-64-v2-AES \
--cores 4 \
--sockets 1 \
--memory 4096 \
--balloon 2048 \
--net0 virtio,bridge=vmbr0,firewall=1 \
--scsihw virtio-scsi-single \
--ide0 SAMSUNG2TB:80 \
--ide2 local:iso/Win7_Pro_SP1_English_x64.iso,media=cdrom \
--ide3 local:iso/virtio-win-0.1.173.iso,media=cdrom \
--boot "order=ide2;ide0" \
--vga std \
--serial0 socket \
--agent 1
注意
--boot "order=ide2;ide0"的引号,分号会被 bash 解析为命令分隔符。
4. 安装 Windows 7
在 VNC 控制台正常安装,IDE 模式下硬盘直接可见,无需 Load Driver。
5. 安装 VirtIO 磁盘驱动
安装完系统后,需要安装 VirtIO 驱动才能切换磁盘控制器。
方法一(推荐):添加临时 VirtIO 磁盘触发硬件检测
qm set 115 --virtio1 SAMSUNG2TB:1
重启后 Windows 会检测到新硬件,Device Manager 出现带黄色感叹号的未知设备:
- 右键该设备 → Update Driver → Browse my computer
- 指向光驱
ide3→viostor\w7\amd64 - 安装 Red Hat VirtIO Block Device
❌ "Add Legacy Hardware" 方式无效 — 手动添加硬件时,viostor/vioscsi 驱动均报"不兼容" ❌ MSI 安装器方式不可靠 —
virtio-win-gt-x64.msi运行后驱动未正确注册为启动驱动
安装完成后移除临时磁盘:
qm set 115 --delete virtio1
方法二:如果方法一驱动仍不兼容
如果临时磁盘方式也报不兼容(偶尔发生),需要额外将 VirtIO 硬件 ID 写入 CriticalDeviceDatabase,制作注册表修复 ISO:
mkdir -p /tmp/virtio-fix
cat > /tmp/virtio-fix/virtio-fix.reg << 'EOF'
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1AF4&DEV_1001&SUBSYS_00000000&REV_00]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="viostor"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1AF4&DEV_1001]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="viostor"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1AF4&DEV_1042&SUBSYS_11000000&REV_01]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="viostor"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1AF4&DEV_1042]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="viostor"
EOF
cat > /tmp/virtio-fix/install.bat << 'EOF'
regedit /s virtio-fix.reg
echo Done! Please shutdown now.
pause
EOF
genisoimage -o /var/lib/vz/template/iso/virtio-fix.iso -J -r /tmp/virtio-fix/
rm -rf /tmp/virtio-fix
将修复 ISO 挂载到 VM(替换掉不再需要的 Win7 安装 ISO):
qm set 115 --ide2 local:iso/virtio-fix.iso,media=cdrom
qm reboot 115
进系统后双击光驱里的 install.bat,完成后关机。
6. 切换磁盘控制器为 VirtIO
qm stop 115
qm set 115 --delete ide0
qm set 115 --virtio0 SAMSUNG2TB:115/vm-115-disk-0.raw,size=80G
qm set 115 --boot "order=ide2;virtio0"
qm start 115
必须写入 CriticalDeviceDatabase 后才能成功切换,否则蓝屏
INACCESSIBLE_BOOT_DEVICE (0x7B)。 原因:Windows 启动时通过 CriticalDeviceDatabase 查找启动设备的驱动映射,即使viostor的Start=0、Group=SCSI miniport、驱动文件都存在,没有硬件 ID 映射仍然无法在启动阶段加载驱动。
7. 清理光驱
qm set 115 --delete ide2
qm set 115 --delete ide3
踩坑总结
| 问题 | 原因 | 解决 |
|---|---|---|
| PVE 主机无法下载 archive.org | 网络限制 | 从本地 Mac 下载后 scp 上传 |
| 安装时 Load Driver 选 viostor 不兼容 | virtio-win-0.1.271 不支持 Win7 | 使用 virtio-win-0.1.173 |
| Device Manager "Add Legacy Hardware" 安装 viostor/vioscsi 报不兼容 | Windows 向导无法匹配硬件 ID | 添加临时 VirtIO 磁盘让 Windows 自动检测硬件 |
| MSI 安装器装完驱动后切换 VirtIO 仍蓝屏 | 驱动未注册为启动驱动 | 写入 CriticalDeviceDatabase 注册表 |
| 驱动 Start=0、Group=SCSI miniport、文件都存在但仍蓝屏 | 缺少 CriticalDeviceDatabase 硬件 ID 映射 | 写入 PCI\VEN_1AF4&DEV_1001 和 DEV_1042 映射 |
| VNC 无法复制粘贴长命令 | Proxmox VNC 剪贴板限制 | 制作 ISO 挂载到 VM 内执行 |
VirtIO SCSI (scsi0 + vioscsi) 驱动不兼容 |
0.1.173 的 vioscsi 签名问题 | 改用 VirtIO Block (virtio0 + viostor) |
VirtIO Block vs VirtIO SCSI
- VirtIO Block (
virtio0/viostor):简单块设备,Win7 兼容性好,性能足够 - VirtIO SCSI (
scsi0+scsihw=virtio-scsi-single/vioscsi):更灵活(支持 TRIM/UNMAP 等),但 Win7 驱动兼容性差
对于 Win7 VM,推荐使用 VirtIO Block。
Windows 7 上网须知
Win7 原生只支持 TLS 1.0,无法访问现代 HTTPS 站点或 Windows Update。需手动安装更新:
- KB3020369(Servicing Stack Update)→ 重启
- KB3125574(Convenience Rollup)→ 重启
- KB3140245(TLS 1.2 for WinHTTP)→ 重启
安装 KB3140245 后,还需通过注册表启用 TLS 1.2:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /v DefaultSecureProtocols /t REG_DWORD /d 0x800 /f
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /v DefaultSecureProtocols /t REG_DWORD /d 0x800 /f
更新包无法直接从 Win7 VM 下载(因为 TLS 问题),需从其他机器下载后通过 ISO 或网络传输到 VM 内。