ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PVE 装 Windows XP:用老硬件配置重温经典

PVE 装 Windows XP:用老硬件配置重温经典 前段时间我陆续在 PVE 上安装了 Debian、Arch Linux、Windows 11、FreeBSD 等系统。折腾到这里突然产生了一个很单纯的想法既然虚拟化环境都搭好了为什么不装一台 Windows XP 怀旧一下Windows XP 发布于 2001 年距离今天已经过去二十多年。但有意思的是真正把它装进 PVE 之后会发现XP 其实依然可以非常流畅地运行。当然前提是不要试图给它塞进太多现代虚拟硬件。这次实验最后采用的思路非常简单SeaBIOS i440fx qemu32 IDE Disk RTL8139 1 GB RAM RDP没有 VirtIO Disk没有 QEMU Guest Agent也没有折腾 SPICE。最终效果反而非常舒服。一、为什么还要折腾 Windows XP当然不是为了真的把 Windows XP 当作日常操作系统。更多是几个原因。第一是怀旧。Windows XP 几乎代表了整个 PC 时代非常特殊的一段记忆蓝天白云壁纸 经典开始菜单 Windows Media Player Office 2003 QQ Winamp Flash VC6 各种老游戏对于很多人来说这可能就是第一次真正长期使用 PC 的时代。第二是老软件兼容。有些十几二十年前的软件、开发环境、游戏在现代 Windows 上反而越来越难运行。例如Visual C 6.0 早期 Delphi 老版 Office 老游戏 老驱动工具 一些 ActiveX 软件虚拟机恰好非常适合把这些东西封存在一个独立环境里。第三是 PVE 已经把虚拟化基础设施准备好了。相比为了 XP 再去找一台 Pentium 4 老电脑创建一台虚拟机显然简单得多。二、Windows XP 和现代虚拟机最大的区别现在创建 Windows 11 或 Linux VM通常会优先考虑UEFI Q35 VirtIO SCSI VirtIO NIC QEMU Guest Agent SPICE / QXL Balloon但这些东西对于 Windows XP 来说反而可能成为麻烦。Windows XP 最舒服的方式不是尽量给它最新的虚拟硬件。而是尽量模拟一台 XP 年代真实存在的 PC。因此这次我整体采用的是比较“复古”的配置。三、创建 Windows XP 虚拟机准备好 Windows XP Professional SP3 ISO 后在 PVE 中创建 VM。系统类型选择Microsoft Windows Windows XP / 2003PVE 本身仍然保留了针对 XP/2003 的系统类型。1. BIOS 和 Machine建议BIOS: SeaBIOS Machine: i440fx不要使用OVMF / UEFI Q35Windows XP 原本就是 BIOS 时代的系统。SeaBIOS i440fx 是最省心的组合。四、显卡Default 就够了创建 VM 时Graphic Card 默认是Default一开始我也考虑过找 Cirrus。但当前 PVE 中已经没有必要刻意使用它。因此最终直接保持Graphic Card: Default安装过程和 XP 桌面都没有出现问题。如果遇到显示兼容性问题也可以尝试Standard VGA这里没必要一开始就折腾 QXL。后面会看到我们甚至根本不需要依赖 SPICE。五、硬盘使用 IDE这是 XP 虚拟机非常重要的一点。磁盘采用Bus/Device: IDE我的虚拟硬盘容量设置为64 GB格式使用qcow2Windows XP 原生就认识 IDE Controller因此安装程序可以直接识别硬盘。如果一开始使用 VirtIO SCSIWindows XP 安装镜像通常并没有相应驱动还需要额外加载驱动。对于一台怀旧机来说完全没有必要。所以IDE反而是最简单的方案。Discard 不需要开启这里我没有开启DiscardXP 本身并没有现代 Windows 那样的 TRIM 支持。因此没有必要为了一个基本不会使用的功能增加额外配置。最终就是IDE Disk Discard: Off SSD Emulation: Off把它想象成一块传统机械硬盘即可。六、CPU 和内存CPU 配置Type: qemu32 Sockets: 1 Cores: 2内存1024 MB也就是2 Core 1 GB RAM对于 Windows XP 来说已经相当奢侈。实际运行速度非常快。没必要给4 Core 8 GB RAM CPU hostXP 根本利用不到而且老系统使用现代 CPU 特性反而可能增加兼容问题。七、网络RTL8139网卡选择Model: RTL8139 Bridge: vmbr0而不是 VirtIO。RTL8139 是 Windows XP 年代非常常见的网卡XP 对它的兼容性很好。安装完成后网卡可以直接正常工作。因此整套虚拟硬件实际上已经非常像一台二十年前的 PCCPU qemu32 RAM 1 GB Disk IDE NIC RTL8139 VGA Standard/Default VGA BIOS SeaBIOS Chipset i440fx八、安装 Windows XP之后正常从 ISO 启动。熟悉的蓝色安装界面再次出现Windows Setup选择硬盘、格式化 NTFS然后开始安装。整个过程和二十年前在真实 PC 上装 XP 基本没有区别。区别只是速度快了很多。以前安装 Windows XP 可能需要几十分钟。现在虚拟机里磁盘、CPU 性能都远远超过那个时代的 PC。九、设备管理器里的两个未知设备XP 安装完成后我检查了一下设备管理器基本所有硬件都已经正常识别。但出现了两个未知设备。第一个硬件 IDPCI\VEN_1AF4DEV_1002...这是VirtIO Balloon Device第二个ACPI\QEMUVGID这是QEMU Virtual Machine Generation ID它们都属于现代虚拟化环境中的设备。而对于一台 Windows XP 怀旧机来说实际上都没有什么必要。十、关闭 Balloon DevicePVE VM 默认可能开启Ballooning DeviceBalloon 主要用于动态调整虚拟机内存。但 XP 这里只有固定1024 MB根本没有动态内存的需求。因此直接在 PVE 中关闭 Balloon Device。关闭之后XP 中对应的未知设备自然就消失了。十一、关闭 VM Generation ID另一个ACPI\QEMUVGID是 VM Generation ID。它主要用于让现代操作系统知道虚拟机发生过Snapshot Restore Clone Migration之类的虚拟机状态变化。XP 并不会真正使用它。这个选项目前 PVE Web 页面中没有直接显示所以需要在 PVE Shell 中修改。假设 VMID 为152先确认qm config 152 | grep vmgenid然后关闭虚拟机qm stop 152禁用qm set 152 --vmgenid 0重新启动qm start 152再次进入 Windows XP 后ACPI\QEMUVGID这个未知设备也消失了。至此设备管理器非常干净。十二、QEMU Guest Agent 要不要装我的选择是不装。QEMU Guest Agent 对现代 Windows/Linux VM 非常有价值。例如读取 Guest IP Guest Shutdown 文件系统 Freeze PVE 与 Guest 通信但 Windows XP 已经不属于现代 VirtIO Windows Driver 的主要支持目标。想给 XP 安装 Guest Agent往往还需要寻找非常旧的 VirtIO Driver 和 Guest Agent。对于一台怀旧机而言完全属于为了功能而增加复杂度。所以这次干脆保持QEMU Guest Agent: DisabledPVE 仍然可以启动 VM 关闭 VM 做 Snapshot 做 Backup对我的使用没有什么实际影响。十三、SPICE 要不要折腾这个问题我一开始也考虑过。之前在 Debian、Arch Linux、Windows 11 VM 上使用 SPICE体验确实很好。例如动态分辨率 剪贴板 音频 remote-viewer但 XP 又不同。想要获得完整 SPICE 体验需要寻找能够支持 XP 的旧版本QXL Driver SPICE Guest Tools驱动版本和兼容性都比现代系统麻烦很多。后来我发现其实根本没有必要。因为 Windows XP Professional 自带Remote Desktop也就是 RDP。十四、开启 Windows XP RDP进入我的电脑 → 属性 → 远程勾选允许用户远程连接到这台计算机然后确保 Windows Firewall 中允许远程桌面或者确认 TCP 3389 已经监听netstat -an | find 3389正常会看到0.0.0.0:3389十五、一个容易踩的小坑账户必须有密码我第一次通过 Remmina 登录时遇到了用户名或密码错误一开始还以为是WORKGROUP Domain 用户名格式的问题。实际上原因非常简单Windows XP 本地账户没有设置密码。Windows XP 默认禁止空密码账户通过 RDP 远程登录。给用户设置密码后用户名 密码直接登录即可。甚至不需要COMPUTERNAME\username用户名本身就可以正常使用。十六、Ubuntu 使用 Remmina 连接 XP我的主力机是 Linux因此直接使用Remmina协议RDP服务器填 XP IP192.168.x.x然后Username: pveuser Password: ******即可连接。Windows XP 的 RDP 客户端体验让我有些意外。它比我预想中好很多。鼠标非常流畅窗口刷新也明显比 noVNC 更舒服。所以最后我的方案变成PVE noVNC ↓ 安装 / 故障排查 RDP ↓ 日常使用这样甚至都不需要 SPICE。十七、RDP 还能直接传声音更加意外的是RDP 甚至已经解决了声音问题。在 Remmina 中编辑连接在高级设置里将声音设置为Sound: Local重新连接 XP。然后 Windows XP 中会出现类似Microsoft RDP Audio Driver的音频设备。XP 中播放Windows XP Startup.wav声音会直接从 Ubuntu 主力机扬声器播放出来。也就是说Windows XP ↓ RDP Audio ↓ Remmina ↓ Ubuntu ↓ Speaker这一点非常舒服。甚至没有必要再给 PVE VM 添加AC97虚拟声卡。十八、最后采用的配置最终这台 XP VM 非常简单OS Windows XP Professional SP3 BIOS SeaBIOS Machine i440fx CPU qemu32 1 Socket 2 Core Memory 1024 MB Disk IDE 64 GB qcow2 Network RTL8139 Graphic Default Balloon Disabled VM Generation ID Disabled QEMU Guest Agent Disabled SPICE Not Used Remote RDP虚拟机结构可以简单理解为Proxmox VE │ ┌─────────┴─────────┐ │ │ SeaBIOS i440fx │ Windows XP SP3 │ ┌──────┼──────┐ │ │ │ IDE RTL8139 VGA │ │ Disk vmbr0 │ LAN │ Ubuntu │ Remmina │ RDP ┌───┴────┐ Video Audio它并没有使用多少现代虚拟化特性。但这恰恰是关键。十九、老系统其实不一定需要“现代化”折腾完成以后我最大的体会反而是对老系统来说最好的虚拟机配置并不一定是最新的虚拟硬件。Windows 11 可以VirtIO QEMU Guest Agent SPICE QXL UEFI Q35但 Windows XP 更适合IDE RTL8139 SeaBIOS i440fx RDP这和真实硬件其实是一样的。很多时候兼容性不是通过不断增加组件解决的。而是尽量减少系统不认识的东西。最终甚至把Balloon VMGenID QEMU Guest Agent SPICE都去掉了。反而得到了一台非常干净的 Windows XP VM。二十、Windows XP 还能用来干什么当然我不会建议把 Windows XP 当作现代日常操作系统。毕竟它已经停止安全更新很多年。但作为隔离的虚拟机它依然非常适合老游戏 老软件 Visual C 6.0 Office 2003 老版浏览器测试 老 Windows 软件兼容实验 软件考古 怀旧尤其配合 PVESnapshot Backup Clone随便怎么玩都不怕。软件搞坏了Rollback即可。这甚至比二十年前真正使用 XP 更舒服。写在最后二十多年前一台能流畅运行 Windows XP 的电脑可能意味着Pentium 4 512 MB / 1 GB RAM IDE HDD 百兆网卡 CRT 显示器今天它只是 PVE 中一个1 GB RAM 2 Core 几十 GB Disk的小虚拟机。但当熟悉的Windows XP启动音乐再次从 RDP 中传出来时还是会有一种非常奇怪的感觉。技术已经跨过了很多代。但有些东西一打开还是一下子回到了二十年前。
返回列表