WSL使用教程-在Windows上运行Linux环境

WSL2 使用教程

📝 简介WSL (Windows Subsystem for Linux) 是在 Windows 上运行 Linux 环境的子系统,让你无需虚拟机即可使用完整的 Linux 工具链。

1. 安装 WSL

💡 安装前检查

  1. 电脑系统为 Windows 11Win+R 输入 winver 查看)且开启了虚拟化
  2. 拥有管理员权限,网络正常

1.1 快速安装

打开 PowerShell(管理员),运行:

wsl --install

1.2 安装特定发行版

wsl --install -d <发行版名称>

1.3 手动启用(如已安装但未启用)

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
⚠️ 重要:安装完成后必须重启电脑,首次启动会要求设置用户名和密码。
ℹ️ 信息:WSL2 是 WSL1 的升级版,使用真正的 Linux 内核,兼容性和性能更好,推荐使用 WSL2。

2. 启动与进入

2.1 图形方式

Win 键搜索 "Ubuntu" 点开,直接进入 Linux 终端。

2.2 命令方式

wsl                        # 进入默认发行版
wsl -d <发行版名称>         # 进入指定发行版
wsl -u root                # 以 root 身份进入
wsl -- ls /home            # 不进入 shell,直接执行命令

2.3 什么时候会启动?

WSL2 的 VM(任务管理器中的 vmmem 进程)不会开机自启,以下操作会触发启动:

  • 打开 Ubuntu 图标 / 终端输入 wsl / VS Code Remote-WSL 打开项目
  • 访问 \\wsl$ 路径(资源管理器、IDE 扫描、固定到快速访问等)
📝 注意:正常开机后 vmmem 不存在,只有触发上述操作才会出现。

2.4 什么时候会关闭?

自动关闭流程(两阶段)

关掉最后一个终端 → ~15秒后 → 发行版 Stopped
所有发行版 Stopped → ~60秒后 → VM 关闭(vmmem 消失,内存释放)

时间参数:

  • 15 秒:硬编码,不可调
  • 60 秒:可通过 .wslconfigvmIdleTimeout 修改(单位毫秒,-1 = 永不自动关)
  • 前提:WSL 内没有后台进程(tmux/screen/nohup 等会阻止自动关闭)

手动关闭

wsl --shutdown                # 立刻杀掉所有发行版 + VM(vmmem 马上消失)
wsl --terminate Ubuntu        # 只杀特定发行版,VM 等 60s 后自动关
wsl -t Ubuntu                 # --terminate 的简写
💡 提示--shutdown 常用于:改完 .wslconfig 后生效、内存占用太高、排查问题。

3. 管理发行版

3.1 基础管理命令

wsl -l -v                  # 查看已安装的发行版和运行状态
wsl --list --online         # 查看可用的在线发行版
wsl --set-default Ubuntu    # 设置默认发行版
wsl --set-default-version 2 # 设置默认 WSL 版本为 2(推荐)
wsl --unregister <名称>     # 卸载某个发行版(数据会丢失!)

3.2 从 rootfs 镜像安装发行版

通过 wsl --list --online 可以查看官方支持的发行版,但有时需要使用特定版本(如 Ubuntu 18.04)或其他未在列表中的发行版,这时需要手动下载并导入文件系统镜像

问题:什么是文件系统镜像?

文件系统镜像(rootfs)

  • 包含完整 Linux 目录结构(/bin/etc/usr 等)的压缩包
  • 通常为 .tar.gz 格式
  • WSL 可以直接导入并运行

ISO 镜像

  • 用于物理机或虚拟机安装的光盘镜像
  • 包含安装程序和引导加载器
  • 不能直接用于 WSL

关键区别:WSL 不需要完整的操作系统安装流程,只需要文件系统本身,因此使用 rootfs 而非 ISO。

3.2.1 导入步骤

第一步:下载文件系统镜像

以 Ubuntu 18.04 为例,从官方镜像站下载:

⚠️ 警告:选择 ubuntu-base-18.04.x-base-amd64.tar.gz 格式的文件,不是 ubuntu-18.04.x-desktop-amd64.iso

第二步:创建安装目录

# 建议放在非 C 盘
mkdir D:\WSL\Ubuntu-Base-1804

第三步:执行导入命令

wsl --import <实例名称> <安装目录> <tar.gz路径>

# 示例
wsl --import UbuntuBase1804 D:\WSL\Ubuntu-Base-1804 C:\Downloads\ubuntu-base-18.04.5-base-amd64.tar.gz

第四步:验证导入结果

# 查看发行版列表
wsl --list --verbose
# 输出应包含 UbuntuBase1804,状态为 Running 或 Stopped

# 进入系统
wsl -d UbuntuBase1804

第五步:初始化系统

⚠️ 重要:Base 镜像是最小化安装,需要手动配置
# 1. 更新软件源
apt update && apt upgrade -y

# 2. 安装基础工具
apt install -y sudo vim wget curl

# 3. 创建普通用户
adduser <用户名>
usermod -aG sudo <用户名>

# 4. 退出(准备设置默认用户)
exit

在 PowerShell 中设置默认用户:

# 编辑 /etc/wsl.conf
wsl -d UbuntuBase1804 -u root
nano /etc/wsl.conf

添加以下内容:

[user]
default=<用户名>

保存后执行 wsl --shutdown 重启生效。


4. 备份与迁移

4.1 基础备份与恢复

# 备份前建议先关闭发行版,确保数据完整性
wsl --terminate Ubuntu

# 导出备份
wsl --export Ubuntu D:\backup\ubuntu.tar

# 导入恢复
wsl --import MyUbuntu D:\wsl\ D:\backup\ubuntu.tar

4.2 迁移 WSL 到其他磁盘

💡 提示:WSL 默认安装在 C 盘(C:\Users\<用户名>\AppData\Local\Packages\),随着使用时间增长,虚拟磁盘文件会越来越大。建议迁移到其他磁盘以节省 C 盘空间。

4.2.1 迁移步骤

第一步:关闭并导出现有发行版

# 查看当前发行版名称和状态
wsl -l -v

# 关闭目标发行版(确保数据完整性)
wsl --terminate Ubuntu

# 导出到临时文件(以 Ubuntu 为例)
wsl --export Ubuntu D:\temp\ubuntu-backup.tar

第二步:注销删除原发行版

# ⚠️ 注意:此操作会删除 C 盘上的原实例,确保已导出备份
wsl --unregister Ubuntu

第三步:导入到新位置

# 创建目标目录
mkdir D:\WSL\Ubuntu

# 导入到新位置
wsl --import Ubuntu D:\WSL\Ubuntu D:\temp\ubuntu-backup.tar

第四步:设置默认用户

⚠️ 警告:导入后默认以 root 登录,需要恢复原用户以避免权限问题。
# 方式一:通过注册表修改(推荐)
ubuntu config --default-user <你的用户名>

# 方式二:手动编辑 /etc/wsl.conf
wsl -d Ubuntu
sudo nano /etc/wsl.conf

/etc/wsl.conf 中添加:

[user]
default=你的用户名

保存后执行 wsl --shutdown 重启生效。

第五步:清理临时文件

del D:\temp\ubuntu-backup.tar
成功:验证迁移结果

  • ✅ 执行 wsl -l -v 确认发行版正常
  • ✅ 进入 WSL 检查文件和配置是否完整
  • ✅ 检查 D:\WSL\Ubuntu\ 目录下的 ext4.vhdx 文件(虚拟磁盘)

5. 文件系统互访

5.1 Windows 访问 WSL 文件

在资源管理器地址栏输入:

\\wsl$\Ubuntu\home\用户名\

5.2 WSL 访问 Windows 文件

ls /mnt/c/                          # C 盘
cd /mnt/c/Users/用户名/Desktop       # 桌面
explorer.exe .                       # 用 Windows 资源管理器打开当前目录
💡 提示:代码项目放在 WSL 内部(/home/)比放在 /mnt/c/ 快很多

6. 配置文件

默认位置:C:\Users\<用户名>\.wslconfig(没有可以新建一个)

[wsl2]
memory=8GB              # 内存限制
processors=4            # CPU 核心数
swap=4GB                # 交换空间
networkingMode=mirrored # 镜像网络(解决 localhost 互通)

[interop]
enabled=true            # 允许调用 Windows 程序
appendWindowsPath=true  # Linux 中可用 Windows PATH
⚠️ 重要:修改后需重启 WSL

```powershell
wsl --shutdown
```


7. 开发环境初始化

进入 WSL 后执行:

# 系统更新
sudo apt update && sudo apt upgrade -y

# 基础工具
sudo apt install -y build-essential git curl wget vim

# Python
sudo apt install -y python3 python3-pip

# Node.js(通过 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18

# Git 配置
git config --global user.name "Your Name"
git config --global user.email "your@email.com"

# pip 国内加速
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

8. Docker

8.1 方式一:WSL 内直接安装

sudo apt install -y docker.io docker-compose
sudo usermod -aG docker $USER     # 免 sudo
newgrp docker
sudo service docker start         # 启动
docker run hello-world             # 验证

8.2 方式二:Docker Desktop(推荐)

  1. 安装 Docker Desktop
  2. Settings → Resources → WSL integration → 勾选你的发行版
  3. WSL 中直接使用 docker 命令

9. VS Code 集成

在 WSL 项目目录中执行:

code .
ℹ️ 信息:首次运行会自动安装 VS Code Server,之后 Windows 的 VS Code 会远程连接到 WSL。

也可以在 VS Code 中安装 Remote - WSL 扩展手动连接。


10. 常用维护命令

wsl --update              # 更新 WSL 内核
wsl --shutdown            # 关闭所有 WSL 实例
wsl --status              # 查看 WSL 状态
wsl --version             # 查看版本信息

11. 常见问题

问题 解决方案
WSL 启动慢 wsl --shutdown 重启;检查 .wslconfig 配置
内存占用过大 .wslconfig 中设置 memory=8GB 限制内存
网络不通/localhost 不通 .wslconfig 中设置 networkingMode=mirrored
Docker 启动失败 sudo service docker start;或用 Docker Desktop
/mnt/c 权限错误 sudo mount -t drvfs C: /mnt/c -o metadata
macOS 与 Linux 的 sed 差异 WSL 中使用 Linux 原生 sed,无需担心

12. 快速参考

操作 命令
进入 WSL wsl
查看发行版 wsl -l -v
重启 WSL wsl --shutdown
更新内核 wsl --update
备份 wsl --export Ubuntu backup.tar
访问 WSL 文件 \\wsl$\Ubuntu\home\
访问 Windows 文件 /mnt/c/
打开资源管理器 explorer.exe .
启动 Docker sudo service docker start
打开 VS Code code .