QEMU的内置Samba服务
该-net user,smb选项不起作用是由于与较新的Samba版本(> = 4)不兼容而引起的。QEMU v2.2.0和更高版本中已通过以下更改修复了此问题:
(Debian已将后两个补丁反向移植到Jessie中存在的2.1 + dfsg-6。)
用法
您可以像\\10.0.2.4\qemu使用用户网络一样导出一个文件夹:
qemu-system-x86_64 \
-net user,smb=/absolute/path/to/folder \
-net nic,model=virtio \
...
使用这些选项成功启动QEMU时,/tmp/qemu-smb.*-*/将创建一个包含的新目录smb.conf。如果速度足够快,则可以修改此文件以使路径为只读或导出更多文件夹。
操作模式
只要通过“用户”网络访问端口139或445,就会执行samba守护程序。通过smbd进程的标准输入/输出/错误进行通信。这就是较新的守护程序失败的原因,它会将错误消息而不是协议消息写入管道。
由于这种操作方法,守护程序将不会侦听主机端口,因此只能由来宾访问。因此,网络中的其他客户端甚至本地用户都无法使用此守护程序访问文件夹。
由于QEMU v2.2.0打印机共享是通过samba配置完全禁用的,因此,这里不再需要担心。
速度取决于网络适配器,因此建议在Windows下使用virtio netkvm驱动程序。
还要注意,守护程序由/usr/sbin/smbd编译时指定的绝对路径(通常为)执行(使用--smbd选项)。每当您需要尝试使用新的二进制文件或插入smbd文件时,都需要在该路径处修改文件。
其他警告
可执行文件(*.exe)必须在主机(chmod +x FILE)上可执行,以使来宾具有执行权限。要允许执行任何文件,请将acl allow execute always = True选项添加到共享中。
允许执行任何文件(基于QEMU v2.2.0)的示例只读 smb.conf配置:
...
[qemu]
路径= / home / peter / windows
只读= 是
来宾ok = true
强制用户= peter
acl允许执行总是= true