Skip to main content

WSL2

1 概要

WSL是windows推出的可让开发人员不需要安装虚拟机(vmware,virtbox)或者设置双系统启动就可以原生支持运行GNU/Linux的系统环境,简称WSL子系统。

目前最新的版本是WSL2,在原先的基础上提高了文件系统的性能并添加了完全的的系统调用支持。WSL2使用全新体系架构使其能真正的运行一个Linux内核。

在基于最新的WSL2上,现在已经完全集成了在wsl2中的桌面体验,意味着可以在Windows上运行Linux GUI应用程序(X11和Wayland)。目前在本篇编写阶段WSL2 GUI还处于预览版阶段,故如果需要使用WSL2 GUI功能还需要加入Windows 预览体验版计划并更新Windows系统。

根据上述可知,使用WSL2我们可以安装ubuntu,arch Linux等一些流行的Linux发行版。并且由于是Windows原生支持的子系统功能,所以可以使用最少的资源和开销运行ubuntu,配合VS Code远程拓展功能,开发者用户体验大幅提升。

2 安装步骤

第一步 打开 “控制面板” -> “程序” -> “启用或关闭window功能”

img

第二步 安装 WSL2

  1. 根据官方文档 WSL 的手动安装步骤 完成安装。一定要认真看完!!!比如第三步完成后要重启电脑重新启动计算机

  2. linux 我们选择 Ubuntu 22.04 LTS 版本

    1. 下载完 Ubuntu 后运行 Ubuntu 22.04 LTS
    2. 安装完成后在 Ubuntu 22.04 LTS 中执行 apt install zsh
    3. zsh 插件: sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

第三步 下载 FluntTerminal

用来替代cmd, 更加友好的终端

  1. FluentTerminal.Package_0.7.7.0.zip 下载后运行压缩包中的 FluentTerminal.Package_0.7.7.0_x86_x64.msixbundle 安装
  2. 安装完成后运行
  3. 设置
    1. 左上角设置 -> 配置文件 -> 终端配置选择“WSL” -> 设为默认
    2. 在 WSL 配置中点击 "编辑" -> 修改工作目录 \wsl$\Ubuntu-22.04\home\aaamrh 【每个人的不一样,键盘按 Win + E 打开文件资源管理器,左侧目录有个linux的目录,点击 Ubuntu -> home -> 用户名,然后查看目录地址】;
      • \\wsl$\Ubuntu-22.04\home\aaamrh 是文件资源管理器(快捷键 win + e)中,左侧目录中: Linux -> Ubuntu-22.04 的目录地址
      • windows 10 用户可能找不到上面的目录, 可以设置为 C:\Users\<你电脑的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\rootfs, 在资源管理器上一步一步找对应的文件夹

安装 node

下载包: wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xz

解压 tar -xvf node-v16.18.0-linux-x64.tar.xz

重命名 mv node-v16.18.0-linux-x64 node

软链 sudo ln -s /路径/node/bin/node /usr/local/bin/node

sudo ln -s /路径/node/bin/npm /usr/local/bin/npm

sudo ln -s /路径/node/bin/npx /usr/local/bin/npx


FAQ

Ubuntu 22.04LTS 使用code.打不开vscode(vscode内Remote-WSL连不上Ubuntu22)已解决(usr/bin/gzip: 1: ELF: not found/us

Installing VS Code Server for x64 (c3511e6c69bb39013c4a4b7b9566ec1ca73fc4d5)
Downloading: 100%
/usr/bin/gzip: 1: ELF: not found
/usr/bin/gzip: 3: : not found
/usr/bin/gzip: 4: Syntax error: "(" unexpected
tar: Child returned status 2
tar: Error is not recoverable: exiting now

...

原因分析: Ubuntu22默认用的是wsl2,而之前用的是wsl1.

确认 WSL 的手动安装步骤 - 官方教程第四步第五步正确完成