wsl2桥接固定ip连接开发板(能上网)
最近跟着韦东山老师的视频学习嵌入式linux开发,因为平时在用wsl就没有再下载vm,在网上找了很多办法最终用于解决了,所以有了这篇文章记录下
1.创建Hyper-v虚拟交换机
家庭版没有hyper-v,需要运行以下脚本安装,创建.bat文件,粘贴以下内容,以管理员方式运行
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt
for /f %%i in ('findstr /i . hv.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hv.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
Pause
2. 修改./.wslconfig文件
位置在
C:\Users\<用户名>\.wslconfig
(没有就创建),粘贴以下内容
[wsl2]
vmIdleTimeout=-1
networkingMode=bridged # 联网方式选择桥接
vmSwitch=WSLBridge # 刚才创建的虚拟交换机名
ipv6=true
dhcp=false #关闭dhcp用来固定ip
写入文件后进入wsl
以下所有修改
w
s
l
文件的命令都需要使用
s
u
d
o
权限
\textcolor{red}{以下所有修改wsl文件的命令都需要使用sudo权限}
以下所有修改wsl文件的命令都需要使用sudo权限
3. 修改wsl.conf文件
位置在
/etc/wsl.conf
(没有就创建)
sudovim /etc/wsl.conf
粘贴以下内容
[boot]
systemd = true
[network]
generateHosts = false # 阻止自动生成host
generateResolvConf = false #阻止自动生成dns
4. 修改my-network.conf文件
位置在
/etc/systemd/network/my-network.conf
(没有就创建)
sudo vim /etc/systemd/network/my-network.conf
粘贴以下内容
[Match]
Name=en*
[Network]
DHCP=ipv4
重启networkd
sudo systemctl restart systemd-networkd.service
5. 修改00-wsl2.yaml文件
位置在
/etc/netplan/00-wsl2.yaml
(没有就创建)
sudo vim /etc/netplan/00-wsl2.yaml
按照以下内容自行修改
注意将
i
p
信息修改为想要固定的
\textcolor{red}{注意将ip信息修改为想要固定的}
注意将ip信息修改为想要固定的
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [静态IP地址/子网掩码]
gateway4: 网关IP地址
nameservers:
addresses: [DNS服务器IP地址1, DNS服务器IP地址2]
例如:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.5.11/24]
gateway4: 192.168.5.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
然后使用
sudo netplan apply
应用新的网络设置,重启WSL2子系统即可。(出现类似以下报错可忽略)
6. 共享网络
此时,我们已经可以让wsl和开发板互相ping通了,但是电脑是通过wifi连接外网,所有我们此时的wsl和开发板还不能够上网,所以我们还需要把wifi网络共享过去
打开控制面板->网络和internet->网络和共享中心->更改适配器设置
因为我是笔记本,所以只有一个无线网卡(连接网络)和一个有线网卡(连接开发板),如果是没有无线网卡的台式也可以把连接网线的网口作为分享网络的设备
此时,虚拟网卡的IP会被配置为192.168.137.1,wsl也在这个网段内,所以开发板如果想连接,IP地址必须也在这个网段以内,所以我们要修改他的ip(如果你就想在这个网段内使用其实也可以)
7. 修改共享网段的IP
韦东山老师的视频的设置的ip为
windwos: 192.168.5.10
linux:192.168.5.11
开发板:192.168.5.9
因为都在
192.168.5.x
网段内,所以需要修改下windows的注册表
打开注册表编辑器,查找
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters
将下面的两项的值改为想要设置的IP网段,比如我的设置为了
192.168.5.1
修改完之后需要再进行一次第
6
步,重新共享下网络
\textcolor{red}{修改完之后需要再进行一次第6步,重新共享下网络}
修改完之后需要再进行一次第6步,重新共享下网络
然后重启一下电脑,再次打开wsl进行查看,发现修改已经生效
最后连接开发板尝试,是否可以连接网络
开发板需要在
/
e
t
c
/
r
e
s
o
l
v
.
c
o
n
f
内写
d
n
s
\textcolor{red}{开发板需要在/etc/resolv.conf内写dns}
开发板需要在/etc/resolv.conf内写dns
参考
[1] Linux开发板ping通WSL2并且能够通过无线网连接外网(虚拟机同样适用)
[2] WSL实现桥接网络并固定IP地址
版权归原作者 果呆皮 所有, 如有侵权,请联系我们删除。