使用 Virt-manager 安装 Windows XP SP3 的一些注意事项

Virt-manager 在安装 WIndows XP SP3 时可能会出现一些小问题。本帖尝试给这些问题提供一些解决方案,使 Windows XP SP3 可以在 kvm 虚拟机中完美运行。

注意:本方法只适用于 Windows XP SP3。对于更早版本的 Windows XP(比如 Windows XP SP2,或 Windows PE,或基于 XP SP2 的精简版系统 Windows for Legancy PCs),可能有更多需要注意的地方。

1 新建虚拟机

点击 "虚拟系统管理器" 工具栏最左侧的 "创建新虚拟机" 按钮,按向导指导创建虚拟机。

向导共 4 步,到第 4 步时,勾选 "在安装前自定义配置",而后点击 "完成"。

在弹出的虚拟机设置页面中,

(1)先切换到 "概况" 选项卡,将 "固件" 选择为 "BIOS":

(2)再切换到 "NIC:xx:xx:xx " 选项卡,将设备型号切换到 "virtio",否则 WIndows XP 将无法识别显卡。设置好后点击 "Apply"。

再切换到 "声卡 ich6" 选项卡,将 "型号" 切换到 "AC97",否则 Windows XP 将无法识别声卡。设置好后点击 "Apply"。

完成全部设置后,点击 "开始安装"。接下来就是按步骤安装 Windows XP 操作系统了。

2 在虚拟机中安装 SPICE Guest Tool

SPICE Guest Tool 包含了虚拟机显卡、网卡驱动程序,并可以让虚拟机与宿主机更好地交互,比如开启共享剪切板支持。

SPICE Guest Tool 可到这里下载:

进入该网页后,转到 "Windows binaries" 章节,点击其中的 spice-guest-tools 链接即可下载 SPICE Guest Tool 的安装包。

或直接访问如下 URL,下载最新版的安装包:

https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe

下载得到 spice-guest-tools-latest.exe 后,在该文件所在的目录中运行如下命令,将其封装为一个 iso 光盘镜像文件。

mkisofs -o spice-guest.iso -J -R -V "SPICE Guest Tools" spice-guest-tools-latest.exe

参数说明:

  • -o spice-guest.iso:指定输出的 ISO 文件名
  • -J:生成 Joliet 格式(Windows 兼容)
  • -R:生成 Rock Ridge 格式(Unix/Linux 兼容)
  • -V "SPICE Guest Tools":设置卷标(可选)
  • 最后一个参数:要打包到 ISO 中的文件

封装光盘镜像,是因为刚安装好的虚拟机还没有安装网卡驱动,无法联网,不能通过其他方法将安装包传输到虚拟机中。

最后,将该光盘镜像挂载到虚拟机中,并在虚拟机中运行 spice-guest-tools-latest.exe,按向导提示进行安装即可。

安装过程中可能多次会出现警告(如下图),点击 "仍然继续" 即可。

安装完毕后,重启虚拟机即可。

3 在虚拟机中安装 DirectX

SPICE Guest Tool 已经帮我们安装了显卡驱动,但一些游戏(比如宝石迷阵 3)运行后,仍可能出现显示异常。这是因为我们没有安装 DirectX。

适用于 Windowx XP 的 DirectX 可以到这里去下载:

4 配置共享文件夹

kvm 虚拟机有 2 种常用的文件共享方式:

  1. 使用 SPICE WebDAV,这种方法比较方便,但需要先在虚拟机中安装 SPICE WebDAV 客户端程序(Windows XP 不支持该功能)。而且这种方式的稳定性也不是很好。
  2. 使用 virtiofs,这种方法性能最好,也最稳定,但也需要先在虚拟机中安装对应的驱动程序,以及 WinFSP 服务,但是呢……virtiofs 需要 Windows 版本至少为 WIndows 10 及以上。

那么,相对比较好的方案可能就是使用 samba 服务了。在宿主机的 Linux 系统上配置 samba 服务的方法可参考下文:

但是:Windows XP 默认使用 SMB 1.0 协议,而现代 Samba 服务器(如 Ubuntu 24.04 中的版本)默认已禁用此不安全协议。

为此,我们必须对 Samba 进行一些额外的配置。

:warning: 警告
如下操作会降低 Samba 服务器的安全性,请确保该服务仅运行于内网中,且只能被可控的主机访问。

编辑 /etc/samba/smb.conf,在其中的 [global] 章节添加如下内容:

[global]
   # 启用SMB 1.0/CIFS协议以支持Windows XP
   server min protocol = NT1
   server max protocol = SMB3
   
   # 允许较旧的SMB1客户端连接
   ntlm auth = yes
   lanman auth = yes
   
   # 禁用SMB1服务器(但允许客户端连接)
   # 注意:这里我们保持服务器支持SMB1
   
   # 其他安全设置
   client min protocol = NT1
   client lanman auth = yes
   
   # 传统客户端兼容性
   client plaintext auth = yes
   
   # 工作组设置(应与Windows XP的工作组一致)
   workgroup = WORKGROUP
   server string = %h server (Samba)
   
   # 安全模式
   security = user
   map to guest = Bad User
1 Like

后端用QEMU-KVM
图形前端用GNOME-Boxes 这样性能一样 配置起来比Virt-Manager简单很多,也不会出现上述这些问题,它会自动处理好。

1 Like

感谢推荐,不过我用了一下,发现它相较于 Virt-manager 有几个小问题,对我而言不太方便:

  1. 似乎不支持修改创建的虚拟硬盘文件的保存位置。我的电脑系统盘比较小,其余数据是单独放在一个分区中的,但用 GNOME Boxes 创建的虚拟机,其虚拟硬盘似乎只能放在系统盘中。
    而 Virt manager 可以指定虚拟硬盘的存放位置,且可创建 "存储池" 管理虚拟介质,比较方便。
  2. 它的共享文件夹只支持 SPICE webdav,似乎没有对 virtiofs 的支持。相较于 webdav,其实 virtiofs 这种共享文件的方式,性能是更好的。
1 Like

同意共享文件夹的看法

Boxes 的虚拟机文件夹一般位于用户的主目录下的隐藏文件夹之一,所以使用其他用户打开它的时候,会加载其他用户的虚拟机文件夹(有就是有 没有就新建)

Boxes的虚拟硬盘文件保存在 $XDG_DATA_HOME 或 ~/.local/share/ 下它自己的子目录里面。/home 下面的用户文件一般不说“系统盘”。如果硬盘比较小,其实建议把 /home 单独挂载到大一点的硬盘。

原来如此,感谢解答。

回去翻了一下,具体位置应该是 ~/.local/share/gnome-boxes/images