WSL 使用说明
关于卸载
wsl --shutdownwsl --unregister xxxxx- 卸载
Ubuntu 打开
Windows功能关闭:- 适用于
Linux的Windows子系统 - 虚拟机平台
- 适用于
- 点击确定
关于导入导出
import和export只是针对磁盘,意思就是网上说的修改Ubuntu目录用的导入导出方法的就是修改了磁盘的位置罢了。
下面是迁移Ubuntu时的操作:wsl --export Ubuntu E:\Wsl\Ubuntu\ubuntu.tar wsl --unregister Ubuntu wsl --import Ubuntu E:\Wsl\Ubuntu E:\Wsl\Ubuntu\Ubuntu.tar --version 2
关于用户权限
- 当第一次启动
Ubuntu时,会让你创建用户,下面设置的就是这个用户。 可以很好的解决在Windwos下创建文件具有Root权限的问题,还有Vscode中的Terminal也可以打开就是普通用户,不需要在进行设置。 在
cmd或者powershell中执行如下命令ubuntu config --default-user xxx # wsl 关闭 wsl --terminate Ubuntu # wsl 启动 -u 指定用户 wsl -d Ubuntu -u xxx
关于代理
代理问题,一定要开发代理软件的允许局域网。完了之后找到局域网的代理端口。
设置:source proxy.sh set 10811
取消设置: source proxy.sh unset
#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
set_proxy(){
PROXY_HTTP="http://${hostip}:${port}"
PROXY_HTTPS="http://${hostip}:${port}"
export http_proxy="${PROXY_HTTP}"
export HTTP_PROXY="${PROXY_HTTP}"
export https_proxy="${PROXY_HTTPS}"
export HTTPS_PROXY="${PROXY_HTTPS}"
export all_proxy="${PROXY_HTTP}"
export ALL_PROXY="${PROXY_HTTP}"
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current http proxy: ${PROXY_HTTP}"
echo "Current https proxy: ${PROXY_HTTPS}"
echo "Note: You need to invoke this command with source, like: source proxy.sh set ${port}"
}
unset_proxy(){
unset http_proxy
unset HTTP_PROXY
unset https_proxy
unset HTTPS_PROXY
unset ALL_PROXY
unset all_proxy
echo "Unset done: http_proxy HTTP_PROXY https_proxy HTTPS_PROXY"
echo "Note: You need to invoke this command with source: source proxy.sh unset"
}
proxy_info(){
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current http proxy: $http_proxy"
echo "Current https proxy: $https_proxy"
}
if [ "$1" = "set" ]
then
if [ "$2" = "" ]
then
port="10809"
echo "Use default port: ${port}"
else
port="$2"
fi
set_proxy
elif [ "$1" = "unset" ]
then
unset_proxy
elif [ "$1" = "info" ]
then
proxy_info
else
echo "Unsupported arguments: $1. Available aguments: set [port] unset info"
fi
关于 IDEA
idea 对 wsl2 的支持简直不忍直视!希望你们改好之后发个公告告诉我能用了。
这几天我碰到了很多问题:
1,wsl2 普通用户创建的文件无法打开。
2,idea 无法切换到 wsl2 的普通用户上去。
3,idea 每次都要检查 jdk,即使第一次检查后是没问题的。特别慢。
4,apt install 安装的 maven 无法识别。
5,特别容易卡死,奔溃!
关于开发
注:wsl2 不建议跨系统文件调用。我们考虑以下几个情景。
- 将
wsl作为服务器
只需要wsl做为服务器,代码本地开发。
这样需要将本地代码开发完复制一份到wsl目录。只能通过文件上传的形式,部署代码。即使在你看来,都在windows上,很可惜,因为不建议跨系统访问文件,这个不建议的准确度有多高呢?基本上就是说,一个ls都会卡一阵。。。
还有,只能在windows开发,远程就会有网络问题。 - 开发环境
全部使用wsl目录,idea不支持,vscode表示适配的很好。jetbrains的远程开发和vscode差不多,都能使用。
简单来讲就是远程开发,即使你感觉他们都在你的windows上,其实隔着很远很远。。。 - 不知道说啥
全部在windows,请关闭wsl2这个垃圾。
关于网络
在 wsl2 中的所有服务,都只能本地访问,如果想提供远程访问,需要让 windows 转发。
涉及两条命令:
netsh interface portproxy add v4tov4 listenport=[port] listenaddress=0.0.0.0 connectport=[port] connectaddress=[wsl ip]
netsh.exe advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=[port]
一条告诉 windows 转发 wsl 服务端口。一条告诉 windows 开放防火墙
关于 docker
可以很开心的玩,但是由于网络原因,你不能提供远程服务。
总结
- 磁盘和网络问题不解决,请不要使用
wsl2,还不如开个虚拟机。 - 建议在
windows本地开发,该装的都装,不要想着使用wsl2来隔离开发环境。
本文含有隐藏内容,请 开通VIP 后查看