升级到 WSL 2 开发环境

微软在今天正式向公众推出了 Windows 10 May 2020 Update(Version 2004),这个大版本的更新中一个比较重要的特性便是 Windows Subsystem for Linux 2(WSL 2)。

升级到 Windows 10 (version 2004)

首先需要升级到 Windows 10 version 2004。升级方法可以参考 官方博客,在 Windows 10 的设置页面手动检查更新推送;或者也可以在 Download Windows10 页面下载升级助手或者 Media Creation Tool。我就是使用 Media Creation Tool 成功升级的。 对于更新的详细信息,可以参考 Windows BlogsReddit 上的帖子,这里不再赘述。

升级到 WSL 2

确保 Windows 版本为 2004,Build 19041 或更高。详细的文档可以参考官方文档 Update to WSL 2

在开始安装之前需要启用一个特性,桌面左下角右击,用管理员模式运行 PowerShell:

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

之后便可以将 WSL 2 设置为默认的版本:

1
wsl --set-default-version  2

如果你之前安装过了 WSL 1,可以用命令 wsl -l -v 查看所有已安装的发行版,并将它的 WSL 版本切换为 2:

1
wsl --set-version <distribution name> <versionNumber>

当然,也可以像我一样直接卸载之前的版本,需要用到 unregister

1
wsl --unregister Ubuntu

之后再在商店中运行 Ubuntu,便会自动下载最新的 20.04 版本并像使用 WSL 1 一样重新设置用户名和密码。

WSL 2 与 WSL 1 的异同

简而言之,WSL 2 是运行在一个“迷你虚拟机”里 Linux 内核中的,因此是兼容 Linux 系统函数调用的。而 WSL 1 是将系统函数调用“翻译”成了 Windows 原生的函数调用。Comparing WSL 2 and WSL 1 中有详细的表格比较了两个版本的异同。

对于大多数使用场景,是推荐升级到 WSL 2 的。WSL 2 的构架虽然使用了虚拟机,但是能够完全支持 Linux 系统函数调用,并且利用 Linux ext4 文件系统,可以极大提升 WSL 的文件读写性能。官方说法是诸如 git clonenpm install 这样的命令性能会提升好几倍。同时,WSL 2 还支持 Docker,之后会介绍如何启用 Docker。

Docker in WSL 2

这里选择在 Windows 上安装最新版本的 Docker Desktop。下面两个博文详细地介绍了如何安装:

安装好之后在 Docker Desktop 的设置里启用 Use the WSL 2 based EngineDocker

之后便可以在 WSL 中看到 Docker 的版本。需要注意的是 WSL 中的 Docker 应该只是挂载进去的二进制文件,在 Docker Desktop 退出之后是看不到的,因此需要保持 Docker Desktop 的运行。 WSL Docker

之后就可以在 Windows 或者在 WSL 下面运行 Docker 命令启动容器了。比如下面我简单的几个命令就能 pull 一个 golang 的环境。省去了在 Windows 亦或是 WSL 里配置环境的麻烦。

Screenshot_2020-05-28_22-52-14

VS Code 与 WSL 2

此外,还可以利用 Visual Studio 的 Remote Development 插件,可以非常方便的用 VS Code 在 Container 环境里进行开发。具体可以参考 Developing inside a ContainerRemote Container

未来的 WSL

WSL 团队在 博客中 表示未来还计划支持 GPU 加速以及运行 Linux GUI 程序。

参考:

加载评论