适用于 Linux 的 Windows 子系统(WSL)是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

        本文主要内容基于WSL官方文档编写,部分操作提供个人经验与其他方法,为问题解决等提供方法和思路。

安装

开启「适用于 Linux 的 Windows 子系统」的附加功能

无论使用 WSL 1 还是 WSL 2,我们都需要开启「适用于 Linux 的 Windows 子系统」的附加功能:

  • 以管理员身份打开 PowerShell 终端
  • 运行下面的命令:
$ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • 按照提示重启电脑

WSL

🍰 Linux 发行版

市面上基于 WSL 有很多 Linux 发行版,有广受大家欢迎的 Ubuntu、备受黑客喜爱的 Kali Linux、以及极客们都说好的 Arch Linux。大家可以根据自己的选择进行安装。如果没有特殊的需求,那么直接安装 Ubuntu 最新版准没错。如果你像我一样,喜欢滚动更新的 Arch Linux 发行版,那么安装 Arch WSL 即可。

#官方版本 WSL

微软官方支持的 WSL Linux 发行版可以直接从微软商店下载。

官方支持的 Linux 发行版有:

#社区支持的 WSL

另外也有社区支持的 WSL Linux 发行版,社区支持的第三方 WSL 发行版:

第三方支持的发行版需要按照其官方使用说明进行安装。有需要的同学请自行查看。

#WSL 的安装

在 开启「适用于 Linux 的 Windows 子系统」的附加功能 之后,我们以 Ubuntu 最新版为例,在微软商店中点击安装即可。

注:应用商店默认安装在C盘 可在网站下载

Manual installation steps for older versions of WSL | Microsoft Learn
安装包后缀改为.zip 解压后执行安装命令

Add-AppxPackage .\Ubuntu_2204.1.7.0_x64.appx

可能需要更新
因为该安装包默认wsl2 因此需要运行

$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

后重启才能正常加载下一步

下载成功后,我们需要对刚刚这一发行版进行初始化。在开始菜单中,没有意外的话,你应该看到刚刚下载完成的 Ubuntu 快捷方式,我们点击打开 Ubuntu,等待初始化完成即可。(初始化过程会将下载好的 Linux 发行版的文件解压缩,并存储在电脑上供你使用,往往会需要 1 分钟甚至更多。)

初始化完成之后,Linux 会提示你输入一个 UNIX 用户名并为之设置一个 UNIX 密码。这一用户名和密码与你的 Windows 登录账号密码完全无关,你可以任意设置。完成之后,你的 Ubuntu 发行版就安装成功了。

#WSL 2 的安装

🧊 注意

WSL 2 需要在 WSL 已经安装完毕的基础之上才能进行安装。

#使用命令行设置需要由 WSL 2 支持的发行版

同样,用管理员身份打开 PowerShell 终端:

  • 执行下面命令找到你当前安装的 Linux 发行版及其名字:
    $ wsl --list
    
  • 之后,执行下面的命令将你需要的发行版设置为由 WSL 2 支持,将其中的 <Distro> 修改为 Linux 发行版名称:
    $ wsl --set-version <Distro> 2
    
  • 另外,你也可以通过下面的命令将之后新安装的发行版均设置为默认由 WSL 2 支持:
    $ wsl --set-default-version 2
    
  • 执行下面的命令,如果发现最后一列的 VERSION 数为 2,说明你的配置是成功的:
    $ wsl --list --verbose
    

到这里,你应该已经成功安装完成了 WSL 的某个发行版,并成功设置了 UNIX 用户名和密码,登入 WSL 系统。接下来,我将以 Ubuntu 为例子,从终端工具、Visual Studio Code 开发环境以及更高阶的操作功能这三个角度,具体介绍如何对 WSL 进行配置,使之更加「开发环境友好」。

如果WSL2升级安装出现问题,可能是linux内核缺失,需要从微软官方下载内核包wsl_update_x64.msi安装。

使用

Terminal终端

Windows Terminal 已经可以直接从 Microsoft Store 中直接下载

同上:如果想获取安装包安装在D盘,可以github下载包
Releases · microsoft/terminal
或者网页下载也可下载到下载文件夹中
Windows Terminal - Windows官方下载 | 微软应用商店 | Microsoft Store

安装成功之后,Windows Terminal 就应该直接识别出来我们本机上面安装的全部 WSL 环境、PowerShell 环境和 Command Prompt 环境。点击下拉菜单,我们就可以看到 Windows Terminal 唤起的「环境」,可以看到,我安装的 Ubuntu 和 Arch WSL 均被识别成功。

Windows Terminal 的配置文件是 JSON 的格式,如果你安装有 VS Code,那么你可以直接点击 Settings(或者快捷键 Ctrl + ,)唤起 VS Code 打开设置文件。

在 VS Code 中打开 Windows Terminal 配置文件进行设置的时候,是可以直接自动补全的。我们对 Windows Terminal 的字体、配色、快捷键和 Profile 等一系列设置项目均在这一 JSON 文件中配置。其中:

  • 如果希望始终保持 Windows Terminal 的主题颜色为暗色方案,而不跟随 Windows 系统亮暗主题:可以在 globals 项目下的 requestedTheme 属性中这样配置:
{
  "globals": {
    "requestedTheme": "dark"
  }
}
  • 如果希望将 Ubuntu WSL 设置为 Windows Terminal 打开唤起的默认环境:可以复制 Ubuntu WSL Profile 中的 guid,将之粘贴至 globals 项目下的 defaultProfile 属性,类似这样:
{
  "globals": {
    "defaultProfile": "{d317d852-8b6a-4936-b241-58c11be8aeb2}"
    // …
  },
  "profiles": [
    {
      "guid": "{d317d852-8b6a-4936-b241-58c11be8aeb2}",
      "name": "Ubuntu",
      "source": "Windows.Terminal.Wsl"
    }
    // …
  ]
}
  • 如果希望将 Dracula 的配色方案添加进入 Windows Terminal:可以到 iTerm2-Color-Scheme - Windows Terminal 仓库下找到自己想要使用的配色方案,将 JSON 格式的配色复制进入 Windows Terminal 配置文件即可。比如我希望添加 Dracula 配色方案,只需要访问 Dracula.json,将代码部分复制,并粘贴到 Windows Terminal JSON 配置文件中:
{
  // …
  "schemes": [
    {
      "name": "Dracula",
      "background": "#282A36",
      "foreground": "#F8F8F2",
      "black": "#21222C"
      // …
    }
  ]
}
  • 如果希望更改 Arch WSL Profile 的字体和配色方案为 FuraCode NF 和 Dracula(FuraCode NF 是 Fira Code 的 Nerd Font 变种),并为之开启 Fluent Design 的亚克力透明背景效果:在 commandline 项为 wsl.exe -d Arch 的 Profile 中修改
    • 将 fontFace 设置为 FuraCode NF
    • 将 colorScheme 设置为 Dracula
    • 将 useAcrylic 设置为 true
    • 将 acrylicOpacity 设置为 0.95
{
  "profiles": [
    {
      "acrylicOpacity": 0.95,
      "useAcrylic": true,
      "closeOnExit": true,
      "colorScheme": "Dracula",
      "commandline": "wsl.exe -d Arch",
      // …
      "fontFace": "FuraCode NF",
      "fontSize": 12
      // …
    }
    // …
  ]
}

配置项目相对较多,这里不一一列举,如果有更多配置需求的同学请参考原作者的 Dotfile2(https://dowww.spencerwoo.com/2-cli/2-1-terminal.html#fn2)。

其他美化和配置可参考微软官方WSL文档
Dev on Windows with WSL

更多推荐