繁体   English   中英

如何通过网络访问Raspberry PI QEMU VM

[英]How to access Raspberry PI QEMU VM via network

我已经通过QEMU在我的Mac OS X上成功设置了Raspberry PI VM。 现在我想从我的Mac访问这个VM的文件系统。

当我在我的VM上调用ifconfig时,我得到了这个。 在此输入图像描述

这里是我的/ etc / network / interfaces文件的内容 在此输入图像描述

在我的Mac上

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
    ether 3c:07:54:65:da:50 
    inet6 fe80::3e07:54ff:fe65:da50%en0 prefixlen 64 scopeid 0x4 
    inet6 fdbf:a879:6730::3e07:54ff:fe65:da50 prefixlen 64 autoconf 
    inet6 fdbf:a879:6730::401e:56f5:f2f9:a236 prefixlen 64 autoconf temporary 
    inet 192.168.1.119 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=1<PERFORMNUD>
    media: autoselect (1000baseT <full-duplex,flow-control>)
    status: active

我认为原因是VM使用某种共享网络。 有没有办法让VM从我的路由器获取IP地址?

更简单的方法 - 灵活性较差但你不需要如此捣乱

他们配置qemu似乎是默认的主机NAT网络(又名qemu -net nic -net user配置)

默认情况下,从您的访客访问时,您的主机(在本例中为Mac)将在10.0.2.2上找到。 在您的访客内部,您可以在10.0.2.2上连接主机(MAC)上的服务。 但这是使用NAT,所以你不能轻易地回到另一个方向。

例如,如果您决定要连接到SSH服务和在guest虚拟机中运行的Web服务器,则需要使用以下修改选项启动qemu

qemu -net nic -net user,hostfwd=tcp::2222-:22,hostfwd=tcp::22280-:80

这将做什么是从您的主机(您的MAC)上的端口22280到您的qemu guest qemu内的端口80的路由连接(对于端口2222 - >来宾中的端口22相同)

这意味着您可以在Mac上浏览到http://localhost:22280 ,以访问虚拟Raspberry Pi中的Web服务器等。

由于使用的端口不同以及使用它们的方式等,FTP和SMB设置这种方式会更复杂,但是如果你设置FTP使用PASV模式它不会是一个太大的问题。

更复杂的方法

这包括按照您的建议进行操作,配置虚拟机任务以便从路由器获取IP地址。 在这种情况下,您需要从虚拟机桥接到主机网络。

这需要比此处快速解释的设置更多,但实质上,您需要将NIC分配给vlan并添加tap界面,例如:

qemu -net nic,vlan=0 -net tap,ifname=tap0

然而,这需要在主机上进行更多设置(最初是手动,当你弄清楚自己的情况,但随后可编写脚本)来创建桥接和点击接口 - 这通常需要超出简单运行qemu所需的root访问权限。 一些谷歌搜索引出了各种方法来实现这一点,因为它会根据您的设置而变化。 (我在这里找到了一个示例安装脚本: https//gist.github.com/EmbeddedAndroid/6572715

  • 注 - 为清晰起见,省略了网络MAC地址,网卡型号等以及其他qemu选项。

SAMBA方法

注意:我只在Linux下试过这个

您可以在qemu中启用samba服务器:

qemu -smb /path/to/files

这将创建一个SMB共享,​​可从位于主机上/ path / to / files映射的\\ 10.0.2.4 \\ qemu的guest虚拟机内部访问。

如果您乐意使用SFTP / SCP,那么IMO最简单的方法就是在您的Pi客户机上安装openssh-server:

sudo apt-get update && sudo apt-get install openssh-server

启动Pi VM时,在启动QEMU guest虚拟机时使用-redir开关重定向端口22(SSH / SFTP / SCP),例如

qemu <other-qemu-switches-options-etc> -redir tcp:2222::22

然后,您可以通过主机上的端口2222连接到VM ​​SFTP / SCP(或SSH)。 所以从你的主机你可以使用localhost; 从局域网上的其他机器,您可以使用:2222

[更新2019]正如@ChristophBimminger在评论中所述,在较新版本的QEMU中, -redir开关已被弃用/删除。 现在通过-net-netdev开关来实现同样的目的。 请查看手册页,例如Debian测试 (我目前没有运行QEMU,因此无法给出确定的示例)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM