前言
WSL2 是通过在 Windows 上运行一个轻量级的 Linux 虚拟机(包含真正的 Linux 内核),来实现 Ubuntu 等发行版的原生兼容性。
本文将以 Ubuntu 子系统为例。
配置 Ubuntu 子系统
环境配置
开启 CPU 虚拟化
CPU 虚拟化,大部分电脑默认都开启了,可以打开任务管理器,选择性能选项,观察如下,表示已经开启:

如果显示未开启,那么在重启电脑,并在重启电脑时连按 del键
(大部分电脑是这个键,也可能是 f2),进入 BIOS 界面,进入 Advanced 板块,找到英特尔 VMX 虚拟化平台,并开启即可。

开启 Windows 功能
1)点击 win 键,搜索 启用或关闭 Windows功能
,如下

2)勾选 适用于 Linux 的 Windows 子系统
和 Virtual Machine Platform
这两个选项

开始安装
1)以管理员身份打开 cmd,输入 wsl --install
,如果是国内网络的话,建议使用 wsl --install --web-download
,回车后开始安装,默认下载 Ubuntu。
下载完成后会提示你输入用户名和密码:

2)当然 wsl 也可以安装其他 Linux 系统,通过输入命令 wsl --list --online
展示出所有可以安装的子系统

例如安装 kali-linux,就可以使用 wsl --install kali-linux --web-download
进行安装。
启动和停止子系统
1)打开终端,输入 wsl --list -v
就可以显示出安装的子系统列表。

Ps:version 为 2,表示通过 wsl2 安装
这里默认使用的 Ubuntu 子系统,如果你想默认子系统为 kali-linux,可以使用命令 wsl --set-default kali-linux
2)可以通过终端下拉列表启动子系统

或者从开始菜单中搜索子系统名称进行启动

3)如果想停止,直接关闭窗口即可

4)此时,还可以通过 win 的终端运行 linux 命令(加上 wsl 这个前缀即可),例如如下:

Windows 查看 Linux 文件
1)打开 此电脑
就可以看到左下角有一个 Linux 图标,如下:

里面就对应着子系统的文件列表。
Ps:如果没有看到这个 Linux 的小图标,说明你的 wsl 版本有点问题,打开终端,输入
wsl --update
,然后重启电脑,即可解决。
子系统备份和导入(可以换盘存储)
子系统默认存储在 c 盘,如果不想占用 c 盘空间,例如换到 d 盘,可以先将子系统备份,然后再导入到 d 盘。
1)输入 wsl --export Ubuntu ubuntu.tar
,即可将 Ubuntu 子系统导出到当前目录下的 ubuntu.tar 文件中(不存在会自动创建)

2)导入语法如下:
bash
wsl --import 自定义子系统名称 导入的位置 导出的tar包位置
例如这里我导入到 D:\ubuntu
目录下,那么可以使用命令 wsl --import Ubuntu-24 D:\ubuntu C:\Users\cyk\ubuntu.tar

导入成功后,就可以再 D:\ubuntu
目录下看到 Hyperv 的镜像文件(子系统中的所有文件都存在这个镜像文件中了)

此时在终端输入 wsl --list -v
就可以看到刚刚导入的 Ubuntu24 了

3)输入 wsl --set-default Ubuntu-24
设置为默认子系统为 Ubuntu-24,然后输入 wsl --unregister Ubuntu
即可卸载之前下载到 C 盘的 Ubuntu 子系统
魔法配置
如果win配置的有魔法,那么直接开启 TUN 模式即可
让 Win 中 IDEA 运行的 SpringBoot 应用跑在 Ubuntu 子系统中
场景解释
IDEA 是在 windows 上运行的,但是希望他能将 SpringBoot 项目在 WSL 的 Ubuntu 环境中运行,这样可以利用 Ubuntu 的 Linux 环境,更贴近线上部署环境。
例如我要写一个基于 Ansible 的发布系统,就很难跑在 Win 环境上测试。
Ps:IntelliJ IDEA(2020.3+)已经原生支持在 WSL 中运行项目。
实现步骤
1)确认 WSL 是 WSL2,可以通过 wsl -l -v
查看,如果显示 Ubuntu Running 2
,表示就是 WSL2
2)在 Ubuntu 子系统中安装 Java 和 maven 工具,如下:
bash
sudo apt update
sudo apt install openjdk-17-jdk maven
检查 java 和 maven 版本(是否安装成功)

3)打开 IDEA 项目,进入 Run/Debug Configurations
配置中,选择运行在 WSL 如下:



随后运行 SpringBoot 项目,可以看到已经跑在了子系统中


访问跑在 Ubuntu 子系统中的 SpringBoot 端点
假设要访问这个端点

1)进入 Ubuntu 子系统,输入如下命令,来确定内网ip
bash
hostname -I

2)接着访问 http://172.18.1.112:8080/hello/
即可
