WSL的安装与使用详解
WSL的安装与使用详解
摘要:WSL 的工作机制、Windows/Linux 切换方式、文件 & 网络共享、虚拟机 vs 物理机的区别,以及 Conda 的必要性,我来完整解释一下:
1️⃣ WSL(Windows Subsystem for Linux)是什么?
- Microsoft 提供的 Linux 子系统,允许在 Windows 10/11 下直接运行 Linux 环境。
- 目前有两个版本:
- WSL1:非虚拟机,翻译系统调用 → Windows 内核执行,所以性能接近原生,但兼容性有限。
- WSL2(主流):基于 Hyper-V,运行一个轻量级的 真正的 Linux 内核虚拟机(但启动速度和性能优化比普通虚拟机好很多)。
👉 所以可以这样理解:
- WSL1 = Windows 内核模拟 Linux。
- WSL2 = Windows 内核旁边跑一个轻量虚拟机,专门运行 Linux 内核。
- 从使用者角度看,它比 VMware/VirtualBox 轻巧,但相比真正裸机 Linux 还是有限制。
2️⃣ WSL/Windows 两边如何切换?
切换方式取决于使用习惯:
命令行切换
- 在 Windows PowerShell 或 CMD 输入:
wsl
- 输入:
exit
- 在 Windows PowerShell 或 CMD 输入:
图形化/VSCode
- Visual Studio Code 安装 Remote - WSL 扩展,可以一键切换到 Linux 文件系统下写代码。
- 在 VSCode 窗口底部会提示:已连接到 WSL:
Ubuntu-20.04
。
👉 本质:WSL 和 Windows 共享同一台机器,你只需要在命令行输入 wsl
或用 VSCode remote 就能“切换”。
3️⃣ 文件共享
在 Windows → 访问 Linux 文件
- WSL2 的 Linux 根目录挂载在:
\\wsl$\Ubuntu-20.04\
- 可以在资源管理器地址栏直接输入
\\wsl$
,访问 Linux 文件。
- WSL2 的 Linux 根目录挂载在:
在 Linux → 访问 Windows 文件
- Windows 的磁盘会被挂载到
/mnt/
目录,比如:/mnt/c 对应 C盘 /mnt/d 对应 D盘
- 例如:Linux 下访问
C:\Users\你的名字\Desktop
→/mnt/c/Users/你的名字/Desktop
- Windows 的磁盘会被挂载到
👉 所以两边可以很方便传文件,双向互通。
4️⃣ 网络共享
- WSL2 默认使用 NAT 网络,相当于 Linux 有一个虚拟网卡,通过 Windows 转发出去。特点是:
- Linux 可正常上网;
- WSL 与 Windows 互相能通过 localhost 访问服务(需要配置端口转发);
- 如果需要从外部访问 Linux 的服务(比如跑 Jupyter Notebook),一般通过
localhost:端口号
即可。
例如:
在 WSL Linux 里跑 Jupyter:
jupyter notebook --ip 0.0.0.0 --port 8888
然后在 Windows 浏览器访问:
http://localhost:8888
就能直接打开。
5️⃣ WSL 是虚拟机还是物理机?
- WSL1:不是真正虚拟机,Linux 系统调用被翻译成 Windows 内核 API。
- WSL2:严格来说就是一种轻量级虚拟机(VM),但微软对其做了优化:
- 启动速度几乎秒开;
- 与 Windows 文件/网络高度集成;
- 资源动态分配,不像传统 VM 要固定划分内存和硬盘;
- 不是物理机:它依赖 Windows 来管理内核,不能单独运行。
👉 可以理解成:在 Windows 里运行了一个高度优化过的 Linux 虚拟机,但体验接近原生。
6️⃣ 为什么需要安装 Conda?
WSL 装好 Linux 后,其实就是一台干净的 Ubuntu(或其他 Linux 发行版),需要配置环境来跑 AI/EDA 相关实验。
为什么选择 Conda?
环境隔离
- SoC 验证/LLM 实验需要各种 Python 包(pytorch, transformers, bitsandbytes...)。
- 直接在系统 Python 装容易冲突,Conda 能给不同项目隔离环境。
依赖管理方便
- 有现成的 CUDA/PyTorch 包,
conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch
一行搞定。
- 有现成的 CUDA/PyTorch 包,
适合科研/开发
- Conda 可以开
env
:conda create -n soc python=3.10 conda activate soc
- Conda 可以开
👉 总结:
需要 Conda 的原因是可控性和复现性,实现不同实验环境互不干扰,结合 WSL 就能接近“Linux 服务器 + GPU 环境”的体验。
✅ 总结
- WSL 是什么? Windows 下运行 Linux 的方式 → WSL1(系统调用翻译),WSL2(轻量虚拟机)。
- 怎么切换?
wsl
进入 Linux,exit
返回 Windows;VSCode Remote 更方便。 - 文件共享? Windows ↔ Linux 互通:Windows 看 Linux:
\\wsl$
;Linux 看 Windows:/mnt/c
。 - 网络共享? Linux 可上网;Windows 通过
localhost
访问 Linux 服务。 - 虚拟机还是物理机? WSL2 本质是虚拟机,但高度优化,不需要像 VMware 那样笨重配置。
- 为什么安装 Conda? 管理 Python 环境、解决依赖冲突、方便复现,科研必备。
架构示意图
下面是一个分层示意图(HTML+CSS 绘制),清楚展示关系:
2️⃣ Conda 环境怎么用?
进入 WSL 终端后:
① 安装 Miniconda(轻量版即可):
# 下载 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 安装
bash Miniconda3-latest-Linux-x86_64.sh
# 安装完成后刷新环境
source ~/.bashrc
② 创建环境:
例如创建一个用于 SoC 验证的环境(Python 3.10):
conda create -n soc python=3.10
③ 激活/退出环境:
conda activate soc # 进入环境
conda deactivate # 退出环境
④ 在环境中安装依赖:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install transformers datasets bitsandbytes peft
这样就能在 soc
环境里单独维护 PyTorch + NLP 工具链。
3️⃣ WSL2 如何配置 GPU 访问?
要让 WSL2 内的 Linux 使用 GPU,需要准备 3 个部分:
(A) Windows 侧驱动
- 确保安装 最新的 NVIDIA Windows 驱动(>= 2022 年版,支持 WSL2 CUDA)
- 驱动里自带 WSL 支持,无需额外 CUDA Toolkit(Toolkit 在 Linux 装)。
(B) WSL 配置
- 确认 WSL 版本:
wsl --set-version Ubuntu-20.04 2
- 确认 GPU 对 WSL2 可见:
wsl --list --verbose
(C) Linux 侧 CUDA 环境
- 进入 WSL2
- 安装 CUDA 工具包(推荐用 apt repo):
sudo apt update sudo apt install -y nvidia-cuda-toolkit
- 验证 GPU 可见:
nvidia-smi
(D) PyTorch 测试
在 Conda 环境下测试:
import torch
print(torch.cuda.is_available()) # True
print(torch.cuda.get_device_name(0)) # 你的GPU型号
✅ 总结
- 架构关系:Windows(物理机 + 驱动) → WSL2(Linux 内核) → Conda 环境(隔离依赖) → Python 应用(PyTorch/Transformers)。
- Conda 创建流程:
conda create -n soc python=3.10 → conda activate soc → 安装依赖
。 - GPU 配置:最新 Windows 驱动 + 设置 WSL2 + 在 Linux 装 CUDA 工具包,确认
nvidia-smi
可用。
1️⃣ WSL2 GPU访问流程示意图
下面是一个示意图(HTML 内联可展示),展示 GPU 如何被 WSL2 使用:
这个流程可以直观说明:
- GPU 是物理设备
- Windows 驱动提供底层支持
- WSL2 把 GPU 映射进 Linux,暴露
libcuda.so
- Linux CUDA Toolkit + Conda 环境的深度学习框架最终调用 GPU
2️⃣ CUDA 环境变量配置是否必要?
在 WSL2 场景 下,NVIDIA 驱动会自动挂载 GPU 库(/usr/lib/wsl/lib
),所以一般 不需要手动配置环境变量。
但有些情况可能需要:
- 如果你装了 特定版本 CUDA Toolkit,可能需要在
~/.bashrc
添加:export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
- 一般情况下,仅安装
nvidia-cuda-toolkit
就能用,不必额外配置。
3️⃣ nvidia-smi
报错排查步骤
如果在 WSL2 内运行 nvidia-smi
出问题,可能有几类情况:
(A) nvidia-smi: command not found
👉 表明 Linux 没装 NVIDIA 工具
解决办法:
sudo apt update
sudo apt install -y nvidia-utils-<driver-version>
例如:
sudo apt install -y nvidia-utils-535
(B) NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
👉 常见原因:
- Windows 驱动过老,不支持 WSL GPU → 升级到最新 GeForce/Studio 驱动。
- 没启用 WSL2 GPU 支持 → 检查 Windows 更新。
- 混用了 CUDA Toolkit → 清掉自装的
/usr/local/cuda
,让系统自动识别/usr/lib/wsl/lib/libcuda.so
。
(C) PyTorch 显示 GPU 不可用
import torch
print(torch.cuda.is_available()) # False
👉 可能是因为:
- 用错 Conda 环境 → 在 GPU 环境里重新 pip 安装
torch
+pytorch-cuda
:conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
- 缺少 CUDNN/TensorRT → 可单独安装
cudnn
包
(D) 检查版本匹配
nvidia-smi
的 CUDA driver API 版本必须 ≥ PyTorch 对应的 CUDA runtime。
用:nvidia-smi nvcc -V python -c "import torch; print(torch.version.cuda)"
✅ 总结
- 访问流程:Windows GPU → NVIDIA Driver → WSL2 内核 → libcuda.so → CUDA Toolkit → PyTorch。
- CUDA 环境变量:一般不需要手动配置,除非你额外安装了特定版本的 CUDA Toolkit。
- 排查
nvidia-smi
报错:command not found
→ 装nvidia-utils
couldn't communicate
→ 升级 Windows 驱动 + 确保 WSL2 GPU 支持开启- PyTorch 不认 GPU → 重新安装 PyTorch + pytorch-cuda
- 检查 CUDA driver API ≥ runtime 版本