前言

日常学习和娱乐我都在使用Windows,但遇到部分项目尤其是需要部署在服务器上的时候,利用Linux开发就更加方便。双系统性能高效,但切换麻烦;虚拟机方便,可以和win平台同时运行,但每次运行需要等待虚拟机启动。

简介

适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
您可以:
在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。
运行常用的命令行软件工具(例如 grep、sed、awk)或其他 ELF-64 二进制文件。
运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:
工具:vim、emacs、tmux
语言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 与 F#、Rust、Go 等。
服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
使用自己的 GNU/Linux 分发包管理器安装其他软件。
使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。
在 Windows 上调用 GNU/Linux 应用程序。

微软为Windows 10带来了全新的WSL(Windows Subsystem for Linux),即适用于 Linux 的 Windows 子系统(总感觉名字是不是反了)。通过WSL,Liunx控制台就跟Powershell一样易用,并且子母系统间能够互相访问文件系统,可以很方便地在Windows上开发Linux平台的应用程序。

WSL版本又分WSL 1和WSL 2,两者的原理不同。一个官方的比较表格如下:

功能WSL 1WSL 2
Windows 和 Linux 之间的集成
启动时间短
占用的资源量少
可以与当前版本的 VMWare 和 VirtualBox 一起运行
托管 VM
完整的 Linux 内核
完全的系统调用兼容性
跨 OS 文件系统的性能

简单来说WSL 1是在Windows上虚拟了一个Linux内核,模拟Linux系统调用,以运行Linux中的程序,更加原生,启动速度极快,甚至能直接用Windows任务管理器来管理Linux子系统的进程。但同样也有缺点,主要是兼容性问题。包括Docker等程序无法在WSL 1上使用,像我使用django时会提示"You're probably using an uncommon filesystem setup"。

而WSL 2则是基于Hyper-V,也就是相当于一个虚拟机,这也让它拥有了完整的Linux内核,能够基本做到全面兼容,性能也有了很大提高。尽管启动没有WSL 1快,但也能在几秒内完成。但也因为是虚拟机,导致和Windows主系统间跨系统IO性能较低,所以推荐将项目文件放在Linux文件系统中。

安装

WSL 1和WSL 2的安装略有区别

WSL 1

1.启用WSL功能

首先在「控制面板」-「程序与功能」-「启用或关闭Windows功能」中,勾选「适用于 Linux 的 Windows 子系统」。

2.安装Linux发行版

打开微软应用商城,搜索你想安装的Linux,比如Ubuntu。

这里有三个版本,后面不带版本号的默认是最新的LTS版本,现在也就是20.04,选择其一安装即可。

3.完成

完成后打开,控制台会继续进行最后的安装操作,按提示输入用户名和密码即可完成安装。

在资源管理器地址栏中输入\\wsl$,可以看到所有Linux子系统的文件系统。可以直接在Windows下对其中文件进行编辑。

WSL 2

0.首先确认你的Windows 10版本为2004及以上

1.启用WSL功能和虚拟机平台

因为WSL 2基于虚拟机,因此需要在「控制面板」-「程序与功能」-「启用或关闭Windows功能」中,勾选「适用于 Linux 的 Windows 子系统」和「虚拟机平台」。

2.设置版本为WSL 2

在安装Linux发行版之前,先将WSL 2设置为默认版本,需要在powershell中输入:

wsl --set-default-version 2

或者如果你已经安装了基于WSL 1的Linux发行版,想升级到WSL 2,先在powershell中输入来查看已有的Linux和其WSL版本:

wsl -l -v

然后更改其WSL版本:

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

例如:

wsl --set-version Ubuntu 2

在升级过程中,可能会碰到提示「WSL 2需要更新其内核组件」,点击这里下载WSL 2 Linux 内核更新包

安装完后再次更改版本,等待片刻后就更新到WSL 2了。

3.安装Linux发行版

打开微软应用商城,搜索你想安装的Linux,比如Ubuntu。

这里有三个版本,后面不带版本号的默认是最新的LTS版本,现在也就是20.04,选择其一安装即可。

4.完成

完成后打开,控制台会继续进行最后的安装操作,按提示输入用户名和密码即可完成安装。

在资源管理器地址栏中输入\\wsl$,可以看到所有Linux子系统的文件系统。可以直接在Windows下对其中文件进行编辑。

后记

WSL对于平常重度使用Windows,只有在开发时偶尔使用Linux的人来说,真的很方便。

另外还有部分操作可以提升子系统的使用感受,比如安装Windows Terminal,Linux控制台会自动添加到其中;VS Code可以下载Remote WSL插件来开发子系统内的项目等等。

据说将来WSL 2还将支持GPU和GUI,值得期待。

如果觉得我的文章对你有用,请随意赞赏