在Windows 10上手动安装WSL2体验

本文最后更新于:2021年5月3日 晚上

简介

适用于 Windows 下的 Linux 子系统( Windows Subsystem for Linux,简称 WSL )是一个让在 Windows 10 及 Windows Server 2019 上能够直接原生运行 Linux二进制可执行文件(ELF格式)的兼容层。适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

WSL提供了一个由 Microsoft 和 Canonical 公司开发的 Linux 兼容的内核接口(不包含 Linux 内核代码),在其上可运行 GNU 用户空间,目前官方提供的有:Ubuntu、openSUSE、Debian、Kali Linux等。这样的用户空间支持 Bash Shell和命令语言、编程语言解释器(Ruby、Python…),甚至是适用于主机端的X窗口系统等等。您可以:

  • 在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。
  • 运行常用的命令行软件工具(例如 grepsedawk)或其他 ELF-64 二进制文件。
  • 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:
    • 工具:vim、emacs、tmux
    • 语言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 与 F#、Rust、Go 等。
    • 服务:SSHD、MySQL、Apache、lighttpd、MongoDBPostgreSQL
  • 使用自己的 GNU/Linux 分发包管理器安装其他软件。
  • 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。
  • 在 Windows 上调用 GNU/Linux 应用程序。

准备

注意:最新版本的 WSL 使用 Hyper-V 体系结构来实现其虚拟化,请确保计算机支持并开启此功能

在开始前,我们需要做一些准备工作,为了让你的WSL体验更加,建议使用Windows Terminal 作为你的WIndows默认终端,详见👉Windows Terminal+PowerShell7 打造个性化终端

注意:在开始前,最好保证你的Windows系统版本不要太旧,建议 1909 以上!

首先需要打开Windows 10 的开发者选项👉: Windows 10 设置——>更新和安全——>开发者选项——>选择

开启开发者选项

然后打开 Windows 10 的 控制面板——>程序——>启用或关闭 Windows 功能——>适用于 Linux 的 Windows 子系统,此步骤也可以直接在Windows PowerShell中执行一条命令来代替:

1
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

出现提示 “Windows已完成请求的更改”后,按照提示 重启计算机即可

安装

手动下载想要安装的WSL发行版👉:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual ,下面以 Debian GNU/Linux 发行版WSL安装过程举例

下载WSL发行版

微软官方提供的WSL发行版不包括ArchLinux,如果需要使用ArchLinux的可以按照下面这个项目同样的方法安装就可以了

下载的文件名后缀是appx,但其实是zip格式压缩包(使用IDM下载就会发现)不管你最终下载的是什么文件后缀名,都将文件后缀名改为 zip

修改拓展名

使用压缩软件打开/解压这个压缩包,将里面最大的一个适合你操作系统平台(x64、ARM…)的appx解压出来

博主x64架构的 Debian GNU/Linux为例,将提取出来的DistroLauncher-Appx_1.3.0.0_x64.appx 文件后缀改为 zip

DistroLauncher-Appx_1.3.0.0_x64.zip 解压到想要安装该WSL发行版路径

双击执行xxx.exe开始安装,按照提示输入用户名密码即可

稍等片刻即可安装完成

使用

由于Windows TerminalWSL的“PY”关系,安装完成后,如果通过系统默认的PowerShell的WSL管理可能还需要记一些命令,但是Windows Termminal会自动把WSL新安装子系统加入Windows Terminal配置里

WT里新的WSL配置

安装个neofetch娱乐下:

管理

常用命令

1
2
3
4
5
6
7
8
9
# 这些管理命令均在Powershell中执行
# 立即终止正在运行的WSL发行版
wsl --shutdown
# 仅列出发行版名称
wsl --list --quiet
# 列出所有发行版的详细信息
wsl --list --verbose
# 运行特定的WSL发行版,如:wsl -d debian
wsl -d <发行名称>

卸载WSL子系统

一个Windows里可以安装多个WSL发行版以及同发行版的多个版本,如果需要卸载某个WSL系统,在Powershell中执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 登录默认的WSL版本
wsl
# 列出已安装的WSL发行版
wslconfig /l
# wslconfig /u [发行版名称],如:Debian
wslconfig /u Debian
# 将已经安装的WSL发行版导出为 tar 文件到指定路径
# 如: wsl --export debian c:\wsl\debian.tar
wsl --export [发行版] [位置] [文件名]
# 将 --export 参数更改为 --import,可导入相同模式导出的tar文件
# 运行导入的WSL发行版
wsl --distribution [发行名称]
# 启动导入的WSL发行版
wsl --distribution [发行名称]

卸载Debian WSL

WSL管理命令帮助

使用 wsl --help查看WSL管理命令帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
用法: wsl.exe [参数] [选项...] [命令行]

用于运行 Linux 二进制文件的参数:

如果未提供命令行,wsl.exe 将启动默认的 shell。

--exec, -e <命令行>
执行指定的命令而不使用默认的 Linux shell。

--
按原样传递剩余的命令行。

选项:
--distribution, -d <分发版>
运行指定的分发。

--user, -u <用户名>
以指定用户身份运行。

用于管理适用于 Linux 的 Windows 子系统的参数:

--export <分发版> <文件名>
将分发导出到 tar 文件。
对于标准输出,文件名可以是 -。

--import <分发版> <安装位置> <文件名> [选项]
将指定的 tar 文件作为新分发进行导入。
对于标准输入,文件名可以是 -。

选项:
--version <版本>
指定用于新分发的版本。

--list, -l [选项]
列出分发。

选项:
--all
列出所有分发,包括当前正在
安装或卸载的分发。

--running
只列出当前正在运行的分发。

--quiet, -q
只显示分发名称。

--verbose, -v
显示有关所有分发的详细信息。

--set-default, -s <分发版>
将分发设置为默认值。

--set-default-version <版本>
更改新分发的默认安装版本。

--set-version <分发版> <版本>
更改指定分发的版本。

--shutdown
立即终止所有正在运行的分发和 WSL 2 轻型工具虚拟机。

--terminate, -t <分发版>
终止指定的分发。

--unregister <分发版>
注销分发。

--help
显示用法信息。