在 Windows 上构建不占 C 盘的科研级 WSL 实验环境(Ubuntu 22.04)

在 Windows 上构建不占 C 盘的科研级 WSL 实验环境(Ubuntu 22.04)

适用人群:

  • 使用 Windows 作为主力实验机器
  • 从事 机器学习 / NLP / LLM / KBQA / 图数据库 等研究
  • C 盘空间紧张,希望 WSL 数据完整放在 D 盘

本文将完整介绍:

  1. 为什么默认 WSL 会疯狂占用 C 盘
  2. 如何从零开始把 Ubuntu 22.04 WSL 安装到 D 盘
  3. 如何在该 WSL 中搭建一个 可长期使用、可复现的科研级 Python / 深度学习环境

全文以"Windows + WSL2 = 主力科研环境"为核心设计理念。


一、为什么默认 WSL 会占 C 盘?(原理必须先搞清)

WSL2 的本质并不是"Linux 进程模拟",而是:

一个运行在 Hyper-V 之上的轻量级 Linux 虚拟机

这个虚拟机的整个 Linux 文件系统,被封装在一个虚拟磁盘文件中:

text 复制代码
ext4.vhdx

默认存放位置

text 复制代码
C:\Users\<你的用户名>\AppData\Local\Packages\<发行版ID>\LocalState\ext4.vhdx

关键结论

  • 即使你在 Linux 内部:

    • 修改 /home
    • 挂载数据目录
  • ext4.vhdx 依然在 C 盘

  • 所有数据增长,最终都会体现在 C 盘空间被吞噬

👉 因此:

唯一真正让 WSL 不占 C 盘的方法,是控制 ext4.vhdx 的物理存放位置


二、WSL 安装方案对比(结论先行)

安装方式 是否真正不占 C 盘 推荐度
wsl --install 直接安装 不推荐
Microsoft Store 安装 不推荐
wsl --import 自定义路径 ⭐⭐⭐⭐⭐
安装后再迁移 ⭐⭐⭐

最佳实践只有一个

从一开始就用 wsl --import,把 ext4.vhdx 放在 D 盘


三、在 D 盘新建 Ubuntu 22.04 WSL(标准做法)

目标效果

  • 发行版名称:Ubuntu-22.04
  • 数据目录:D:\WSL\Ubuntu-22.04\
  • ext4.vhdx 完全位于 D 盘
  • C 盘仅保留极少量 WSL 组件文件

Step 1:准备目录(Windows)

在 D 盘新建目录:

text 复制代码
D:\WSL\Ubuntu-22.04

Step 2:获取 Ubuntu 22.04 RootFS(官方方式)

在 PowerShell 中执行:

powershell 复制代码
wsl --install -d Ubuntu-22.04
wsl --shutdown

随后导出 rootfs:

powershell 复制代码
wsl --export Ubuntu-22.04 D:\WSL\ubuntu-22.04.tar
wsl --unregister Ubuntu-22.04

说明:

  • 这一步只是借用官方镜像生成 rootfs
  • 该发行版马上会被删除,不会长期占用 C 盘

Step 3:在 D 盘重新导入(关键步骤)

powershell 复制代码
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\WSL\ubuntu-22.04.tar --version 2

参数解释:

参数 含义
Ubuntu-22.04 WSL 中显示的发行版名称
D:\WSL\Ubuntu-22.04 ext4.vhdx 的实际存放位置
ubuntu-22.04.tar Linux 根文件系统
--version 2 使用 WSL2

Step 4:清理临时文件

powershell 复制代码
del D:\WSL\ubuntu-22.04.tar

Step 5:启动并配置用户

powershell 复制代码
wsl -d Ubuntu-22.04

默认以 root 身份进入,需要手动创建用户:

bash 复制代码
adduser yourname
usermod -aG sudo yourname

设置默认用户:

powershell 复制代码
ubuntu2204.exe config --default-user yourname

Step 6:验证 ext4.vhdx 位置

powershell 复制代码
wsl --shutdown

确认:

text 复制代码
D:\WSL\Ubuntu-22.04\ext4.vhdx

至此,WSL 的 全部 Linux 数据已彻底脱离 C 盘


四、已有 WSL 的迁移方案(备选)

powershell 复制代码
wsl --shutdown
wsl --export Ubuntu-22.04 D:\WSL\backup.tar
wsl --unregister Ubuntu-22.04
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\WSL\backup.tar --version 2

五、必须避开的常见误区

❌ 误区 1:只迁移 /home

  • ext4.vhdx 仍在 C 盘
  • 问题根本没解决

❌ 误区 2:ext4.vhdx 做软链接

  • 官方不支持
  • 高概率损坏文件系统

❌ 误区 3:安装后强行改路径

  • 没有官方迁移机制
  • 极易翻车

六、在该 WSL 中搭建科研级 Python / ML 环境

以下所有操作均在 Ubuntu 22.04 WSL 内执行

1️⃣ 系统与编译基础

bash 复制代码
sudo apt update
sudo apt upgrade -y

sudo apt install -y \
  build-essential cmake pkg-config \
  git curl wget unzip zip \
  tmux htop tree software-properties-common

2️⃣ 使用 Conda 管理 Python(强烈推荐)

bash 复制代码
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc

创建科研主环境:

bash 复制代码
conda create -n research python=3.10 -y
conda activate research

3️⃣ 数值计算与深度学习基础

bash 复制代码
pip install -U numpy scipy pandas scikit-learn matplotlib seaborn tqdm
pip install torch torchvision torchaudio

4️⃣ NLP / LLM / KBQA 核心库

bash 复制代码
pip install -U \
  transformers datasets tokenizers sentencepiece accelerate \
  spacy nltk rapidfuzz rank-bm25 networkx \
  SPARQLWrapper rdflib pyparsing

5️⃣ 实验工程与复现工具

bash 复制代码
pip install -U pyyaml hydra-core rich wandb

6️⃣ 环境验证

bash 复制代码
python - << EOF
import torch, transformers, numpy, pandas, networkx
print('Torch:', torch.__version__)
print('Transformers:', transformers.__version__)
print('OK: research env ready')
EOF

七、总结

通过 WSL2 + D 盘部署 + Conda 管理环境,Windows 完全可以胜任:

  • 日常科研实验
  • LLM / KBQA / 图推理
  • 大规模数据处理与复现

该方案的核心优势是:

  • C 盘零压力
  • 环境高度可控
  • 与 Linux 服务器高度一致
  • 对科研工作极其友好

如果你本身就是 Windows 用户,这几乎是目前性价比最高、工程最稳妥的实验环境方案。

相关推荐
客卿1232 小时前
C语言实现数组串联--力扣冒险
c语言·开发语言·leetcode
玖釉-2 小时前
[Vulkan 学习之路] 04 - 选妃环节:挑选物理设备与队列族
c++·windows·图形渲染
客卿1232 小时前
1/14-C语言重排数组
c语言·开发语言·算法
HABuo2 小时前
【linux进程控制(一)】进程创建&退出-->fork&退出码详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
EndingCoder2 小时前
高级类型:联合类型和类型别名
linux·服务器·前端·ubuntu·typescript
半壶清水2 小时前
如何在IDEA中将JavaFX项目打包EXE文件
java·windows·intellij-idea·jar
Tandy12356_2 小时前
手写TCP/IP协议栈——TCP数据接收
c语言·网络·网络协议·tcp/ip·计算机网络
CQ_YM2 小时前
SQLite3 数据库与网页html
c语言·数据库·sqlite·html
_oP_i2 小时前
Windows 下往 Elasticsearch 添加数据
大数据·windows·elasticsearch