与duo通信:由于是通过RNDIS协议,所以WSL2在NAT模式下即可,默认就会分配到一个192.168.42.*的IP(duo的ip已经被固定为192.168.42.1)。
WLS2中访问windows文件系统,win filesystem挂载在/mnt下:
2024-7-28:WSL2统一用mirror模式即可
mirror模式能获取宿主机windows的网络信息,包括wlan和以太网。
所以我们把宿主机的以太网卡固定ip即可
桥接模式连接开发板的原理也是通过一个imx_bridge虚拟网卡,桥接到宿主机的以太网网卡上,然后配置宿主机以太网网卡ip,imx_bridge虚拟网卡ip,开发板ip在同一网段,从而实现通信。
2024-7-27 复习时发现WSL2中虚拟机网络没了。。。
解决问题后总结如下:
bridge模式开发imx6ull时,记得检查Hyper-V管理器:
设置成外部网络(与以太网相连)
保证与虚拟机、开发板在同一网段
这样虚拟网卡才能接到这个以太网上,不然之前一次是空的。(可能是之前系统win10升win11导致配置没了?)
配置成功后:
主要网站记录:
bridge模式:
https://www.cnblogs.com/lic0914/p/17003251.html
mirror模式:
https://zhuanlan.zhihu.com/p/593263088
WSL2网络总结:
https://www.cnblogs.com/djilulu/p/17234332.html
听说前不久微软解决了WSL2下网络的宇宙级难题,为了弄清WSL2下的网络配置,连夜把机器更新到了最新的win11 23h2,想着用WSL2的mirror模式,结果在mirror模式下,usbipd转不过去了??,果然在github上发现了这个issue,到目前为止还没解决 ^ _ ^
imx6ull开发环境(涉及nfs, tftp下载):
WSL2配置桥接网络,用于连接imx6ull开发板(通过以太网接口)
首先是 .wslconfig
(位于C:\Users\14464
)
[wsl2]
vmIdleTimeout=-1
networkingMode=bridged
vmSwitch=WSLBridge
ipv6=true
dhcp=false
当dhcp=false时会读取 cd /lib/systemd/network/wsl_external.network
的网络配置
vim wsl_external.network 加入以下内容:
[Match]
Name=eth0
[Network]
Description=bridge
DHCP=false
Address=192.168.25.128/24 # 自行修改
Gateway=192.168.25.1 # 自行修改(注意网关要和imx开发板配置的一致,这样才属于同一个子网!,才能ping通)
然而当我改完后发现以太网没有ipv4地址,于是又做了以下配置后才成功
进入wsl的Ubuntu子系统,打开 /etc/wsl.conf
,若文件不存在则创建
[boot]
systemd = true
[network]
generateHosts = false
generateResolvConf = false
检查 /etc/systemd/network/
,若文件夹下没有文件则创建一个配置文件my-network.conf
,若文件夹下有文件则忽略此步骤。
[Match]
Name=eth0
[Network]
DHCP=ipv4
重启网络
sudo systemctl restart systemd-networkd.service
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
wsl --shutdown
关闭,再重启WSL即可
如果还是没有ipv4地址,可能是网线没插好。。。(我是这样的),通过在宿主机下查看imx_bridge是否有ip来判断即可~
然而发现在bridge模式下,usbipd也无法把设备转到WSL2中,
usbipd: error: The local IP address for the WSL virtual switch could not be found.
WSL2貌似目前只能配置一个网卡?
无奈只好在win中开一个终端用来当串口操作,从github上挖到一个宝~~
net模式和mirror模式实际使用
WSL (Hyper-V firewall) 是我机器上WSL2与宿主机通信的虚拟交换机
win10下使用:
Get-NetAdapter 'vEthernet (WSL (Hyper-V firewall))' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False
win11下使用(加上-IncludeHidden,否则找不到虚拟交换机):
Get-NetAdapter -IncludeHidden -Name 'vEthernet (WSL)' | Get-NetIPAddress |Remove-NetIPAddress -Confirm:$False
New-NetIPAddress -IPAddress 192.168.25.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL (Hyper-V firewall))'
Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False
New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.25.0/24;
这样其实是把WSL (Hyper-V firewall)设成了Net模式,因此net模式可用,但mirror模式不能用了
https://zhuanlan.zhihu.com/p/380779630
如果想改回mirror模式
首先要清除上面的Net设置(重启电脑)
然后mv方式改掉 /lib/systemd/network/wsl_external.network
,比如可以重命名变成后缀 .no,使其不生效。
这样可以连上网了,但是宿主机的以太网ip没有镜像过来,暂时用不到这个,就不追究了。
就我目前使用来说,平时用net模式,开发imx6ull用bridge模式即可。
具体切换的时候将下面对应的配置复制到.wslconfig
中即可
.bridge.wsl_config
[wsl2]
kernel=C:\\Users\\14464\\bzImage
networkingMode=bridged
vmSwitch=imx_bridge # 上图中的Name值
dhcp=false
ipv6=true
.mirror.wslconfig
[wsl2]
kernel=C:\\Users\\14464\\bzImage
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
.nat.wslconfig
[wsl2]
kernel=C:\\Users\\14464\\bzImage