6

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

 3 years ago
source link: https://blog.whuzfb.cn/blog/2020/11/25/config_wsl/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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即可激活后台窗口界面管理器

晨曦 / 2020-11-25 / 126 views
Published under(CC) BY-NC-SA 4.0.



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK