WSL 2 可以同时安装多个不同的 Linux 子系统,支持 OpenSUSE、Fedora、Kali、Debian 和 Arch Linux 等 Linux 发行版。换句话说,我们可以在 Windows 操作系统打造多种不同的 Linux 开发环境。查询 WSL 2 可用的 Linux 发行版
请启动 Windows 终端机,首先输入下列命令来查询 WSL 2 可用的 Linux 发行版,请注意!wsl 命令的选项有两种写法,「--」开头是完整的选项名称,也可以使用「-」开头单一字符的简化选项,如下所示:> wsl --list --online# 或> wsl -l -o
在 WSL 2 安装指定的 Linux 发行版
现在,我们准备在 WSL 2 安装 Debian 的 Linux 发行版,树莓派的 Raspberry Pi OS 就是基于 Debian 的 Linux 操作系统。wsl 命令同样是使用 --install 选项,只是需要在最后指明安装的 Linux 发行版 Debian,如下所示:请等待 Debian 的下载安装,当成功安装后,第 1 次启动需要输入用户名和 2 次密码,就可以进入 Debian 的用户目录。接着,我们准备查询 WSL 2 安装的发行版状态,因为目前已经进入 Linux 操作系统的 Bash Shell 界面,所以前面文章中提法哦的 wsl -l -v 命令需改用 wsl.exe -l -v,如下所示:上述清单共有 2 个 Linux 发行版,在 Name 栏前的「*」星号表示此为预设发行版,以此例就是前面的文章中安装的 Ubuntu。在实务上,因为同一个 Linux 发行版也会有不同版本,例如:预设的 Ubuntu 是 24.04.4 版,如果我们需要旧版 Ubuntu 进行测试,一样可以在 WSL 2 再安装一个 22.04 版,因为目前是在 Debian 的 Bash Shell 界面,所以是使用 wsl.exe,如下所示:> wsl.exe --install Ubuntu-22.04
在输入用户名和 2 次密码后,即可进入 Ubuntu-22.04 版的用户目录,然后,请输入 wsl.exe -l -v 命令查询 WSL 2 安装的发行版状态,可以看到我们已经安装了 3 个 Linux 发行版,如下所示:在「C:\Users\<用户名>\AppData\Local\Packages\」文件夹可以看到 3 个 Linux 发行版的系统目录,如下图所示:列出 WSL 2 已安装的 Linux 发行版
在第 1 章我们已经说明过 wsl -l -v 命令,现在,我们补充说明其他选项,请启动 Windows 终端机或新增标签页,然后使用完整命令来列出 WSL 2 已安装的 Linux 发行版,如下所示:上述命令显示已安装的 Linux 子系统清单,状态 Stopped 是停止;Running 是执行中。在 wsl --list 之后使用 --all 选项可以列出所有发行版(此为预设选项,所以使用 wsl --list 或 wsl -l 命令即可),如下图所示:使用 --running 选项可以列出所有执行中的发行版,如下图所示:如果是使用 --quiet 选项就只会显示发行版名,如下图所示:执行特定的 Linux 发行版
当在 WSL 2 安装有多个 Linux 发行版时,我们可以使用 --distribution 选项(或 -d 选项)指定执行的 Linux 发行版,例如:执行 Debian,如下所示:> wsl --distribution Debian# 或者> wsl -d Debian
如果需要使用特定用户,请使用 --user 选项(或 -u 选项),例如:devops,如下所示:> wsl --distribution Debian --user devops# 或者> wsl -d Debian -u devops
设定预设的 Linux 发行版
除了使用 --distribution 选项指定执行特定的 Linux 发行版外,我们也可以使用 --set-default 选项(或 -s 选项)指定 Debian 是预设的 Linux 发行版,如下所示:> wsl --set-default Debian# 或> wsl -s Debian
在顺利执行操作后,执行 wsl -l -v 命令,可以看到「*」的预设发行版已经变更为 Debian,之后输入 wsl 命令就是启动进入预设的 Linux 发行版 Debian。变更 Linux 发行版的预设用户
当在 Linux 发行版拥有多位用户时,我们可以直接变更 Linux 发行版的预设用户,首先启动并进入 Ubuntu-20.04 发行版,如下所示:> wsl --distribution Ubuntu-22.04$ cd ~
然后,我们准备新增名为 sean 的用户,并且加入系统管理员群组,如下所示:$ sudo adduser sean$ sudo adduser sean sudo
上述命令在新增用户 sean 后,需要输入 2 次密码和相关用户数据,请自行输入,也可以按 【 Enter 】 键使用预设值即可,最后按 【 Y 】 键,即可成功新增用户 sean 并加入 sudo 群组。接着,我们可以更改 Ubuntu-22.04 发行版的预设用户,将 devops 改为 sean。因为 WSL 2 安装的发行版都有对应的命令行命令,例如:Ubuntu 就是 ubuntu 命令;Debian 是 debian,不过因为 Ubuntu-22.04 有特殊符号,其命令是删除这些符号字符,即 ubuntu2204。请重新启动 Windows 终端机或新增标签页来变更 Linux 发行版的预设用户,如下所示:> ubuntu2204 config --default-user sean> wsl --distribution Ubuntu-22.04
当再次启动并进入 Ubuntu-22.04 发行版,可以看到前方的用户已经改为 sean,如下图所示:请注意!变更 Linux 发行版的预设用户操作只适用于使用 WSL 2 安装的 Linux 发行版,如果是使用导入的 Linux 发行版,更改预设用户的方法请参阅后面的实例章节的说明。变更 Linux 发行版的预设版本
WSL 版本有 WSL 1 和 WSL 2,预设是使用第 2 版,如果因为兼容问题需要改用第 1 版,我们可以使用 --set-version 选项变更 Linux 发行版的预设版本,例如:将 Ubuntu-20.04 发行版的预设版本改为 1,最后的值 1 就是版本号,如下所示:> wsl --set-version Ubuntu-22.04 1
上述版本转换需花一些时间,最后可以看到 VERSION 栏的值改为 1。关机指定的 Linux 发行版
在 wsl 命令可以使用 --terminate 选项来关机指定的 Linux 发行版,例如:Ubuntu-20.04 发行版,首先请执行 wsl -d Ubuntu-20.04 命令启动此发行版,然后就可以使用下列命令来关机,如下所示:> wsl --terminate Ubuntu-22.04# 或> wsl -t Ubuntu-22.04
取消注册和解除安装指定的 Linux 发行版
请注意!除了使用 wsl 命令,我们也可以直接从 Microsoft Store 安装 Linux 发行版,不过,我们无法从 Microsoft Store 解除安装 Linux 发行版。只能使用 wsl 命令的 --unregister 选项来取消注册 Linux 发行版。请注意!一旦取消注册,所有与此 Linux 发行版的相关数据都会永久的删除。例如:取消注册和解除安装 Ubuntu-22.04 发行版,如下所示:> wsl --unregister Ubuntu-22.04
上述执行结果,可以看到 Ubuntu-20.04 发行版已经不存在已安装的清单之中。