Windows Subsystem for Linux 文档 | Microsoft Learn
一、安装
前提1:需要CPU开启虚拟化,可以通过任务管理器确认

如果没有开启,通常需要在主板的UEFI(BIOS)界面中找到 Advanced -> CPU Configuration 菜单中的:
Intel Virtualization Technology、VT-x、VMX
SVM Mode、AMD-V
前提2:启用相关Windows功能

搜索功能,启用以下两个功能,需要按提示重启电脑

安装:以管理员身份运行命令提示符
输入
wsl --install时,系统会尝试通过 Microsoft Store(微软应用商店) 来下载和安装 WSL 组件以及默认的 Ubuntu 系统。在国内网络环境下,直接连接微软应用商店经常会出现下载极慢或者报错的情况。使用
wsl --install --web-download可以绕过商店使用微软官方服务器下载。
默认情况下会安装Ubuntu,可以指定安装特定的发行版(如 Debian):
查看可用的发行版列表:
wsl --list --online指定安装:
wsl --install -d Debian --web-download如果不能正常下载,可以到微软官方的 GitHub 发布页:
https://github.com/microsoft/WSL/releases

手动下载 WSL 核心程序包

微软商店安装Ubuntu或其他发行版本,在商店页面完成下载之后点击打开

二、基本使用
使用命令行安装或者微软商店手动安装都会一样出现此步骤,按照提示输入账号密码后Ubuntu就开始运行了。
这个账号仅仅属于当前这个 Ubuntu 系统,和以后安装的其他发行版没有任何关系,虽然是普通用户,但是可以直接使用sudo提权。
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:安装成功同时也会打开微软为 WSL 专门推出的图形化管理控制台

查看和管理Linux子系统
PS C:\Users\fchao\Desktop> wsl --list -v
NAME STATE VERSION
* Ubuntu Stopped 2星号代表这个Ubuntu是默认的子系统,如果安装了多个,使用wsl -set-default NAME(子系统的名字,比如kali-linux)
可以直接在命令行窗口处开启安装过的子系统,关掉窗口则直接停止运行

使用命令启动:wsl -d Ubuntu
退出:exit ,也会停止子系统的运行
卸载一个子系统:wsl --unregister 子系统名
备份与恢复
这个功能类似VMware的快照,可以将当前子系统备份导出至桌面:
wsl --export 子系统名(Ubuntu) 文件名(Ubuntu.tar)
将刚才的备份导入到D盘,成为另一个独立的子系统Ubuntu2:
cd D:
mkdir wsl
wsl --import ubuntu2 D:/wsl 备份文件的路径(C:\XXX\Ubuntu.tar)
产生的 .vhdx 就是 WSL 系统的物理载体,是微软 Hyper-V 虚拟化技术专用的硬盘格式。在 Linux 里看到的所有东西(系统核心文件、安装的软件、/home 目录下的代码和个人数据),在 Windows 的视角下,全部被打包塞在这一整个 .vhdx 文件里。
导入备份并不可以直接覆盖原来的,想要如此只能手动先删除原来的
wsl --unregister Ubuntu #先删除了原来的Ubuntu
wsl --import Ubuntu D:\WSL\Ubuntu D:\Backup\Ubuntu.tar #把名字再取回 Ubuntu
wsl -d Ubuntu
此时,还需要修改配置文件,否则默认登录的用户是root
echo "[user]" >> /etc/wsl.conf
echo "default=你的用户名" >> /etc/wsl.conf文件共享
fchao@FCLAPTOP:~$ df -h
Filesystem Size Used Avail Use% Mounted on
none 7.8G 0 7.8G 0% /usr/lib/modules/6.6.114.1-microsoft-standard-WSL2
none 7.8G 4.0K 7.8G 1% /mnt/wsl
drivers 477G 170G 308G 36% /usr/lib/wsl/drivers
/dev/sdd 1007G 1.2G 955G 1% /
none 7.8G 36K 7.8G 1% /mnt/wslg
none 7.8G 0 7.8G 0% /usr/lib/wsl/lib
rootfs 7.8G 2.7M 7.8G 1% /init
none 7.8G 540K 7.8G 1% /run
none 7.8G 0 7.8G 0% /run/lock
none 7.8G 0 7.8G 0% /run/shm
none 7.8G 76K 7.8G 1% /mnt/wslg/versions.txt
none 7.8G 76K 7.8G 1% /mnt/wslg/doc
C:\ 477G 170G 308G 36% /mnt/c
D:\ 477G 85G 392G 18% /mnt/d
tmpfs 1.6G 20K 1.6G 1% /run/user/1000
fchao@FCLAPTOP:~$这里可以发现Windows的本地磁盘已经被挂载到/mnt目录下了
从 Linux 访问 Windows 文件:
通过导航到'/mnt’,然后导航到Windows驱动器号)即可,如:cd /mnt/c
需要注意的是这种挂载方式访问的IO性能并不好,如果要涉及大量IO操作还是尽量把文件拷贝到Linux子系统中
使用文件资源管理器访问Linux文件:

文件资源管理器中可以直接看到

Linux子系统的地址是 \\wsl.localhost\Ubuntu
命令混用
在Linux子系统中也可以调用Windows程序,一个典型的例子是:
使用vi新建一个文本文件,这个文件显然处于Linux子系统中,然而使用notepad.exe 文件名 可以调用出Windows的记事本来查看这个文本文件。
使用explorer.exe .或者explorer.exe 任意路径,直接调用Windows的资源管理器来查看Linux中的目录
在Windows的命令行中混用Linux命令
需要注意的是这种用法不仅需要安装 WSL 平台,还必须至少安装一个具体的 Linux 子系统
Windows的Powershell本身就把很多Windows命令设了一个Linux的别名,但是这和WSL的直接混用不是一回事
# Get-ChildItem 类似linux的 ls
PS D:\飞牛同步> Get-ChildItem | wsl grep xmind
-a---- 2026/3/29 22:30 376360 3.?????????.xmind
-a---- 2026/3/22 19:12 261581 4.IO???.xmind
-a---- 2026/4/3 0:56 457949 4.????.xmind
-a---- 2026/3/22 19:13 239850 5.????.xmind
-a---- 2025/12/7 23:35 431668 MySQLMariaDB-20251204.xmind
-a---- 2025/12/4 5:54 430647 MySQLMariaDB.xmind
-a---- 2026/3/10 0:08 513156 Redis.xmind
-a---- 2025/8/3 20:44 427760 RHCSAHCIA_1_1_1_1_1.xmind
-a---- 2026/3/12 0:00 357083 RHCSA??(FCLAPTOP?????1_2026-04-03 01-02-09).xmind
-a---- 2026/3/9 23:52 348128 RHCSA??.xmind
-a---- 2026/3/10 0:18 452663 SQL Server(FCLAPTOP?????1_2026-04-03 01-02-09).xmind
-a---- 2025/8/25 1:01 456912 SQL Server.xmind
-a---- 2026/3/22 22:42 366575 ????.xmind
-a---- 2025/8/5 23:04 299432 ????.xmind
PS D:\飞牛同步>其他特性
WSLg运行带UI的程序
当你启动一个 Linux 图形软件时,该软件在 Linux 里画出了界面。接着,WSLg 利用高度优化的远程桌面协议 (RDP),把这个软件的窗口“剪裁”下来,直接“贴”到你的 Windows 桌面和任务栏上。
微软把 WSLg 做到了真正的零配置、开箱即用。只要安装了新版的 WSL2(Windows 11 或较新的 Win 10),它就已经可以直接显示Linux中带UI的程序了。
显卡直通
准确的来说,WSL2支持的是GPU加速而不是显卡直通。可以理解成是一种特别快的“转译”或者说“转发”机制。
为了实现 CUDA 加速,NVIDIA 专门配合微软写了一套特殊的 WSL 驱动,能够极其高效地将 Linux 的 CUDA 请求打包传给 Windows。性能损耗通常只有 2% - 5%,几乎媲美物理机原生性能。Intel 和 AMD 的显卡也能在 WSL2 中提供很好的图形界面加速。
获取图形桌面
kali-linux
kali-win-kex(简称 Win-KeX)是 Kali Linux 专门为 WSL 2(Windows Subsystem for Linux) 环境开发的一个核心工具包, 目的是获得完整的图形化桌面体验。
sudo apt update
sudo apt install -y kali-win-kex
kex --esm --ip -s
--esm:增强会话模式,基于 RDP,可以更顺畅地调整窗口大小,且图形渲染性能通常优于基础的 X11 转发模式。
--ip:告诉RDP通过子系统的IP地址,而不是本机回环地址去连接
-s:启用音频支持如果要使用其他发行版本的图形化桌面,通过Windows的Hyper-V控制台创建虚拟机会比WSL方案方便
三、高级配置
WSL 中的高级设置配置 | Microsoft Learn
wsl.conf 和 .wslconfig
.wslconfig用于在WSL2上运行的所有已安装发行版中配置全局设置。
wsl.conf用于为在WSL1或WSL2上运行的每个Linux发行版按各个发行版配置本
地设置。

更改完配置之后,需要使用wsl --shutdown 关闭子系统,等待8秒后重启才能生效

很多时候可以直接在 WSL 设置中修改 WSL 配置,而不是手动编辑 .wslconfig 文件。
实践:在一个子系统启用systemd(wsl.conf)
sudo -i
vi /etc/wsl.conf
# 添加以下内容
[boot]
systemd=true
# 使用:wq保存退出
wsl.exe --shutdown
# 关闭 WSL 发行版,等待8秒左右
# 回到 Ubuntu 检查是否开启成功
systemctl list-unit-files --type=service实践:修改全局网络配置(.wslconfig)
WSL2默认使用NAT模式联网,与主机、局域网的其他设备不在同一网段。由于桥接模式有安全风险,微软已将镜像网络模式作为桥接模式的官方替代方案:WSL2与Windows主机自动共享同一IP地址。
在Windows用户(注意不是子系统)的home目录创建一个.wslconfig文件

.wslconfig 的节标签:[wsl2]
networkingMode:字符串
可用值为:none、mirrored和virtioproxy。
如果值为 none,则 WSL 网络断开连接。
如果值为 nat 或未知值,则使用 NAT 网络模式
(如果 NAT 网络模式失败,则会回退到使用 VirtioProxy 网络模式)。
如果值为 bridged,则使用桥接网络模式(新版本已弃用)。
如果值为 mirrored,则使用镜像网络模式。
如果值为 virtioproxy,则使用 VirtioProxy 网络模式。
安装Docker Desktop
https://github.com/tech-shrimp/docker_installer
下载 docker_desktop_installer_windows_x86_64.exe
如果想自己指定安装目录,可以使用命令行的方式
start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker
设置镜像加速站,推荐使用1panel
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
如果不借助WSL的话,默认情况下Docker Desktop 会自动利用 Windows 自带的 Hyper-V 虚拟化技术,在后台创建一个轻量级的 Linux 虚拟机。
Docker Desktop 通过“WSL 集成”功能,将 Windows 上的 docker 命令行工具直接“注入”到 WSL2 Ubuntu 环境中。这意味着,在 Ubuntu 的终端里输入 docker 命令时,这个命令实际上是通过 WSL 的集成机制,转发给了后台 Docker Desktop 的引擎去执行。Ubuntu 只是一个可以方便地使用 Docker 命令的“操作终端”。
WSL2 提供了“地基”(Linux 内核),而 Docker Desktop 提供了“精装修”(图形界面、自动化配置、便捷工具)。相比以往性能更高,两个系统之间也没有隔离,是目前官方推荐的方式。

设置完成后,没有安装过docker的ubuntu图子系统也可以使用docker命令了