Windows的cmd也好Powershell也好,实在难用。决定研究一下怎么使用wsl,提升开发效率

安装WSL

开启WSL

在 控制面板–>程序和功能 页面找到 Windows 功能 ,在 Windows 功能 窗口中勾选 适用于 Linux 的 Windows 子系统 功能,点击确定,并按照提示重启电脑。
ad20549243d3385b8bcc5fe53929467a.png

安装wsl2内核

通过下面链接下载内核文件并安装
https://learn.microsoft.com/en-us/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
将wsl默认版本设为wsl2

1
wsl --set-default-version 2

安装喜欢的WSL发行版

在 Windows 应用商店搜索 WSL ,然后搜索栏会提示”在 Windows 上运行 Linux”,点进去,选择自己喜欢的 Linux 发行版,安装即可。

常用命令

https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

列出已安装的 Linux 发行版

1
wsl --list --verbose

deb27817b061ac1d779c369645c359a2.png

设置分发版的wsl版本

1
wsl --set-version <分发版> <版本>

常见错误

打开wsl报Error: 0x80370114

检查【虚拟机平台】是否勾选
b50e7f825b7c78010902905cd794e440.png

配置网络环境

==下面配置需要windows版本为23h2==
wsl默认使用NAT模式,当windows有挂代理的时候,并不能在wsl中生效
在%userprofile%下面的.wlsconfig 文件中写下面的配置:

[wsl2]

[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=false # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间

重启wsl

1
wsl --shutdown && wsl

如果你遇到 docker 无法从 Windows 访问的问题,这个是 iptables 的问题,在 /etc/docker/daemon.json 里添加一句 “iptables”: false 再重启就好了

与VSCode结合

启动wsl
vscode选择远程资源管理器,右侧目标选择WSL Targets。
可以看到下方出现了运行中的wsl
d0ae45e6f2b7b9a2de5f5d8dbb72b1fb.png

WSL迁移

我有多台Windows电脑,实在不希望配好一台电脑的wsl后从头开始配置另一台,所以学习了一下怎么迁移wsl虚拟机

先关闭wsl

1
wsl --shutdown

列出wsl,获取到虚拟机的NAME

1
2
3
> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Stopped 2

使用命令将其导出为.tar文件

1
wsl --export Ubuntu-22.04 E:\my_file\Ubuntu-22.04.tar

要等一会,生成好文件后将它传输到另一台电脑上
在另一台电脑上使用import命令将其导入

1
wsl --import <虚拟机名> <虚拟机安装路径> <tar文件路径> --version 2

然后就可以在另一台电脑上用配置好的wsl了