更简单的方法 - 不太灵活,但你不需要花那么多时间
他们的方式你已经配置qemu
似乎是默认主机 NAT 网络(又名。qemu -net nic -net user
配置)
默认情况下,当从访客访问时,您的主机(在本例中为您的 Mac)将在 10.0.2.2 上找到。从您的访客内部,您可以连接到主机(您的 MAC)上的服务(地址为 10.0.2.2)。但这是使用 NAT,因此您无法轻松返回其他方式。
例如,如果您决定连接到 SSH 服务和在来宾中运行的 Web 服务器,则需要启动qemu
修改后的选项如下:
qemu -net nic -net user,hostfwd=tcp::2222-:22,hostfwd=tcp::22280-:80
这样做的目的是将连接从主机(您的 MAC)上的端口 22280 路由到您的主机内的端口 80。qemu
guest,(与端口 2222 相同 --> guest 中的端口 22)
这意味着您可以浏览到http://localhost:22280
在您的 Mac 上,访问虚拟 Raspberry Pi 中的 Web 服务器等。
由于使用的端口和使用方式等不同,FTP 和 SMB 以这种方式设置会更加复杂。尽管如果您将 FTP 设置为使用 PASV 模式,则不会有太大问题。
比较复杂的方法
这包括按照您的建议进行操作,将虚拟机任务配置为能够从路由器获取 IP 地址。在这种情况下,您需要在虚拟机和主机网络之间建立一个桥接。
这需要的设置比此处快速解释的要多得多,但本质上,您需要将 NIC 分配给 VLAN 并添加tap
接口,例如:
qemu -net nic,vlan=0 -net tap,ifname=tap0
然而,这需要在主机上进行更多设置(最初是手动的,因为您了解自己的情况,但随后是可编写脚本的)来创建桥接和分接接口 - 这通常需要根访问权限,而不仅仅是简单运行所需的权限qemu
。谷歌搜索一下就会出现多种方法来执行此操作,因为它根据您的设置而有所不同。 (我在这里找到了一个示例设置脚本:https://gist.github.com/EmbeddedAndroid/6572715 https://gist.github.com/EmbeddedAndroid/6572715 )
- 注——网络MAC地址、网卡型号等及其他
qemu
为了清楚起见,省略了选项。
桑巴方法
注意:我只在Linux下尝试过这个
您可以在 qemu 中启用 Samba 服务器:
qemu -smb /path/to/files
这将创建一个可从来宾内部访问的 SMB 共享,位置为 \10.0.2.4\qemu,从主机上的 /path/to/files 映射。