WSL 应用阐明

对于卸载

  • wsl --shutdown
  • wsl --unregister xxxxx
  • 卸载 Ubuntu
  • 关上 Windows 性能敞开:

    • 实用于 LinuxWindows 子系统
    • 虚拟机平台
  • 点击确定

对于导入导出

  • importexport 只是针对磁盘,意思就是网上说的批改 Ubuntu 目录用的导入导出办法的就是批改了磁盘的地位罢了。
    上面是迁徙 Ubuntu 时的操作:

    wsl --export Ubuntu E:\Wsl\Ubuntu\ubuntu.tarwsl --unregister Ubuntuwsl --import Ubuntu E:\Wsl\Ubuntu E:\Wsl\Ubuntu\Ubuntu.tar --version 2

对于 WSL

  • 针对Wsl开发环境做以下总结:

    1. 尽管应用起来像是一个零碎,然而不是,这个肯定要留神
    2. 既然不是一个零碎,就不要关上windowns下的我的项目却应用Ubuntu下的环境。明天关上Windowns下的Java我的项目,用的是Ubuntu下的Jdk后果,死活不能给我的项目增加,平台外面是有的。
    3. 肯定要辨别Ubuntu软件和Wsl.Ubuntu。装置的Ubuntu间接关上是root权限,Wsl.Ubuntu是黄色图标。设置外面能够清晰看到执行的命令不一样。
    4. 切记,开发用一个零碎环境。要么Windows上面。把服务全副装置到Ubuntu。要不都在Ubuntu。
    5. 前一段时间Flink服务拜访不了,最初发现Flink服务bind配置须要改为0.0.0.0不能是localhost。
  • 用户权限

    • 当第一次启动 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/shhostip=$(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_proxyelif [ "$1" = "unset" ]then    unset_proxyelif [ "$1" = "info" ]then    proxy_infoelse    echo "Unsupported arguments: $1. Available aguments: set [port] unset info"fi

对于 IDEA

ideawsl2 的反对几乎不忍直视!心愿你们改好之后发个布告通知我能用了。
这几天我碰到了很多问题:
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 来隔离开发环境。