无法在来宾和主机之间拖放或复制粘贴文件

无法在来宾和主机之间拖放或复制粘贴文件

文档说:

在您的来宾中安装 Spice vdagent 将允许您在来宾和客户端操作系统之间复制和粘贴,在 2 个操作系统之间拖放文件……为了使代理正常工作,您的虚拟机必须具有 virtio 串行设备(并且相应的来宾驱动程序)以及 Spice SPICEVMC 通道。

它还说:

代理支持可以更好地与访客集成。例如,它允许在来宾操作系统和主机操作系统之间进行复制和粘贴、调整客户端窗口大小/全屏时动态分辨率更改、通过拖放进行文件传输……

该代理是在来宾操作系统中运行的守护进程/服务,因此如果在来宾操作系统安装过程中默认未安装它,则必须安装它。它还依赖一个virtio-serial PCI设备和一个专用的spicevmc char设备来实现guest和host之间的通信。必须将这些设备添加到虚拟机中,代理才能在来宾中工作。

我已经在客人身上安装了所有必需品。然后启用服务。

sudo apt install qemu-guest-agent spice-vdagent spice-webdavd

sudo systemctl start spice-vdagent
sudo systemctl enable spice-vdagent

sudo systemctl start qemu-guest-agent
sudo systemctl enable qemu-guest-agent

sudo systemctl start spice-webdavd
sudo systemctl enable spice-webdavd

使用以下脚本启动虚拟机。

#!/bin/bash

QEMU_AUDIO_DRV=spice

qemu-system-x86_64 -accel kvm,thread=multi -cpu host -smp 2 -m 8192 \
-drive file=/media/ismail/SSDWorking/_QEMU/vm_mint.qcow2,format=qcow2,if=virtio \
-machine vmport=off \
-vga virtio -usb -device qemu-xhci -device usb-tablet \
-soundhw hda \
-spice port=5911,addr=127.0.0.1,disable-ticketing \
-device virtio-serial-pci \
-chardev spicevmc,id=spicechannel0,debug=0,name=vdagent \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-device virtserialport,chardev=charchannel1,id=channel1,name=org.spice-space.webdav.0 \
-chardev spiceport,name=org.spice-space.webdav.0,id=charchannel1 \
-chardev socket,path=/tmp/qga.sock,server=on,wait=off,id=qga0 \
-device virtio-serial \
-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 \
-daemonize

remote-viewer --spice-shared-dir=/media/ismail/SSDWorking/_QEMU/VM_Share spice://127.0.0.1:5911 > /dev/null 2>&1 &

现在动态分辨率更改起作用了。但是,在来宾和主机之间拖放和复制粘贴文件不起作用。

需要明确的是,在访客和主机之间复制粘贴文本是可行的。在访客和主机之间拖放文本不起作用。对于文件来说,复制粘贴和拖放都不起作用。

可能是什么原因?

答案1

OP在这里,我的想法是,该文件将位于我放置文件的位置。但我发现,使用给定的配置,如果我将文件从主机拖动到来宾,则在资源管理器中打开一个文件夹,并且拖动的文件就在那里。

从主机拖放到来宾工作,而不是相反。

在来宾中,可以使用以下命令设置文件的保存位置:

$ spice-vdagent --help
....
  -f, --file-xfer-save-dir=<dir|xdg-desktop|xdg-download>     Set directory to file transfers files
  -o, --file-xfer-open-dir=<0|1>                              Open directory after completing file transfer

这里, 的值为-o0或1。

相关内容