在 Windows 中使用 WSL2 搭建 Ubuntu 开发环境

1 WSL 是什么

WSL 全称为 Windows Subsystem for Linux,可以在 Windows 内部运行 Ubuntu 等 Linux 发行版。

它不是双系统,也不需要开机时选择进入 Windows 还是 Linux。正常的使用方式是:

复制代码
Windows 正常开机
├── VS Code
├── 浏览器
├── 代理软件
└── WSL2 Ubuntu
    ├── Linux 命令行
    ├── Python 环境
    ├── 项目代码
    ├── 数据库
    └── Claude Code

Windows 主要负责图形界面,Ubuntu 主要负责运行 Linux 项目和开发工具。

2 检查 WSL 环境

在管理员 PowerShell 中执行:

复制代码
wsl --version
wsl -l -v

如果看到:

复制代码
NAME              STATE      VERSION
docker-desktop    Stopped    2

说明 WSL2 已经安装,但 docker-desktop 是 Docker 内部使用的发行版,不适合直接作为日常开发环境。

可以继续安装独立的 Ubuntu:

复制代码
wsl --install Ubuntu-24.04 `
  --location E:\wsl\Ubuntu-24.04 `
  --name Ubuntu-24.04

使用 --location 可以将 Ubuntu 的主要虚拟磁盘放在 E 盘,避免占用过多 C 盘空间。

安装完成后进入 Ubuntu:

复制代码
wsl -d Ubuntu-24.04

首次启动需要设置 Linux 用户名和密码。输入密码时终端不会显示任何字符,这是 Linux 的正常行为。

3 WSL 中的文件到底存在哪里

WSL 内有两类路径。

第一类是 Linux 自己的文件系统:

复制代码
/home/user
/usr
/etc
/var

这些文件保存在 Ubuntu 的虚拟磁盘中。如果安装 Ubuntu 时指定了:

复制代码
E:\wsl\Ubuntu-24.04

那么这个虚拟磁盘主要位于 E 盘。

第二类是 Windows 磁盘的挂载目录:

复制代码
/mnt/c
/mnt/e

例如:

复制代码
/mnt/e/data/project

实际上对应:

复制代码
E:\data\project

虽然 WSL 可以直接访问 Windows 文件,但 Python 虚拟环境、向量数据库和大量小文件更适合放在 Linux 文件系统中。

因此可以将项目复制到 Linux:

复制代码
mkdir -p ~/projects
cp -a /mnt/e/data/project ~/projects/
cd ~/projects

此时项目会存在两份:

复制代码
Windows 原始版本:
E:\data\project

WSL 工作版本:
/home/user/projects

第一阶段可以保留 Windows 版本作为备份。

4 WSL 代理与网络问题

Windows 开启代理软件、TUN 模式或虚拟网卡后,WSL 中解析出的 IP 可能类似:

复制代码
28.0.0.156
28.0.0.157

这类地址通常是代理软件 Fake-IP 模式生成的虚拟地址。

如果代理规则没有正确覆盖 WSL 流量,可能出现:

复制代码
Could not connect to archive.ubuntu.com
Could not connect to downloads.claude.ai
connection timed out

可以先将代理软件临时切换到全局模式进行测试。

在 WSL 中测试 HTTPS:

复制代码
curl -I https://api.anthropic.com

如果返回:

复制代码
HTTP/2 404

并不代表网络失败。它说明域名解析和 HTTPS 连接已经成功,只是访问的根路径没有对应页面。

如果 APT 使用 HTTP 源超时,可以将 Ubuntu 软件源从 HTTP 改成 HTTPS:

复制代码
sudo cp /etc/apt/sources.list.d/ubuntu.sources \
  /etc/apt/sources.list.d/ubuntu.sources.bak

sudo sed -i \
  -e 's|http://archive.ubuntu.com/ubuntu/|https://archive.ubuntu.com/ubuntu/|g' \
  -e 's|http://security.ubuntu.com/ubuntu/|https://security.ubuntu.com/ubuntu/|g' \
  /etc/apt/sources.list.d/ubuntu.sources

然后重新更新:

复制代码
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

如果规则模式下失败、全局模式下成功,说明问题主要来自代理分流规则。安装完成后,可以在代理配置中单独让以下域名走代理:

复制代码
claude.ai
downloads.claude.ai
api.anthropic.com
相关推荐
不羁的木木3 小时前
HarmonyOS APP实战-基于Image Kit的图像处理APP - 第9篇:批量处理与编辑历史
图像处理·ubuntu·harmonyos
春卷同学3 小时前
HarmonyOS掌上记账APP开发实践第15篇:ArkTS 类型系统深度解析 — 从接口到联合类型的灵活运用
ubuntu·华为·harmonyos
摇滚侠3 小时前
Linux 零基础教程 09、11、77
linux·运维·服务器
美丽的欣情6 小时前
RK3588 Debian 交叉编译环境搭建(Windows + VMware Debian + CMake)
运维·windows·debian
勤劳打代码6 小时前
Flutter 架构指南 —— windows 平台安装拆解
windows·架构
小樱花的樱花7 小时前
Linux 多线程编程:互斥锁(Mutex)详解
linux·c语言·开发语言
麦兜和小可的舅舅7 小时前
从原理到实战:Linux 系统性能诊断核心指标全解析及生产系统故障分析复盘
大数据·linux·运维
mounter6258 小时前
质检员与超能引擎的碰撞:KASAN 护航 eBPF JIT 的技术演进与安全抉择
linux·ebpf·linux kernel·kernel·kasan
风123456789~8 小时前
【Linux专栏】history常用命令
linux·运维·服务器
熬夜苦读学习8 小时前
基于websocket的多用户五子棋网页游戏
linux·服务器·网络·websocket·网络协议·游戏·五子棋