在 KVM/QEMU GPU 直通的方案中,Looking Glass 凭借极低的延迟成为了许多单机双系统用户的首选。然而,很多用户在搭建好 Looking Glass 后,会发现宿主机(Linux)与虚拟机(Windows)之间的剪贴板无法同步,极大地影响了跨平台协作效率。
Looking Glass 本身并不直接处理剪贴板的传输,而是**依赖 SPICE 协议的通道(vdagent)**来实现这一功能。要实现双向无缝同步,需要正确配置 Libvirt XML、虚拟机驱动与代理程序 以及 Looking Glass 客户端参数。
以下是完整的配置步骤。
第一步:配置虚拟机 XML(Libvirt)
我们需要在虚拟机的配置文件中添加 SPICE 服务器以及与之通信的 VirtIO 串口通道。
打开终端,编辑你的虚拟机 XML 配置(将
win10替换为你的虚拟机名称):virsh edit win10在
<devices>标签内,确保存在并添加以下配置:1. 添加 SPICE 图形支持(仅用于传输控制信号和剪贴板,不用于显示图像)
<graphics type='spice' autoport='yes'> <listen type='address' address='127.0.0.1'/> <image compression='off'/> </graphics>注意:将监听地址设置为
127.0.0.1可以确保安全,防止外部网络访问该 SPICE 服务。2. 添加 VirtIO 串口控制器(如果已有可忽略)
<controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/> </controller>(注:
slot地址需根据你 XML 的实际 PCI 布局自动分配或调整)3. 添加 SPICE 代理通道
<channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel>保存并退出编辑器。
第二步:在 Windows 虚拟机中安装驱动与代理
光有通道还不够,Windows 内部必须有对应的驱动程序和后台代理(Agent)来处理剪贴板事件。
- 启动虚拟机。
- 安装 VirtIO 驱动:
如果之前没装完整,请下载最新的 VirtIO Win ISO 驱动包。确保设备管理器中的VirtIO Serial Driver已正确安装且无黄色感叹号。 - 安装 SPICE Guest Tools:
- 访问 SPICE 官网或直接下载 spice-guest-tools 官方安装包。
- 在 Windows 虚拟机内运行该安装程序。它会自动安装
spice-vdagent服务。
- 验证服务运行状态:
- 按下
Win + R,输入services.msc。 - 检查 Spice VDAgent 服务是否处于“正在运行”状态,并将其启动类型设置为“自动”。
- 按下
第三步:启动 Looking Glass 客户端
Looking Glass 客户端启动时需要与本机的 SPICE 接口建立连接,从而充当剪贴板的中转站。
通常情况下,Looking Glass 会尝试自动连接本地默认的 SPICE 端口。如果你的配置非标准,或者为了确保剪贴板正常工作,建议在启动 Looking Glass 客户端时显式声明 SPICE 参数。
命令行启动
looking-glass-client -c 127.0.0.1 -p 5900
-c参数指定 SPICE 服务器地址。-p参数指定 SPICE 端口(默认通常是5900,可通过virsh domdisplay win10查看实际分配的端口)。
配置文件持久化
你也可以将此配置写入 Looking Glass 的配置文件 ~/.config/looking-glass/client.ini 中,避免每次输入参数:
[spice]
host=127.0.0.1
port=5900
enable=yes
常见排查与优化
如果完成上述配置后剪贴板依然无法同步,请按照以下步骤排查:
1. 检查宿主机(Linux)端权限
在某些 Linux 发行版(如 AppArmor 或 SELinux 启用的系统)上,Libvirt 可能会限制 Looking Glass 客户端读取 SPICE 的 Unix Socket。
- 检查
/var/log/libvirt/qemu/下对应虚拟机的日志,看是否有Permission denied相关的报错。 - 若使用 Unix Socket 代替 TCP 端口,确保当前加入 Looking Glass 的用户在
libvirt或kvm用户组中。
2. Wayland 与 X11 环境差异
在 Wayland 桌面环境(如 GNOME 默认 Wayland 会话)下,由于安全机制限制,后台程序获取系统剪贴板的行为可能会受到严格限制。
- 临时解决方案:尝试切换回 X11 (Xorg) 会话,看剪贴板是否能恢复正常。
- 若必须在 Wayland 下运行,确保你的
looking-glass-client是通过原生 Wayland 编译的,或者使用了 XWayland 兼容层,并赋予了相应的窗口权限。
3. 双向同步失效(单向能用)
如果只能单向复制(例如只能 Windows 复制到 Linux,反之不行):
- 检查 Windows 任务管理器中是否存在
vdagent.exe进程,尝试结束进程并手动重新运行C:\Program Files\SPICE Guest Tools\vdagent.exe。 - 避免在 Windows 中开启“跨设备同步剪贴板”或第三方剪贴板历史记录工具(如 Ditto),因为它们可能会抢占剪贴板钩子导致 SPICE 代理失效。