Bootstrap

(多个)WSL1/2 安装到任何位置

通过微软商店安装的分发版一般保存在系统盘。如果日后在里面装很多软件的话,就会占用很多系统盘空间。本文记录的安装方法可以安装到任意位置,以解决这个问题。

首先,参考Manual installation steps for older versions of WSL | Microsoft Learn,打开Windows的WSL功能:

管理员打开Powershell,运行

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

如果要装wsl2,需要打开虚拟化

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

接着开始安装分发版:

通过以下链中的Downloading distributions 部分接下载想要的分发版安装包。下载下来的文件后缀是.appx,直接用压缩软件解压到想安装的地方,如 D盘。Manual installation steps for older versions of WSL | Microsoft LearnStep by step instructions to manually install WSL on older versions of Windows, rather than using the wsl install command.icon-default.png?t=N3I4https://learn.microsoft.com/en-us/windows/wsl/install-manual本文下载的是 Ubuntu20.04,解压结果如图:

运行其中的ubuntu2004.exe,程序会自动把分发版安装、注册到WSL中,等待几分钟即可。接着会提示设置用户名、密码。

至此,WSL1手动安装结束。以后启动WSL,则可以直接运行ubuntu2004.exe,或在命令行中运行wsl 命令。Ubuntu中的各项(系统、用户)文件都储存在解压目录中的 rootfs 文件夹中,可以通过文件管理器直接复制粘贴到子系统中,非常方便。

装多个Ubuntu:

在另一个地方再解压一个Ubuntu,此时运行新的 ubuntu2004.exe 会直接启动原来的Ubuntu,不会启动安装过程。解决办法是:需进入注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss。其下的项(名字都是长串id)存有每一个分发版的信息,修改其中字符串 DistributionName,帮原有WSL改个名。这时候,再运行新的 ubuntu2004.exe 就会区分以前的ub,执行安装过程。安装过程结束后,运行wsl --list 就会看到多个 ub 了。

参考 :windows subsystem for linux - How do you install multiple, separate instances of Ubuntu in WSL? - Stack Overflow

升级为WSL2:按照官方文档(本文第一个链接)开启虚拟机选项、安装升级包,对某一个分发版升级,再运行 wsl --set-version <分发版名字> 2。若要求以后安装的分发版都是wsl,则运行 wsl --set-default-version 2。

测试、管理:

  • 命令行中,运行 wsl:直接启动子系统。
  • 运行wsl --help:wsl 命令的帮助。
  • 运行wsl --list --verbose:查看当前注册在WSL里有哪些分发版。
  • 运行wsl --unregister <Ubuntuxxx>:删除某个分发版的注册,但文件不删除,wsl --list --verbose 中会除名。若要删除分发版,先 unregister,再删除分发版的文件,即可。
  • 运行wsl --shutdown:终止所有分发版的运行(相当于子系统关机),释放系统资源。

;