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

WSL使用教程

WSL (Windows Subsystem for Linux) —— 在Windows上运行Linux环境


打开 PowerShell 或 命令提示符,运行以下命令以安装WSL和默认的Linux发行版(通常是Ubuntu):

1. 安装WSL

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

wsl --install

安装特定发行版:

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

若已安装WSL但未启用,手动启用:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

安装完成后重启电脑,首次启动会要求设置用户名和密码。


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后自动关

--shutdown 常用场景:改完 .wslconfig 后生效、内存占用太高、排查问题

3. 管理发行版

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

4. 备份与迁移

wsl --export Ubuntu D:\backup\ubuntu.tar     # 导出备份
wsl --import MyUbuntu D:\wsl\ D:\backup\ubuntu.tar  # 导入恢复

5. 文件系统互访

Windows访问WSL文件:

资源管理器地址栏输入:\\wsl$\Ubuntu\home\用户名\

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:

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

方式一: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             # 验证

方式二: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,无需担心

快速参考

操作 命令
进入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 .