如果没有特别标明的都是表示WSL2

windows目录没有挂载

code或者explorer.exe .的一些命令无法使用时,使用以下的命令来关闭WSL然后再重新启动即可。

wsl --shutdown

宿主机访问 WSL 文件

win+r 然后输入 \\wsl$,或者直接在资源管理器地址栏中输入 \\wsl$

或者直接把 WSL 挂载到宿主机

# cmd
net use x: \\wsl$\Ubuntu-20.04

找到WSL的IP

wsl2host

局域网访问

netsh interface portproxy add  v4tov4 listenport=3022 listenaddress=* connectaddress=ubuntu2004.wsl connectport=3022
netsh interface portproxy delete v4tov4 listenport=【宿主机windows平台监听端口】 listenaddress=0.0.0.0
netsh interface portproxy show all
netsh interface portproxy add v4tov4 listenport=22 connectaddress=127.0.0.1 listenaddress=* protocol=tcp

在WSL2中自动配置Windows 的IP地址

#!/bin/sh
export WINIP=$(cat /etc/resolv.conf | grep 'nameserver' | cut -f 2 -d ' ') 
export WSLIP=$(ip addr show eth0 | grep 'inet ' | cut -f 6 -d ' ' | cut -f 1 -d '/')
echo WINIP $WINIP
echo WSLIP $WSLIP

echo <Your password> | sudo -S sed -i "/winip/c $WINIP\twinip" /etc/hosts
echo <Your password> | sudo -S sed -i "/socks5/c socks5\t$WINIP 1080" /etc/proxychains.conf

如果想要在Windows侧设置WSL2的IP地址,有两种方式

1、从WSL2侧给windows设置wsl2的IP地址

2、在windows侧给windows设置wsl2的ip地址

第一种的方式的原理就是在wsl2通过xxx,来设置windows的/host

第二种方式的原理是通过xxx.wsl2host来设置windows的host

vim "+:%s/^.*winip/$WINIP\t\twinip/g" "+:%s/^.*wslip/$WSLIP\t\twslip/g" '+:wq' -E /mnt/c/Windows/System32/drivers/etc/hosts

需要 Windows 设置可写入,右键 host 文件,属性-安全-高级,把 Windows 登录用户给予“完全控制”权限即可

WSL的参数配置

在用户目录下创建 .wslconfig文件

[wsl2] 
memory=2GB
processors=4 
swap=512MB

在WSL里使用Windows的资源管理打开WSL的文件夹

可以使用 explorer.exe . 打开当前文件夹,但是命令有点长,我们使用 alias 来设置一个短一点的命令:alias er=explorer.exe,之后只要使用 er . 就可以使用 Windows 的资源管理器来打开当前的文件夹了。