![fedora 22 与 virt-manager 和 Windows 7 guest 虚拟机的文件共享问题](https://linux22.com/image/7567/fedora%2022%20%E4%B8%8E%20virt-manager%20%E5%92%8C%20Windows%207%20guest%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E6%96%87%E4%BB%B6%E5%85%B1%E4%BA%AB%E9%97%AE%E9%A2%98.png)
我正在使用 cinnamon 桌面运行 Fedora 22(64 位、16GB 内存、ext4 启动磁盘),并且我想使用虚拟机管理器作为来宾运行 Windows 7。但是,我在 Fedora 22 主机和虚拟机 (Windows 7) 之间共享文件时遇到问题。在发帖之前,我搜索了这个论坛;这个问题显然已经不止一次得到回答。
然而,一个答案提到了一个网页http://www.linux-kvm.com,处于离线状态。第二个答案提到http://www.linux-kvm.org/page/9p_virtio。该网页显然已过时;它显示了一个 [add : filesystem] 示例,其中 type=passthrough,并且未指定驱动程序。当前的虚拟机管理器 (virt-manager) 强制 type=mount,并提供默认、句柄或路径的驱动程序选择。
无论如何,我通过安装了 samba 和虚拟机管理器
sudo dnf install system-config-samba
sudo dnf install virt-manager
然后,我创建了 /mnt/disk1 (包含 1 个文件)和 /myshareddisk1 (空)目录,并对它们都使用了 chmod 777。然后我将以下预告片添加到 /etc/samba/smb.conf 中:
[mydisk1]
comment = My Disk1
path = /mnt/disk1
public = yes
writeable = yes
然后我使用以下命令启用 samba 对 /mnt/disk1 的访问。
semanage fcontext -a -t samba_share_t "/mnt/disk1(/.*)?"
restorecon -R -v /mnt/disk1
然后,我使用以下命令为 root 用户和我的另一个用户 steve 创建 samba 密码。
smbpasswd -a root
smbpasswd -a steve
然后我启动了 samba,并通过以下方式将 /myshareddisk1 挂载为 /mnt/disk1:
systemctl start smb
mount //localhost/mydisk1 /myshareddisk1 -o user=steve
然后我通过两者验证了 samba 进程
smbclient -U steve -L localhost
ls /myshareddisk1 : the /mnt/disk1 file was displayed.
然后我启动虚拟机服务(systemctl start libvirtd)并启动 virt-mgr 应用程序。然后我创建了一个新的虚拟机,并使用 Windows 7 iso 将 Windows 7 安装到该计算机中。 Windows 7虚拟机运行正常。
到目前为止,一切都很好。然而,如果我无法在 Fedora 和 WINDOWS 之间进行文件共享,那么这对我来说就没有价值了。
使用 virt-mgr gui,我尝试向 Windows 7 虚拟机添加 samba 文件系统;生成了一条错误消息。
Error starting domain: internal error:
process exited while connecting to monitor:
2016-05-23T23:54:21.548427Z qemu-system-x86_64:
-device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,
mount_tag=shared,bus=pci.0,addr=0x8:
Virtio-9p Failed to initialize fs-driver with id:fsdev-fs0
and export path:/home/steve/shared02
2016-05-23T23:54:21.548491Z qemu-system-x86_64:
-device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,
mount_tag=shared,bus=pci.0,addr=0x8:
Device 'virtio-9p-pci' could not be initialized
然后我谷歌研究,发现(也许)virt-mgr不喜欢源目录/home/steve/shared02,因为它不属于root用户。然后我尝试了 /mnt/disk1 的源目录。这允许 virt-mgr 启动 Windows 7 虚拟机,但不提供任何文件共享访问。然后,我尝试了 /myshareddisk1 的源目录,该目录(在 samba 安装之前)由 root 用户拥有。这重新生成了错误:
Error starting domain: internal error:
process exited while connecting to monitor:
...
然后,我更改了安装(mount //localhost/mydisk1 /myshareddisk1 -o user=root)并重复了该过程:virt-mgr 仍然产生错误启动域消息。然后,我在 virt-mgr 中尝试使用各种驱动器/模式组合来添加文件系统 - 没有什么乐趣。
问题:如果可能,请直接给出答案,而不是参考网页。
我更喜欢虚拟机管理器之类的 GUI,而不是终端中的 qemu 命令。有人实现了我想要的吗?或者,Fedora 22 下的虚拟机管理器是否存在错误?
假设虚拟机管理器下的文件共享不可行,是否有其他 GUI 可以工作? Cinnamon 的盒子应用程序似乎不允许太多定制,所以这将是我最后的 GUI 选择。
假设没有可行的 GUI,我应该运行什么终端命令(例如 qemu 命令)来完成我想要的任务?如果此处提供了示例命令,我可能可以对其进行逆向工程定制。命令必须允许从 iso 安装 Windows 7、关闭 Windows 7(保存映像),然后重新启动(现在安装的)Windows 7 的映像。