1. 概述
2018 年,windows10 推出了 linux 子系统 — WSL,主页君也在第一时间发文总结了 wsl 的安装与使用。 Win10 集成的 linux 子系统 WSL 的安装与使用
在这接近两年的使用中,主页君感到十分惊喜,基本上是非常满意的。 例如,现在这篇文章就是主页君打开 windows terminal,启动 wsl,然后通过 vim 写入到 windows 的磁盘分区上的,由于 wsl 中对 windows 磁盘分区的支持,让两个系统的文件交互变得非常容易。 日常的工作中,主页君可以通过 awk、sed、sort 等等 linux 命令对 csv 文件等进行处理,也可以直接通过 windows 中的 Microsoft Office Excel 对 csv 文件进行进一步处理,可以说是非常方便。 另一个场景中,主页君使用的开发工具是 JetBrains 套装,在没有 wsl 时,主页君将 IDE 默认的命令行工具设置为 git-bash,仅仅用作 git 的一系列命令行操作,而如今,设置为 wsl 后,除了在可视化的 IDE 中进行代码编写外,还可以通过丰富的 linux 命令对项目中的代码进行查找、编辑等等操作,可以说是非常的得心应手。 同时,主页君将 wsl 中与 windows 中的 gopath 配置到同一个物理目录下,折让我可以实现一处拉取、编译,两处使用,十分方便。 但 WSL 仍然有着很多的不足之处,其一就是 WSL 每次启动都需要等待几秒钟,这总是令人抓狂,而系统 IO 性能也十分不尽人意,与此同时,之前的文章中也提到,因为 WSL 毕竟并不是原生的 linux 内核,例如 loop 设备等 linux 原生内核支持的系统机制并不支持,这也造成了一定的不便。 如何调试操作系统
如今,随着 windows10 v2004 版本的推出,wsl2 正式面世,主页君再次更新尝鲜,到底怎样呢?本文我们就来一探究竟。
2. WSL 与 WSL2 实现原理的区别
WSL 是 Microsoft 团队对某几个 linux 发行版进行深度改造后的产物,他在 windows 环境下模拟出了一套 linux 环境,让你看起来仿佛置身于 linux 环境下,事实上运行的仍然是 windows 程序。 而 WSL2 则与此完全不同,win10 开始内置了一个轻量级虚拟机,经过不断的优化,这个虚拟机实现了与 windows 的高度集成,实现了虚拟机的高性能运行,WSL2 便是运行在虚拟机上的一个完整的 linux 内核。 可见,WSL2 与 WSL 的设计理念有着天翻地覆的变化,WSL 的实现方式显然更为极客,但面临一系列的生态环境和性能的问题,这条路要想走通,简直比登天还难,如今,微软放弃这条路,转而走上虚拟机优化运行原生 linux 内核这条路确实是一条一劳永逸的正路。
3. 如何从 WSL 升级到 WSL2
如果你想要体验 WSL2,首先你需要安装 WSL,具体的安装步骤请参看主页君之前的文章: Win10 集成的 linux 子系统 WSL 的安装与使用
3.1. 升级系统
在安装好 WSL 之后,首先我们需要升级 windows 系统到 win10 v2004 版本以上,当前 v2004 版本仅仅是放出了预览版,正式版预计要到今年(2020年)5月下旬。 想要更新到 v2004 预览版,需要首先打开 windows 设置 -> 更新和安全,点击左侧“Windows 预览体验计划”标签,打开 Windows 预览体验计划:
然后,点击“Windows 更新”标签,主动检查更新。 当然,打开预览体验可能存在风险,如果对操作系统的安全性要求比较高,也可以再等一段时间,等待 v2004 正式版的发布。
3.2. 打开系统虚拟机平台
系统更新并重启后,我们就可以开始 wsl 的升级了。 首先,需要打开“系统虚拟机平台”功能,在“控制面板所有控制面板项程序和功能”中选择“启用或者关闭Windows功能”,勾选对应选项即可:
也可以通过在管理员权限下的 cmd 或 PowerShell 中执行:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
配置完成等待系统自动重启即可。
3.3. 下载 wsl2 需要使用的 linux 内核
在 https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel 页面点击下载 linux 内核更新包。
3.4. 升级到 wsl2
接下来就很简单了,首先在 cmd 或 PowerShell 中执行下面命令列出现有的 wsl:
wsl -l
然后,根据上面命令返回的 wsl 名称,在管理员权限下的 cmd 或 PowerShell 中执行:
wsl —set-version Ubuntu-18.04 2
根据提示等待一段时间后即可。
此后,你可以随时将上述命令中的“2”改成“1”来让 wsl 回滚到 wsl。
4. 体验 WSL2
非常直观的体验,wsl2 的开启速度有了非常明显的提升,几乎不需要再等待。 如果你想要基于 docker 安装任何东西,直接下载安装、run 即可。 同时,你可以通过执行命令“explorer.exe”来打开 windows 的资源管理器,你甚至可以通过参数指定初始目录,当然了,所有的 windows 程序都可以皆由这种方式来打开,这种体验太棒了,简直就是在用 windows 的命令行工具的感觉。 当然,作为一个完整的 linux 内核,loop 设备等机制的完整支持自然不在话下。 总之,包括搜索优化、wsl、windows terminal 等一系列微软为开发人员作出的改善都令人耳目一新,期待 windows 的进一步发展。
5. 参考资料
https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel。 https://www.youtube.com/watch?v=loC7VfgRT-I。