WSL 安装与配置
本文介绍 Windows 下安装和迁移 Linux 子系统的方法、WSL 上 JDk、Node 等开发环境的安装、zsh 终端的配置以及 WSL 使用 Windows 代理的方法

# WSL 安装与配置

# WSL 介绍

WSL:Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统

官方文档:WSL 文档 (opens new window)

摘自官方:适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境,包括大多数命令行工具、实用工具和应用程序,且不会产生传统虚拟机或双启动设置开销

比较 WSL1 与 WSL2:

WSL1 使用翻译层将 Linux 系统调用转化成 Windows 系统调用,是对 Linux 的模拟

WSL2 是真实的 Linux 内核,运行在一个轻量级的、无需维护的虚拟机上,这意味着我们在 WSL2 上几乎可获得完整 Linux 体验,如运行 docker 等

WSL 带来的优势:

丰富的命令行软件生态,便捷软件包管理,相比于虚拟机,具有轻量性、易维护性,并与 Winodws 有良好的集成,如文件互访、网络共享等

如 :WSL2 与 Winodws 交换文件的方式

  • 从 Windows 访问 Linux 文件,可通路径 \\wsl$\<distroName>\ 进行访问

  • 从 Linux 访问 Windows 文件,可通过路径 /mnt/<diskSymbol>进行访问

# 安装 WSL2

判断系统是否支持 WSL2:

若要更新到 WSL 2,需要运行 Windows 10

x64 系统需要 1903 或更高版本,内部版本为 18362 或更高版本

x64 系统需要 2004或更高版本,内部版本为 19041或更高版本

通过 Windows 徽标键 + R,然后键入winver查看版本相关信息

安装步骤:

  1. 启用 WSL 与 虚拟机平台

    在 Windows 控制面板中打开 Windows 功能的管理界面启用或关闭 Windows 功能,勾选适用于 Linux 的 Windows 子系统虚拟机平台,重启电脑

    image-20210802195950397

    也可以使用以下命令来启用上述功能,执行完毕后重启电脑

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  2. 下载 WSL2 Linux 内核更新包

    下载适用于 x64 计算机的 WSL2 Linux 内核更新包 (opens new window),运行更新包安装程序

    注:ARM64 计算机需要安装 ARM 版本

  3. PowerShell 中执行以下命令,设置 WSL 默认版本为 WSL2

    wsl --set-default-version 2
    
  4. Microsoft Store 安装

    打开微软商店,搜索 Linux

    image-20210802213900443

    选择需要的发行版安装,安装完成后,第一次启动需要设置用户名和密码

    image-20210802214033236

    至此,WSL2 发行版安装完成

  5. 安装包安装

    安装包下载地址:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual

    image-20210802220815394

    下载完成后得到一个 <distro>.appx格式的安装文件,可以直接双击安装

    默认安装到 C 盘的用户目录 AppData\Local\Packages\下,如下操作可以安装到其他盘符:

    .appx文件改为.zip格式,解压放置到 C 盘意外的安装目录,如图为安装 Ubuntu-20.04

    image-20210802221117111

    执行ubuntu2004.exe,按提示设置用户名和密码,其他发行版操作类似

    ubuntu2004.exe 可用于配置子系统,如忘记了 root 密码,可执行ubuntu2004 config --default-user root配置默认用户为 root,再打开子系统,使用passwd命令重设密码

    如果已经安装在 C 盘,想迁移 WSL 系统文件到其他盘,可以先将 WSL 系统导出、注销,再导入,导入时指定系统文件存放路径,最后设置默认用户

    依次执行:

    wsl --export Ubuntu-20.04 d:\Ubuntu20.04.tar
    wsl --unregister Ubuntu-20.04
    wsl --import Ubuntu-20.04 d:\Ubuntu-20.04 d:\Ubuntu20.04.tar --version 2
    ubuntu2004 config --default-user Username
    

# 配置开发环境

安装 Java

  1. 直接使用包管理器安装,如 Ubuntu 下使用 apt 命令安装

    sudo apt install openjdk-8-jdk
    
  2. 也可以使用安装包安装,可在清华大学开源软件镜像站 (opens new window)下载

    image-20210803210041867

  3. 使用 tar 命令解压安装到指定的目录下

    如下载的包为 OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz

    tar -zxvf ./OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz -C ./jdk
    
  4. 修改解压出的文件夹名称,如解压到了jdk8u292-b10文件夹

    mkdir ./jdk8
    mv ./jdk8u292-b10/* ./jdk8
    rm -rf ./jdk8u292-b10
    

安装 maven

  1. 访问官网下载安装包,Download Apache Maven (opens new window)

  2. 执行解压安装命令

    tar -zxvf ./apache-maven-3.8.1-bin.tar.gz
    
  3. 修改文件夹名称

    mkdir ./maven
    mv ./apache-maven-3.8.1/* ./maven
    rm -rf apache-maven-3.8.1
    

安装 Node.js

  1. 访问官网下载安装包,下载 | Node.js (opens new window)

  2. 执行解压安装命令

    xz -d ./node-v14.17.4-linux-x64.tar.xz
    tar -xvf ./node-v14.17.4-linux-x64.tar.xz
    
  3. 修改为合适的文件夹名称,如 node

配置环境变量

  1. Winodws 默认将环境变量追加到 WSL 中,关闭方法如下

    etc 目录下新建 wsl.conf 文件

    sudo touch /etc/wsl.conf
    

    使用 vim 命令打开,在其中添加配置

    [interop]
    appendWindowsPath = false
    
  2. 编辑用户目录下.profile文件,将 bin 目录添加环境变量配置

    export PATH=$PATH:~/jdk/jdk8/bin
    export PATH=$PATH:~/maven/bin
    export PATH=$PATH:~/node/bin
    
  3. 使用以下命令测试配置是否成功

    java -version # 打印 java 版本
    mvn -v # 打印 maven 版本
    node -v # 打印 node 版本
    npm -v # 打印 npm 版本
    

# 配置 zsh 终端

  1. 安装 zsh

    sudo apt install zsh
    
  2. 设置 zsh 为默认 shell

    chsh -s /bin/zsh
    
  3. 安装 onmyzsh,默认下载到 ~/.oh-my-zsh

    sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    
  4. 安装插件

    输入zsh切换到 zsh 终端,拉取插件到 ~/.oh-my-zsh/custom/plugins

    # 语法高亮插件
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    # 自动提示插件
    git clone https://github.com/zsh-users/zsh-autosuggestions  ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
    
  5. 配置 ~/.zshrc

    vi ~/.zshrc
    

    编辑内容如下

    # 在 plugins 后括号里添加安装的插件名字
    # git 是自带的显示 git 信息的插件,z 是自带的自动跳转路径的插件
    plugins=(	git
    			z 
                zsh-autosuggestions 
                zsh-syntax-highlighting
             )
    # 让 .profile 中的配置生效
    source ~/.profile
    

    保存编辑,执行source ~/zshrc,使.zshrc生效

# 配置 Windows 代理

Windows 上可以通过 localhost 访问 WSL 内的网络应用(需要较高的 Windows)版本

WSL 内想要使用 Windows 代理,可如下配置

  1. 测试 WSL 能否 ping 通 Windows 主机

    如果不能,一般是因为 Windows 防火墙拦截,可在管理员命令行执行以下命令添加防火墙规则

    New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow
    

    也可以手动添加规则,步骤如下

    打开 Windows 防火墙高级设置

    image-20210805122801420

    新建入站规则,选择自定义 => 所有程序,其他设置默认,作用域设置界面如下

    image-20210805204849606

    在远程 IP 处添加 WSL 的 IP 地址,子网掩码一般为 /20

  2. 获取 WIndows 主机 IP

    Windows IP 保存在/etc/resolv.conf

    cat /etc/resolv.conf|grep nameserver|awk '{print $2}'
    
  3. 设置代理工具为局域网可见,没有该设置的代理工具可以将监听地址设置为0.0.0.0

  4. .profile中配置全局代理

    export WIN_SOCKS_PORT=1089
    export WIN_IP=`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`
    export HTTP_PROXY=socks5://$WIN_IP:$WIN_SOCKS_PORT
    export HTTPS_PROXY=socks5://$WIN_IP:$WIN_SOCKS_PORT
    
  5. 测试代理是否生效

    curl cip.cc
    
  6. 配置 proxychains 命令行代理工具

    安装 proxychains4

    sudo apt install proxychains4
    

    打开/etc/proxychains4.conf,记下设置socks5的那一行的行数,大多为第 115 行

    # add proxy here ...
    # meanwile
    # defaults set to "tor"
    socks5 172.21.112.1 1089
    

    .profile中设置 proxychains 配置

    export WIN_IP=`cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'`
    export WIN_SOCKS_PORT=1089
    # sed 命令将代理配置写入 proxychains4.conf 的第 115 行
    sudo sed -i "157c socks5 $WIN_IP $WIN_SOCKS_PORT" /etc/proxychains4.conf
    

    测试 proxychains

    proxychains curl cip.cc
    
Comment here, be cool~

Copyright © 2020 CadeCode

Theme 2zh powered by VuePress

本页访问次数 0

Loading