当前位置: 首页 > news >正文

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
      
      就进入 WSL Linux 终端。
    • 输入:
      exit
      
      就回到 Windows。
  • 图形化/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 文件。
  • 在 Linux → 访问 Windows 文件

    • Windows 的磁盘会被挂载到 /mnt/ 目录,比如:
      /mnt/c   对应 C盘
      /mnt/d   对应 D盘
      
    • 例如:Linux 下访问 C:\Users\你的名字\Desktop/mnt/c/Users/你的名字/Desktop

👉 所以两边可以很方便传文件,双向互通。


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?

  1. 环境隔离
    • SoC 验证/LLM 实验需要各种 Python 包(pytorch, transformers, bitsandbytes...)。
    • 直接在系统 Python 装容易冲突,Conda 能给不同项目隔离环境。
  2. 依赖管理方便
    • 有现成的 CUDA/PyTorch 包,conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch 一行搞定。
  3. 适合科研/开发
    • Conda 可以开 env
      conda create -n soc python=3.10
      conda activate soc
      
      然后在这个环境里专门装你 SoC 验证项目需要的依赖。

👉 总结:

       需要 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 侧驱动

  1. 确保安装 最新的 NVIDIA Windows 驱动(>= 2022 年版,支持 WSL2 CUDA)
  2. 驱动里自带 WSL 支持,无需额外 CUDA Toolkit(Toolkit 在 Linux 装)。

(B) WSL 配置

  1. 确认 WSL 版本:
    wsl --set-version Ubuntu-20.04 2
    
  2. 确认 GPU 对 WSL2 可见:
    wsl --list --verbose
    
    状态显示 "VERSION 2" 即为 WSL2。

(C) Linux 侧 CUDA 环境

  1. 进入 WSL2
  2. 安装 CUDA 工具包(推荐用 apt repo):
    sudo apt update
    sudo apt install -y nvidia-cuda-toolkit
    
  3. 验证 GPU 可见:
    nvidia-smi
    
    如果能看到 GPU 型号、温度、驱动版本 → 说明成功。

(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.

👉 常见原因:

  1. Windows 驱动过老,不支持 WSL GPU → 升级到最新 GeForce/Studio 驱动。
  2. 没启用 WSL2 GPU 支持 → 检查 Windows 更新。
  3. 混用了 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)"
    
    确认版本对齐。

✅ 总结

  1. 访问流程:Windows GPU → NVIDIA Driver → WSL2 内核 → libcuda.so → CUDA Toolkit → PyTorch。
  2. CUDA 环境变量:一般不需要手动配置,除非你额外安装了特定版本的 CUDA Toolkit。
  3. 排查 nvidia-smi 报错
    • command not found → 装 nvidia-utils
    • couldn't communicate → 升级 Windows 驱动 + 确保 WSL2 GPU 支持开启
    • PyTorch 不认 GPU → 重新安装 PyTorch + pytorch-cuda
    • 检查 CUDA driver API ≥ runtime 版本
http://www.dtcms.com/a/434527.html

相关文章:

  • 内网横向移动技术与防御详解
  • PYTHON:Python 新版本下载安装更新py文件Pycharm运行指南
  • Kubernetes中的service
  • Coze源码分析-资源库-编辑工作流-后端源码-流程/技术/总结
  • 医院网站建设招标公告惠州网站建设科技有限公司
  • 英语学习-Saints043-1
  • 大模型提示学习与思维链
  • 在线公司logo设计河南seo优化
  • 滑动窗口题目:最小覆盖子串
  • 【读书笔记】《深奥的简洁》
  • 支付宝手机网站支付贵阳门户网站
  • macOS 终端配置全攻略:zsh、bash_profile、zprofile、zshrc 到 nvm 配置的完整科普
  • Matlab通过GUI实现点云的Loss配准
  • 用户体验最好的网站做网站 参考文献
  • 离散与连续随机变量
  • 自适应网站好吗电子商务seo名词解释
  • 深入剖析 MySQL 中 binlog 与 redolog:区别、联系及在数据更新中的作用​
  • tensor转numpy,numpy转tensor
  • [创业之路-653]:社会产品与服务的分类
  • 洛谷题解P1249 最大乘积
  • Java使用easypoi填充数据到word
  • 位运算题3:将整数奇偶位互换
  • 计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 卡盟网站顶图怎么做西安知名的集团门户网站建设公司
  • Python基础入门例程84-NP84 列表中第一次出现的位置
  • 基于腾讯CODING Maven的Android库发布
  • 郑州官方发布班级优化大师
  • 10.2 刷题知识点总结(1) ---- 正则表达式
  • SPI总线介绍
  • 【LeetCode_206】反转链表