跳到主要内容

WSL2 安装与基础配置


0. 什么是 WSL2,为什么要用它

WSL2(Windows Subsystem for Linux 2)是微软内置在 Windows 10/11 中的 Linux 子系统,默认安装 Ubuntu 24.04 LTS

它不是虚拟机,不需要双系统,直接在 Windows 里跑一个完整的 Linux 内核。

为什么用它而不是在 Windows 上直接开发:

图形化界面(GUI)会把很多底层细节包装起来——你点一下按钮,背后发生了什么你不知道。真正抛弃图形界面、用命令行工作之后,才会逼着自己搞清楚文件权限、环境变量、进程管理这些东西。这些是开发的地基,在 Windows 图形界面下你可以永远绕过它,在 Linux 命令行里你绕不开。


1. 安装 WSL2

在 Windows PowerShell(管理员)中执行:

wsl --install

安装完成后重启系统

重启后查看版本确认安装成功:

wsl --version
wsl -l -v

2. 处理 Docker Desktop 抢占默认发行版(没有安装 Docker 可跳过)

Docker Desktop 安装后会在 WSL2 里创建自己的 Linux 实例,并把它设为默认。这意味着你输入 wsl 进的不是 Ubuntu,而是一个精简到连 apt 都没有的 Docker 内部系统。

检查当前默认发行版:

wsl -l -v

带星号 * 的就是默认。如果不是 Ubuntu,立即修正:

wsl --set-default Ubuntu

如果已经卸载 Docker 但残留还在,清理掉:

wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

3. 将 Ubuntu 迁移到 D 盘(避免 C 盘占用过高)

WSL2 默认把整个 Linux 系统(包括后续安装的所有工具和 AI 模型)存在 C 盘。随着开发环境越来越大,很容易把 C 盘撑满。迁移到 D 盘一劳永逸。

wsl --shutdown
wsl --export Ubuntu D:\wsl_export\ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu D:\WSL_Data\ D:\wsl_export\ubuntu.tar

迁移后验证路径是否正确:

Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\*" | Select-Object DistributionName, BasePath

BasePathD:\ 开头则迁移成功。


4. 进入 Ubuntu 并完成基础配置

以 root 身份进入(此时普通用户还没有 sudo 权限,必须先用 root 操作):

wsl -u root

编辑核心配置文件:

nano /etc/wsl.conf

写入以下完整内容(一次性写完,避免日后重复写同一个 key 导致启动警告):

[boot]
systemd=true

[network]
generateResolvConf = false

[user]
default = 你的用户名

保存退出:Ctrl+OEnterCtrl+X


5. 修复 DNS

背景

WSL2 默认会自动生成 /etc/resolv.conf,指向一个虚拟网关地址。如果 Windows 侧开启了虚拟网卡代理(如 Clash TUN 模式、v2rayN 等),这个虚拟网关会拦截 DNS 请求但不一定正确转发,导致 WSL 内部所有联网操作超时失败。

上面第 4 步已经通过 generateResolvConf = false 禁止 WSL 自动覆盖 DNS,现在手动锁定一个可靠的 DNS 地址。

chattr -i /etc/resolv.conf
rm /etc/resolv.conf
echo "nameserver 223.5.5.5" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
chattr +i /etc/resolv.conf

chattr +i 锁定文件,防止任何程序(包括 WSL 自身)在重启后把它改回去。

补充:不开代理 / 直连环境下的额外配置

如果你的 Windows 没有开代理,或者使用的是直连网络,上面的 DNS 配置已经足够。但如果遇到 curl 能通但 apt 连不上的情况,可以追加一条:

chattr -i /etc/resolv.conf
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
chattr +i /etc/resolv.conf

直连环境下如果仍然超时,通常是 GitHub/海外源的问题,换用国内镜像源:

# 将 apt 源切换为阿里云镜像(Ubuntu 24.04)
sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list.d/ubuntu.sources
sudo apt update

6. 配置 sudo 权限与修复文件归属

为什么要做这一步

在前面的操作中,你以 root 身份在 Linux 里新建或修改了一些文件。Linux 的权限系统会把这些文件的"拥有者"记录为 root,而不是你的普通用户。当你后续切换回普通用户工作时,这些文件你读不了、改不了,工具链也会报各种 Permission denied

这一步做两件事:

  1. 把普通用户加入 sudo 组,让他有权执行管理员操作。
  2. 把家目录下所有文件的归属权从 root 归还给普通用户。
usermod -aG sudo 你的用户名
chown -R 你的用户名:你的用户名 /home/你的用户名

7. 彻底重启使所有配置生效

以上所有改动(wsl.conf、DNS、用户配置)必须完整重启 WSL 才能生效,仅关闭终端窗口是不够的:

wsl --shutdown

重新打开 Ubuntu,确认提示符为:

你的用户名@hostname:~$

注意提示符末尾是 $(普通用户),不是 #(root)。


8. 验证配置

# 确认当前用户
whoami

# 确认 sudo 权限正常
sudo ls /root

# 确认 DNS 解析正常
ping -c 4 223.5.5.5

# 确认外网连通
curl -I https://www.google.com

全部正常后,WSL2 基础环境配置完成。


9. 常用目录与路径操作速查

cd ~          # 回到家目录(等同于 /home/用户名)
cd / # 回到根目录
cd .. # 上一级
pwd # 显示当前所在路径
ls -la # 列出详细文件(含隐藏文件,如 .bashrc)
mkdir -p a/b # 递归创建多级目录

路径规则:

写法含义
/home/用户名绝对路径,从根目录开始
~/workspace家目录下的 workspace
./src当前目录下的 src
..上一级目录

10. WSL2 服务管理速查

wsl --shutdown            # 彻底关闭所有 WSL 实例
wsl -l -v # 查看所有发行版运行状态
wsl -u root # 以 root 身份进入默认发行版
wsl -d Ubuntu # 进入指定发行版
wsl --set-default Ubuntu # 设置默认发行版

11. nano 编辑器快捷键

操作快捷键
保存文件Ctrl+OEnter 确认
退出Ctrl+X
放弃修改直接退出Ctrl+XN
验证文件内容cat /etc/wsl.conf