macOS 11.0宿主机与Ubuntu 20.04虚拟机复制粘贴故障排查
问题拆解与解决办法
先说说为什么qemu-guest-agent启动失败
你踩了个常见的坑——手动用QEMU命令启动虚拟机时,默认不会给guest agent预留通信通道。Proxmox的文档之所以直接装agent就能用,是因为Proxmox后台已经自动帮你配置了virtio-serial设备。但你自己写QEMU启动命令的话,必须手动加上这个设备,不然agent找不到通信接口,自然启动失败。
修复agent启动问题的步骤
- 先把当前运行的虚拟机关掉
- 修改你的QEMU启动命令,加上这几行参数:
简单解释下:-device virtio-serial-pci \ -chardev socket,id=qga,path=/tmp/qga.sock \ -device virtserialport,chardev=qga,name=org.qemu.guest_agent.0-device virtio-serial-pci:给虚拟机加一个virtio串行控制器,这是agent通信的硬件基础-chardev socket...:在宿主机上创建一个Unix套接字,作为宿主机和虚拟机的通信管道-device virtserialport...:把这个套接字绑定到虚拟机内部的guest agent专用设备上
- 重新启动虚拟机,回到Ubuntu里再试试启动agent:
这次用sudo systemctl start qemu-guest-agent sudo systemctl enable qemu-guest-agent # 顺便设成开机自启systemctl status qemu-guest-agent看状态,应该就能显示active了。
再解决跨系统复制粘贴的需求
其实复制粘贴不一定非要依赖guest agent,有两种更实用的方案,推荐优先用第一种:
方案1:用SPICE协议实现自动双向剪贴板(强烈推荐)
SPICE是QEMU原生的图形协议,自带剪贴板共享功能,用起来很顺畅:
- 在Ubuntu虚拟机里装SPICE的客户端工具:
sudo apt install spice-vdagent - 修改QEMU启动命令,把原来的VGA设备换成virtio-vga,再加上SPICE服务器参数:
-device virtio-vga \ -spice port=5900,addr=127.0.0.1,disable-ticketing=on - 宿主机(macOS)上装个SPICE客户端,比如
virt-viewer,用Homebrew装就行:brew install virt-viewer - 启动虚拟机后,在macOS终端跑
remote-viewer spice://localhost:5900连接虚拟机,这时候剪贴板就可以双向自由复制粘贴了,完全自动,不用额外操作。
方案2:通过guest agent实现剪贴板同步(命令行方式)
如果你一定要用guest agent来做,那得在agent正常启动后,用命令行手动同步:
- 宿主机装qemu工具包(Homebrew直接装qemu就行:
brew install qemu,自带qga客户端) - 宿主机复制到虚拟机:把macOS剪贴板内容发送给Ubuntu
pbpaste | qemu-ga -p /tmp/qga.sock cmd set-clipboard - 虚拟机复制到宿主机:把Ubuntu剪贴板内容拉到macOS
这种方式是手动触发的,没有自动同步,体验不如SPICE,所以只推荐有特殊需求的时候用。qemu-ga -p /tmp/qga.sock cmd get-clipboard | pbcopy
最后总结一下
优先选SPICE方案,配置简单还能自动同步剪贴板;如果非要用guest agent,记得先在QEMU启动命令里加上virtio-serial的配置,不然agent根本启动不起来。
内容的提问来源于stack exchange,提问作者user3626019
相关产品推荐
相关产品推荐

