在 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
相关推荐
请你吃div12 分钟前
Electron 从零开始的新手开发教程
vue.js·windows·electron
盐焗鹌鹑蛋19 分钟前
【Linux】消息队列和信号量
linux
影寂ldy31 分钟前
C# WinForm TCP聊天室(服务端+客户端)
windows·tcp/ip·c#
智者向内寻求力量33 分钟前
【记录】ubuntu 24.04 安装在levnoval PC上之后,蓝牙设备找不到解决方法
linux·服务器·ubuntu
2301_8107301044 分钟前
K8s的Pod管理
linux·容器·kubernetes
tedcloud1231 小时前
diagram-design 怎么安装?用 AI 自动生成更专业的架构图、流程图
linux·运维·前端·人工智能·开源·流程图
多弗朗皮卡丘1 小时前
C语言梦开始的地方16:结构体
c语言·开发语言·windows
huainingning1 小时前
Linux和Windows系統SCP命令传输文件
linux·运维·服务器
polarislove02141 小时前
Windows安全中心网络盘打开文件提示“打开这些文件可能会对你的计算机有害”的解决方法
网络·windows·安全
2401_862880821 小时前
Linux应用层开发 --- 多任务
linux·服务器·c语言