适用于Windows的Linux子系统WSL介绍

WSL可以作为平时替代linux的工具,在Windows上办公,WSL编写和运行示例

Posted by 晨曦on November 25, 2020

目录

1. 开启和简单使用

参考链接:安装vscode和wsl子系统,忽略其中的VSCode部分即可

2. WSL配置选项

详见网页wsl-config

3. 升级WSL 2

如果在Powershell输入命令:wsl --list --verbose发现自己安装的Linux子系统是1.0版本

PS C:\Users> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1
  Ubuntu-18.04    Stopped         1
PS C:\Users> wsl --set-default-version 2
错误: 0x1bc
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2

升级按照教程,即下载安装linux内核升级包,安装完毕后输入命令:wsl --set-version Ubuntu-20.04 2

PS C:\Users> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。

转换过程大约需要三分钟左右,耐心等待即可

4. WSL 2的网络代理

4.1 终端代理

打开文件~/.zshrc,追加以下内容:

# win10 主机 IP 保存在 /etc/resolv.conf 中
# 保证win10的代理软件,开启Allow LAN,开启Mixed Port在7890端口
# 测试不要用ping(ICMP报文),因为会被主机禁止,改用curl -v
export hostip=$(cat /etc/resolv.conf | grep -oP '(?<=nameserver\ ).*')
# 创建命令用于启动代理
alias setproxy='export https_proxy="http://${hostip}:7890";export http_proxy="http://${hostip}:7890";export all_proxy="socks5://${hostip}:7890";'
# 创建命令用于关闭代理
alias unsetproxy='unset https_proxy;unset http_proxy;unset all_proxy;'
# 默认开启代理
setproxy

4.2 git代理

  • 创建文件~/git-proxy-wrapper,写入以下内容:
    #!/bin/bash
    nc -x127.0.0.1:10800 -X5 $*
    
  • 赋予可执行权限:chmod +x ~/git-proxy-wrapper
  • 打开文件~/.ssh/config,添加以下内容
    Host github
      HostName github.com
      User git
      # ProxyCommand nc -X 5 -x 127.0.0.1:10800 %h %p
      ProxyCommand /home/zfb/git-proxy-wrapper '%h %p'
    

    5. GUI界面

    在Win10安装VcXsrv软件,创建配置文件VcXsrv-WSL2.xlaunch并双击打开,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<XLaunch 
    WindowMode="MultiWindow" 
    ClientMode="NoClient" 
    LocalClient="False" 
    Display="-1" 
    LocalProgram="xcalc" 
    RemoteProgram="xterm" 
    RemotePassword="" 
    PrivateKey="" 
    RemoteHost="" 
    RemoteUser="" 
    XDMCPHost="" 
    XDMCPBroadcast="False" 
    XDMCPIndirect="False" 
    Clipboard="True" 
    ClipboardPrimary="True" 
    ExtraParams="" 
    Wgl="False" 
    DisableAC="True" 
    XDMCPTerminate="False"/>

然后在WSL的终端输入以下命令:
export DISPLAY="$(awk '/nameserver/ { print $2 }' < /etc/resolv.conf)":0
此时,可以在WSL2终端运行需要GUI支持的软件,例如:

# 安装软件mousepad,该软件需要GUI
sudo apt install mousepad -y
# 打开软件
mousepad hello.txt

综上所述,也可直接修改~/.zshrc文件,添加以下内容

# 开启VcXsrv的命令
alias sx='"/mnt/c/Program Files/VcXsrv/xlaunch.exe" -run "C:\Users\zfb\Desktop\VcXsrv-WSL2.xlaunch"'
export DISPLAY="$(awk '/nameserver/ { print $2 }' < /etc/resolv.conf)":0

然后用户只需在终端输入sx即可激活后台窗口界面管理器

晨曦 / -  views
Published under (CC) BY-NC-SA 4.0