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 种常用的文件共享方式:
- 使用 SPICE WebDAV,这种方法比较方便,但需要先在虚拟机中安装 SPICE WebDAV 客户端程序(Windows XP 不支持该功能)。而且这种方式的稳定性也不是很好。
- 使用 virtiofs,这种方法性能最好,也最稳定,但也需要先在虚拟机中安装对应的驱动程序,以及 WinFSP 服务,但是呢……virtiofs 需要 Windows 版本至少为 WIndows 10 及以上。
那么,相对比较好的方案可能就是使用 samba 服务了。在宿主机的 Linux 系统上配置 samba 服务的方法可参考下文:
但是:Windows XP 默认使用 SMB 1.0 协议,而现代 Samba 服务器(如 Ubuntu 24.04 中的版本)默认已禁用此不安全协议。
为此,我们必须对 Samba 进行一些额外的配置。
警告
如下操作会降低 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




