在 Windows 11 上启用 WSL

首先需要了解:

  • WSL 是 Windows 的运行平台
  • Ubuntu 是运行在 WSL 中的 Linux 系统
  • 安装流程应明确分为两步:
    1. 在 Windows 中启用 WSL 平台
    2. 在 WSL 中安装 Ubuntu 发行版

WSL 至少有 3 个层次

1
2
3
4
Windows 11
└── WSL 平台(子系统 / 虚拟化能力)
└── Linux 发行版(Ubuntu / Debian / Kali)
└── Linux 用户、软件、命令

GitHub:[microsoft/WSL: Windows Subsystem for Linux]


在 Windows 11 中启用 WSL

在安装任何 Linux 发行版之前,需要先确保 Windows 已正确启用 WSL 运行环境。

1. 检查 WSL 当前状态

打开 命令提示符 / PowerShell(管理员),执行:

1
wsl --status

可能出现类似输出:

1
2
3
4
5
默认版本: 2
当前计算机配置不支持 WSL1。
若要使用 WSL1,请启用“Windows Subsystem for Linux”可选组件。
当前计算机配置不支持 WSL2。
请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用虚拟化。

说明:

  • 当前系统尚未启用完整的 WSL2 运行条件
  • 需要开启 Windows 相关功能并确保 BIOS 虚拟化已打开

2. 启用 Windows 功能

打开:

1
控制面板 → 程序 → 启用或关闭 Windows 功能

勾选以下选项:

  • Windows Subsystem for Linux
  • Windows 虚拟机监控程序平台

说明:

  • 部分 Windows 11 版本(如家庭版)可能看不到 “Hyper-V”,这是正常的
  • WSL2 并不要求你启用 Hyper-V 管理器界面,只要底层虚拟化能力可用即可

完成后 重启系统


3. 再次检查 WSL 状态

重启后执行:

1
wsl --status

如果输出类似:

1
默认版本: 2

说明:

  • WSL 平台已经可以正常使用
  • 但此时 尚未安装任何 Linux 发行版

可以通过以下命令验证:

1
wsl --list --verbose

输出示例:

1
适用于 Linux 的 Windows 子系统没有已安装的分发。

这表示:WSL 平台已就绪,但还没有安装 Ubuntu / Linux。


在 WSL 平台中安装 Ubuntu

完成 WSL 平台准备后,接下来才是安装真正的 Linux 系统。

4. 查看可安装的 Linux 发行版

1
wsl --list --online

示例输出:

1
2
3
4
5
6
7
NAME            FRIENDLY NAME
Ubuntu Ubuntu
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
...

5. 安装 Ubuntu

以安装 Ubuntu 为例:

1
wsl --install Ubuntu

执行过程包括:

  • 下载 Ubuntu RootFS
  • 创建虚拟磁盘(ext4.vhdx)
  • 初始化 Linux 系统

安装完成后会提示:

1
已成功安装分发。它可通过 “wsl.exe -d Ubuntu” 启动

6. 初始化 Ubuntu

也就是创建 Linux 用户。首次启动 Ubuntu 时,会进行 Linux 系统初始化:

1
Create a default Unix user account:

注意:

  • Linux 用户名 必须小写
  • 不能使用大写字母

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
Provisioning the new WSL instance Ubuntu
This might take a while...
Create a default Unix user account: Magnolia
Invalid username. A valid username must start with a lowercase letter or underscore, and can contain lowercase letters, digits, underscores, and dashes.
Create a default Unix user account: magnolia
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

System information as of Tue Mar 4 21:26:59 CST 2025

System load: 0.03 Processes: 36
Usage of /: 0.1% of 1006.85GB Users logged in: 0
Memory usage: 3% IPv4 address for eth0: 172.20.107.81
Swap usage: 0%


This message is shown once a day. To disable it please create the
/home/magnolia/.hushlogin file.

完成后会看到欢迎信息:

1
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 5.15.x-microsoft-standard-WSL2)

说明:

  • Ubuntu 已成功安装
  • Linux 正在通过 WSL2 运行
  • Windows 仅作为宿主系统存在

手动下载 Linux 版本

Microsoft 官方 WSL 仓库中用于描述受支持发行版及其下载地址的配置文件:DistributionInfo.json

这个文件里记录了 WSL 所支持的 Linux 发行版,挑选一个下载即可。这里比如选择了 Ubuntu-24.04。将这个 wsl 文件下载到一个本地文件夹中,这可以看成一个软件安装包。其本质上是一个 WSL 发行版的 rootfs 打包文件,类似于容器镜像,用于初始化 Linux 根文件系统。

安装 wsl 到指定文件夹

通过这个命令来安装刚下载的 Linux 发行版:

1
wsl --install --from-file D:\wsl\rootfs\ubuntu-24.04.3-wsl-amd64.wsl --location D:\wsl\ubuntu --name ubuntu-24.04
  • wsl --install:表示安装 wsl 的 Linux 发行版
  • --from-file:后面跟着 wsl 的路径,表示从本地 wsl 文件安装
  • --location:表示安装到的位置,这里安装到了 D:\wsl\ubuntu 这个位置
  • --name:Linux 发行版的名称

这样,Linux 就直接安装到了 D 盘的指定文件夹,而前面下载的 wsl 文件,在安装完成之后就可以删除。


常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
wsl --list --verbose  # 查看可用的 WSL 发行版
wsl --shutdown # 重启WSL
wsl pwd # 可以查看当前路径,来验证 WSL 是否正常工作
wsl ls
wsl --update

# 收集 WSL 诊断信息
wsl --status
wsl --systeminfo

# 更新包
sudo apt update

# tree
sudo apt install tree
tree -L 3 -a -I "syslog|__pycache__|*.log" # 展示筛选后的当前目录结构

在 Windows 命令行

1
2
C:\Users\username>wsl pwd
/mnt/c/Users/username

创建 /etc/wsl.conf,禁用 Windows 访问 Linux 文件系统:

1
2
3
4
[automount]
enabled = true
options = "metadata"
mountFsTab = false

这样可以 加速 WSL 访问 Windows 文件系统,避免不必要的同步。

使用 wsl --shutdown 释放 WSL 资源:

1
wsl --shutdown

访问 WSL 目录

在 Windows 资源管理器 中访问 WSL 目录:

  1. 打开 资源管理器 - 地址栏 \\wsl$,看到 WSL 安装的所有 Linux 发行版,比如 Ubuntu
  2. 进入 \\wsl$\Ubuntu\home\yourname,像管理普通文件一样操作 WSL 里的文件。

在 WSL 中遇到 ls 命令显示中文文件名出现 ?????? 的问题,通常是由于字符编码语言环境(Locale)设置不正确导致的。以下是解决方法:


自定义配置

语言配置

检查并设置正确的 Locale

WSL 默认可能未配置中文语言环境,需要手动启用:

1
2
3
4
5
6
7
8
9
10
11
12
# 查看当前 locale 设置
locale

# 安装中文语言包(Ubuntu/Debian 示例)
sudo apt update && sudo apt install locales fonts-noto-cjk

# 生成并设置中文 locale(UTF-8 编码)
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

# 临时生效(仅当前会话)
export LANG=zh_CN.UTF-8

重启 WSL 后生效(关闭终端重新打开)。


迁移 WSL 位置

将 WSL 从 C 盘迁移到 D 盘。

当前版本

1
2
3
>wsl --list --verbose
NAME STATE VERSION
* Ubuntu Running 2

关闭 wsl、注销、导出为归档文件

1
2
3
4
wsl --shutdown
wsl --export Ubuntu "D:\software\WSL\ubuntu_backup.tar"
wsl --unregister Ubuntu
# 注销原先在C盘的 Ubuntu WSL 实例,删除原始文件并释放 C 盘空间。

导入并启动

1
2
3
4
wsl --import Ubuntu "D:\software\WSL\Ubuntu" "D:\software\WSL\ubuntu_backup.tar" --version 2

wsl --list --verbose
wsl

.wslconfig用户级可选默认不存在只有自己“手动创建”才会出现

如果要配置 swap 存储位置,可以手动创建 C:\Users\<用户名>\.wslconfig

1
2
3
[wsl2]
swap=D:\\software\\WSL\\swap.vhdx
swapSize=2GB

现在电脑内容基本大于 16GB,所以可以直接关闭 swap:

1
2
[wsl2]
swap=0