安装 wsl2 子系统的步骤如下:(推荐先看后面配置代理部分,和.wslconfig 有关)
- 为 windows 启用 linux 子系统,命令行输入
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- 启用虚拟机功能,命令行输入
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 重启。必须重启使启用的功能被应用。
- 下载 linux 内核更新包 并安装。
- 在 Microsoft Store 中搜索 ubuntu20.04 并安装。
- 打开 ubuntu20.04,设置用户名和密码,完成安装。在命令行输入
wsl -l -v
可查看所有安装的 wsl 子系统详细信息。 - 在命令行输入
wsl.exe --set-version Ubuntu-20.04 2
设置 ubuntu-20.04 为 wsl2 版本。
通过以上步骤安装的 wsl2 的 ubuntu 系统在 C 盘下,可以通过以下步骤 打包并安装到别处:
- 打包系统。在命令行输入
wsl --export Ubuntu-20.04 D:/Ubuntu-20.04.tar
,系统将以 tar 文件的形式被打包放在 D 盘下。 - 注销系统。在命令行输入
wsl --unregister Ubuntu-20.04
注销子系统。 - 导入系统。在命令行输入
wsl --import Ubuntu-20.04 D:\Ubuntu-20.04-wsl2 D:\ubuntu-20.04.tar
。--import
的第一个参数为系统名,第二个参数为你希望子系统导入的路径,第三个参数为打包好系统的路径,注意和步骤 1 里的文件路径一致。
和 vscode 联动,在 vscode 中打开 wsl2 文件夹:先打开 wsl2,输入目标路径,然后输入 code .
。过程中会自动提示安装 vscode 的 wsl 扩展,安装即可。
常用的还有 给子系统配置代理。新版的 wsl2 支持镜像网络,根据官方文档,编辑 C:/Users/你的用户/.wslconfig
。如果没有,需要自行创建。可以在创建子系统前就创建和编辑该文件。如果已经有了子系统,编辑该文件后需要在命令行输入 wsl --shutdown
关闭子系统,等待一段时间后再打开,使.wslconfig 生效。编辑内容如下:
[wsl2]
nestedVirtualization=true
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
autoProxy=true
sparseVhd=true
关键就是 networkingMode=mirrored
,镜像 windows 的网络。以及 autoProxy=true
,代理和 windows 同步。dnsTunneling=true
也必须有。如果在 windows 端改变了代理状态,wsl2 需要重启才能同步代理。注意,不要关闭 windows 防火墙,因为其中用到了 hyper-v 防火墙。笔者此前因为安装绿色软件补丁被 windows 防火墙不停删除而使用组策略强行关闭防火墙,镜像网络失效。
在windows下改变代理状态时,有上图的消息通知说明autoProxy生效了。
以后还有什么踩坑会继续补充。