FChao
发布于 2026-04-09 / 13 阅读
0
0

WSL2入门

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命令了


评论