用hyper-v非常的方便,不用装vm也不会那么臃肿,但如何在hyper-v和嵌入式板卡之间进行通讯呢?
1.环境
采用的是100ask-imx6ull板卡,hyper-v装的是ubuntu22系统。
hyper-v根据文章hyper-v上外网已经配置了一个虚拟网卡。
2.物理连接
- 通过USB连接PC和板卡USB-Serial口
- 网线连接PC和嵌入式板卡,嵌入式板卡的网卡使用eth0;
3.电脑网卡之间通信
嵌入式板卡使用网线连接到PC本地网络连接网卡,那么本地网卡和hyper-v虚拟网卡两者如何通信呢?借助chatgpt,有两种方式:
- 使用网络桥接
- 使用静态路由(不好使)
这里选择网络桥接,设置中搜索“网络连接”:
按住ctrl键,选中虚拟机网卡和本地网卡,右键选择【桥接】:
此时会报错,因为虚拟机网卡我们已经通过上篇文章hyper-v上外网,被WLAN网卡共享连接了:
这时候该怎么办呢?
这里选择的是给虚拟机再加一张虚拟网卡,将这个新的虚拟网卡和本地有线网卡进行桥接。
3.1 hyper-v添加新虚拟网卡
首先关闭hyper-v的虚拟机,不然无法添加网卡。
然后创建一个新的虚拟交换机:
最后在指定的虚拟机设置中添加硬件:
选择新增的虚拟网卡。
3.2 网卡再次桥接
选中本地以太网网卡和新的虚拟网卡,再次桥接,发现会创建一个新的【网桥】网卡:
注意这里你会发现两个原先网卡都没法设置IP了,此时只能改网桥网卡的IP,其实这个网桥就是两个网卡的公共网关。
3.3 IP配置
3.3.1 网桥IP
(极其重要)不能设置为192.168.137.x段的,必须和之前的hyper-v虚拟网卡不同,否则网络不通:
3.3.2 虚拟机IP
启动hyper-v虚拟机,修改ip地址:
sudo vi /etc/netplan/00-installer-config.yaml
network:
ethernets:
eth0:
dhcp4: no
addresses: [192.168.137.88/24]
routes:
- to: default
via: 192.168.137.1
nameservers:
addresses: [8.8.8.8]
optional: true
eth1:
dhcp4: no
addresses: [192.168.138.88/24]
routes:
- to: default
via: 192.168.138.1
nameservers:
addresses: [8.8.8.8]
optional: true
version: 2
这里eth0网卡为上网的网卡,eth1网卡为刚加的网卡,千万注意这里两个网卡的网关routes不能设置为同一个段的,eth1网卡的ip为192.168.138.x段,和网桥网关保持一致!
启用网卡:
sudo netplan apply
从win下cmd ping测试:
3.3.3 嵌入式板卡静态IP配置
在mobaxtem中通过串口连接板卡,修改配置文件vi /etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.138.22
netmask 255.255.255.0
gateway 192.168.138.1
注意这里网关为网桥的IP,重启网卡
/etc/init.d/S40network restart
报错:
借助chatgpt,应该是网卡产生了冲突,执行指令:
ip addr
可以看到eth0网卡的信息:
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:01:3f:2d:3e:4d brd ff:ff:ff:ff:ff:ff
inet 169.254.7.130/16 brd 169.254.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.137.22/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::201:3fff:fe2d:3e4d/64 scope link
valid_lft forever preferred_lft forever
chat-gpt回复需删除一个,执行如下指令:
sudo ip addr del 169.254.7.130/16 dev eth0
此时只剩一个了,直接ping虚拟机地址:
至此,虚拟机和嵌入式板卡已经通了,目前IP地址如下:
PC网桥:192.168.138.1
hyper-v内部eth0:192.168.137.88 ,对应的PC虚拟网卡:192.168.137.1
hyper-v内部eth1:192.168.138.88 ,对应的PC虚拟网卡没设置IP
嵌入式板卡:192.168.138.22
此时,嵌入式板卡可以和hyper-v内部的eth1进行通讯,hyper-v可以通过eth0访问外网,至于嵌入式板卡如何访问外网,这里目前考虑的是通过WLAN。