文章目录

  • 适用于Linux的windows子系统的安装及使用(WSL2 GUI)
  • 1 概要
  • 2 安装WSL2
  • 2.1 先决条件
  • 2.2 启用虚拟机平台和 Linux 子系统功能
  • 2.3 安装一个Linux发行版
  • 2.4 启动WSL2
  • 2.5 启用WSL2 GUI功能
  • 2.6 快捷启动wsl2
  • 3 WSL2 ubuntu使用技巧
  • 3.1 导入导出Linux发行版
  • 3.2 更新Linux发行版国内镜像源
  • 3.3 使用VS Code连接到WSL2 Linux发行版
  • 3.4 WSL2与Windows之间共享文件或者文件夹
  • 3.5 WSL2的一些配置
  • 4 总结
  • 5 参考链接


适用于Linux的windows子系统的安装及使用(WSL2 GUI)

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 安装WSL2

2.1 先决条件

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。

备注:检查Windows版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定” 。 可通过选择“开始”>“设置”>“Windows 更新”>“检查更新”来更新到最新的 Windows 版本。

2.2 启用虚拟机平台和 Linux 子系统功能

  1. 以管理员权限启动PowerShell或者cmd,然后输入以下命令启用虚拟机平台:
$ Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
  1. 以管理员权限启动 PowerShell或者cmd,然后输入以下命令启用 Linux 子系统功能:
$ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

在以上每一步命令执行完之后,PowerShell 中可能会提示你重新启动计算机。按“Y”可以重新启动。

wsl2架构 wsl2 gui_ubuntu

  • 也可以使用控制面板来启用“适用于 Windows 的 Linux 子系统”:

2.3 安装一个Linux发行版

打开微软商店应用,在搜索框中输入“Linux”或者“ubuntu”然后搜索,你可以看到搜索结果中有很多的 Linux 发行版可以选择。选择一个你喜欢的 Linux 发行版本然后安装:

wsl2架构 wsl2 gui_wsl2架构_02


注意1:有可能启动ubuntu报告WslRegisterDistribution failed with error: 0x800701bc是因为没有升级linux内核使用wsl --update下载更新即可。

注意2:在商店安装后并没有完全完成Linux子系统安装,还需要运行一次Linux系统来完成内核下载以及用户名密码的设置:(或者在windows的搜索中直接搜索刚刚安装的ubuntu则会显示已下载的发行版,运行它)

wsl2架构 wsl2 gui_vscode_03

2.4 启动WSL2

注意必须满足先决条件

使用命令行PowerShell或者cmd查看已安装的Linux子系统:

$ wsl -l

如果提示 wsl 不是内部或外部命令,说明你没有启用“适用于 Windows 的 Linux 子系统”,请先完成"2.2章节步骤"。

使用wsl --set-version <Distro> 2命令可以设置一个Linux发行版的WSL版本,<Distro>为刚刚wsl -l查询到的名字"Ubuntu-20.04":

$ wsl --set-version Ubuntu-20.04 2

也可以使用如下命令设置为每个安装的发行版默认WSL2启动:

$ wsl --set-default-version 2

2.5 启用WSL2 GUI功能

在目前最新的WSL2支持中,可直接在WSL2的Linux系统中运行Linux GUI应用程序,主要是Windows对X11和Wayland的支持:

wsl2架构 wsl2 gui_ubuntu_04

注意:需要使用 Windows 11 内部版本 22000或更高版本才能访问此功能。 要获取最新的预览版,请加入 Windows 预览体验计划

根据上述描述,windows用户需要先加入Windows预览体验计划并更新系统后即可默认使用WSL2 GUI功能。在本文编写期间还是需要加入预览计划才能使用此功能,可能后面不久即可直接使用此功能而不需要加入预览计划。

2.6 快捷启动wsl2

可将WSL2应用固定到Windows任务栏或者启动菜单中以便快速启动wsl2。

wsl2架构 wsl2 gui_ubuntu_05

3 WSL2 ubuntu使用技巧

3.1 导入导出Linux发行版

通过使用tar文件导入导出Linux发行版,可使其在任意地方安装Linux发行版或者共享自己的Linux发行版:

  1. 查看已安装的Linux发行版
$ wsl -l --all -v

wsl2架构 wsl2 gui_linux_06

  1. 导出Linux发行版tar文件到D盘
$ wsl --export Ubuntu-20.04 d:/wsl-ubuntu-20.04.tar
  1. 注销当前Linux发行版
$ wsl --unregister Ubuntu-20.04
  1. 重新导入并安装WSL2到D盘
$ wsl --import Ubuntu-20.04 d:/wsl-ubuntu-20.04 d:/wsl-ubuntu-20.04.tar --version 2
  1. 设置默认登录用户为安装时用户名
$ ubuntu2004 config --default-user USERNAME
  1. 共享Linux发行版
    此时导出的wsl-ubuntu-20.04.tar文件即可共享给任何使用wsl2的开发人员使用。在协同开发中使用更多,为每个开发者提供一致统一的开发环境。

3.2 更新Linux发行版国内镜像源

启动wsl2后,可根据国内镜像源修改/etc/apt/sources.list文件更新国内镜像源。

这里推荐一个清华大学的镜像源地址https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/,里面可根据安装的ubuntu版本选择对应的镜像源,如21.04,20.04 LTS,18.04 LTS。

修改/etc/apt/sources.list后执行以下命令更新源和所有应用程序。

$ sudo apt-get update
$ sudo apt-get upgrade

3.3 使用VS Code连接到WSL2 Linux发行版

Visual Studio Code 以及 Remote - WSL 扩展使你能够直接从 VS Code 使用 WSL 作为实时开发环境。 可以:

  • 在基于 Linux 的环境中进行开发
  • 使用特定于 Linux 的工具链和实用程序
  • 从 Windows 轻松地运行和调试基于 Linux 的应用程序,同时保持对 Outlook 和 Office 等生产力工具的访问
  • 使用 VS Code 内置终端来运行选择的 Linux 发行版
  • 利用 VS Code 功能,例如Intellisense 代码完成、linting、调试支持、代码片段和单元测试
  • 使用 VS Code 的内置 Git 支持轻松管理版本控制
  • 直接在 WSL 项目上运行命令和 VS Code 扩展
  • 在 Linux 或已装载的 Windows 文件系统(例如 /mnt/c)中编辑文件,而无需担心路径问题、二进制兼容性或其他跨 OS 难题

在VS Code插件中搜索remote关键字,安装Remote Development插件即可安装所有远程插件,包括:SSH,WSL,Docker。

在Linux发行版的命令行中输入code .即可在Windows端启动VS Code并自动远程连接到WSL2中。如果首次启动VS Code还会在WSL2中安装一些必要依赖包。

注意:所有需要的文件和安装在WSL2中的插件都在~/.vscode-server文件夹下面

3.4 WSL2与Windows之间共享文件或者文件夹

由于WSL2为Windows原生支持的子系统所以无需设置即可直接共享目录等。

  1. Windows中直接访问WSL2中的文件或文件夹
    直接在Windows的资源管理中即可直接访问WSL2中的目录:
  2. WSL2中直接访问Windows中的文件或文件夹
    在WSL2中所有的磁盘已被挂载到了Linux发行版中/mnt目录下,在此目录下默认会把Windows中所有已挂载的盘也映射到/mnt目录下:
    小技巧:可在Windows中指定位置创建一个share文件夹,在WSL2使用ln -s /mnt/xx/share ~/share方式可快速在Windows和wsl2中共享文件。

3.5 WSL2的一些配置

一些关于WSL2的配置可参考https://docs.microsoft.com/zh-cn/windows/wsl/wsl-config,其中包括一些cpu核数,文件系统大小,内存大小,网络等配置,具体可根据需要查看,一般默认即可。

4 总结

对于一个开发人员,Linux的使用是必不可少的,在没有WSL之前我们的开发可能是双系统启动,也可能是使用虚拟机vmware,virtbox等安装一个Linux发行版。但由于双系统的不便捷性,虚拟机的性能和稳定性问题,导致开发环境的使用不便。在有了WSL2和VS Code的远程拓展支持后,一切Linux的开发都变得更加简单了,我们可以直接在Windows中使用到各种Linux发行版,并且由于Windows的支持,性能和稳定性方面可以得到最好的保证,配合VS Code的远程拓展功能,即可在VS Code中连接到Linux发行版中的项目文件目录里去,直接查看和编写代码,配合git插件,自带的终端等支持,大大提高开发效率。

对比Ubuntu的使用,WSL2现在也对Linux GUI应用程序进行了支持,使得WSL2的使用已经完全接近原生ubuntu体验。并且对于团队开发来说,开发环境不一致等问题也会导致团队效率的降低,而使用WSL2导出一个共享tar文件即可每个人拥有完全相同的开发环境。