目录
4、子系统linux使用windows网络代理、网络配置(镜像网络,非NAT)
重要提示:本教程仅仅针对最新版本的win11系统,其他版本的系统暂无测试
1、快速了解wsl2 安装子系统linux流程(B站视频)
【windows 安装适用于linux的子系统,安装 docker 并开启局域网访问
2、wsl2常用命令
- #升级下子系统
- wsl --update
-
- # 查看支持内核版本 wsl版本是2.x
- wsl -v
- WSL 版本: 2.2.4.0
- 内核版本: 5.15.153.1-2
-
- # 如果wsl不是2.x, 将WSL2设置为默认版本
- wsl --set-default-version 2
-
- # 查看已经安装的子系统
- wsl -l -v
-
- #查看可安装的linux版本
- wsl --list --online
-
- #安装Ubuntu-22.04 发行版本
- wsl --install -d ubuntu-22.04
-
- # 启动子系统
- wsl -d Ubuntu-22.04 # 这里启动Ubuntu 22.04
-
- 使用的命令和配置
- 设置wsl版本:wsl --set-default-version 2
- 查看可以安装的发行版:wsl --list --online
- 安装ununtu:wsl --install -d Ubuntu-22.04
- 关闭wsl:wsl --shutdown
-
-
- .wslconfig配置文件在这个位置
- %UserProfile%
- C:\Users\
\.wslconfig -
- 查看子系统ip:hostname -I
- 端口转发:netsh interface portproxy add v4tov4 listenport=5244 listenaddress=0.0.0.0 connectport=5244 connectaddress=172.27.14.63
- 查看转发的端口:netsh interface portproxy show all
- 删除:netsh interface portproxy delete v4tov4 listenport=5244 listenaddress=0.0.0.0
-
-
-
- .wslconfig配置
- [wsl2]
- networkingMode=mirrored
- hostAddressLoopback=true
3、windows与子系统Linux文件访问方法
4、子系统linux使用windows网络代理、网络配置(镜像网络,非NAT)
步骤:
下面配置仅限为win11系统,配置子系统Ubuntu网络为镜像网络,方便使用windows的网络代理
1) windows资源管理器输入:%UserProfile%后,跳转至用户目录:
2) 找到.wslconfig文件,没有则创建一个该文件即可
写入下面内容
- # Settings apply across all Linux distros running on WSL 2
- [wsl2]
-
- # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
- # memory=8GB
-
- # Sets the VM to use two virtual processors
- processors=10
-
- [experimental]
- autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
- networkingMode=mirrored # 开启镜像网络
- dnsTunneling=true # 开启 DNS Tunneling
- firewall=true # 开启 Windows 防火墙
- autoProxy=true # 开启自动同步代理
- sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间
3) PowerShell中输入 wsl --shutdown 关闭所有的子系统,注意不是关闭终端(重要)
4)再次启动,使.wslconfig 配置生效
wsl -d Ubuntu-22.04
5)验证子系统是否使用windows代理成功
windows的代理需要开启Tun模式,如果未开启Tun模式,可能需要在Ubuntu终端使用export 开启环境变量(临时生效,永久生效需要更改配置文件),命令为:
# 如果是镜像网络
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
# 如果是NAT网络,需要在配置文件里加入:
# wsl http proxy
# 动态获得主机ip地址
HOST_IP=$(ip route show | grep -i default | awk '{ print $3}')
export https_proxy=$HOST_IP:7890
export http_proxy=$HOST_IP:7890# 对于非镜像网络,如果需要局域网互通,可能还得需要一个端口映射
- # 这里使用curl来验证,不用ping,因为ping默认不支持http代理
- curl -I https://www.baidu.com
-
- # 结果:
- HTTP/1.1 200 Connection established
-
- HTTP/1.1 200 OK
- Accept-Ranges: bytes
- Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
- Connection: keep-alive
- Content-Length: 277
- Content-Type: text/html
- Date: Wed, 30 Oct 2024 05:55:33 GMT
- Etag: "575e1f71-115"
- Last-Modified: Mon, 13 Jun 2016 02:50:25 GMT
- Pragma: no-cache
- Server: bfe/1.0.8.18
- # 这里使用curl来验证,不用ping,因为ping默认不支持http代理
- curl -I https://www.google.com
-
- # 结果为下面代表成功,如果什么未出现卡住代表失败:
- HTTP/1.1 200 Connection established
-
- HTTP/2 200
- content-type: text/html; charset=ISO-8859-1
- content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-V1HCEWjM22NLtR0v_UYszA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
- accept-ch: Sec-CH-Prefers-Color-Scheme
- p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
- date: Wed, 30 Oct 2024 05:55:47 GMT
- server: gws
- x-xss-protection: 0
- x-frame-options: SAMEORIGIN
- expires: Wed, 30 Oct 2024 05:55:47 GMT
- cache-control: private
- set-cookie: AEC=AVYB7co_o4i9i6JponI0fUy0GPIrYVSoGc5rdk2IyBuVdZQF5ljfIn8euNo; expires=Mon, 28-Apr-2025 05:55:47 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
- set-cookie: NID=518=dQebAMHHJPU9hSZIshAFzUHWMPFEZObPIMl6ZMjmay5duwQLkum7Hd44ikEgyVDZVMRlNWAWsOs5sNB2eSsrGTzms7iByOR11e3ZfvyODGfhEId-r6KzJ80y5Fhxvt7C-ecSOoCrBIUgsREJ6ZNFauGHkwwgob-61jKhK81iz5Y7UXQYGpH5Jamb74rLKrpw; expires=Thu, 01-May-2025 05:55:47 GMT; path=/; domain=.google.com; HttpOnly
- alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
5、wsl2 Ubuntu miniconda 安装
安装: mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm ~/miniconda3/miniconda.sh安装完成后激活:
source ~/miniconda3/bin/activate环境变量初始化:
conda init --all
6、wsl2 docker安装
WSL 上的 Docker 容器入门 | Microsoft Learn
7、wsl2 cuda 安装
win11 使用 wsl2 安装子linux系统,使用 nvidia-smi 是可以打印东西的,即使 nvidia-smi
可用,CUDA 工具包可能尚未安装或未正确配置。例如 nvcc -V 命令不可用、安装flash-atten 要用到CUDA 编译(pip install flash-attn==2.6.3 --no-build-isolation ) 会报错
需要注意的:
- Nvidia 图形驱动只需要装到windows机器上, wsl 子系统中不要安装任何图形驱动,仅需要安装cuda toolkit 即可。From this point you should be able to run any existing Linux application which requires CUDA. Do not install any driver within the WSL environment. For building a CUDA application, you will need CUDA Toolkit. Read the next section for further information.
- 最新的 NVIDIA Windows GPU 驱动程序将完全支持 WSL 2。通过驱动程序中的 CUDA 支持,现有应用程序(在其他 Linux 系统上为相同目标 GPU 编译)可以在 WSL 环境中无需修改即可运行。要编译新的 CUDA 应用程序,需要 Linux x86 的 CUDA Toolkit。CUDA Toolkit 对 WSL 的支持仍处于预览阶段,因为诸如分析器等开发工具尚不可用。但是,在 WSL2 环境中完全支持 CUDA 应用程序开发,因此用户应该能够使用适用于 x86 Linux 的最新 CUDA Toolkit 编译新的 CUDA Linux 应用程序。
- 在系统上安装 Windows NVIDIA GPU 驱动程序后,CUDA 就可以在 WSL 2 中使用。安装在 Windows 主机上的 CUDA 驱动程序将在 WSL 2 中被存根为
libcuda.so
,因此用户不得在 WSL 2 中安装任何 NVIDIA GPU Linux 驱动程序。这里需要非常小心,因为默认的 CUDA Toolkit 附带有一个驱动程序,很容易用默认安装覆盖 WSL 2 的 NVIDIA 驱动程序。我们建议开发人员使用来自 CUDA Toolkit 下载页面的单独 WSL 2 (Ubuntu) CUDA Toolkit,以避免这种覆盖。有一个叫 WSL-Ubuntu CUDA 工具包安装程序不会覆盖已映射到 WSL 2 环境的 NVIDIA 驱动程序。
以下是在 WSL 中安装 CUDA 工具包的步骤:Linux WSL-Ubuntu 2.0 x86_64
- wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
- sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
- wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
- sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb
- sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
- sudo apt-get update
- sudo apt-get -y install cuda-toolkit-12-6
正常来说,如果可以顺利安装上 torch GPU版、deepspeed、flash-atten,CUDA基本算是安装完成了,尤其是后两个包,flash-atten需要用到CUDA编译,如果没有安装或安装出错大概率是安装不成功的
测试代码:
- import torch
- import flash_attn
- import deepspeed
- import xformers
- print(deepspeed.__version__)
- print(xformers.__version__)
- print(flash_attn.__version__)
- print(torch.__version__)
- print(torch.cuda.is_available())
- print(torch.cuda.device_count())
- print(torch.cuda.get_device_name(0))
- print(torch.cuda.current_device())
-
-
- # 结果
- 0.14.0
- 0.0.27
- 2.6.3
- 2.3.1+cu121
- True
- 1
- NVIDIA GeForce RTX 3090
- 0
一些问题:
经上述py脚本测试,CUDA已经安装成功了,但是nvcc -V命令依旧用不了,原因为CUDA的安装路径通常需要添加到系统的PATH
和LD_LIBRARY_PATH
中。如果这些环境变量未正确配置,系统将无法找到nvcc
命令。
1)验证CUDA Toolkit是否正确安装 ,检查CUDA Toolkit的安装目录。默认情况下,CUDA通常安装在/usr/local/cuda-12.6
(根据您安装的版本不同,路径可能有所变化),查看nvcc
是否存在
ls /usr/local/cuda-12.6/bin/nvcc
我的是存在的,证明CUDA虽然安装成功,但需要加入环境变量
2)配置环境变量
编辑shell配置文件(如~/.bashrc
或~/.zshrc
),添加以下内容:
- export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
- export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
3)保存文件后,重新加载配置
source ~/.bashrc
4)测试是否配置成功
- which nvcc
- # 应该输出类似于/usr/local/cuda-12.6/bin/nvcc的路径。如果没有输出,说明PATH未正确配置。
-
- nvcc -V
-
- # 输出:
- nvcc: NVIDIA (R) Cuda compiler driver
- Copyright (c) 2005-2024 NVIDIA Corporation
- Built on Thu_Sep_12_02:18:05_PDT_2024
- Cuda compilation tools, release 12.6, V12.6.77
- Build cuda_12.6.r12.6/compiler.34841621_0
至此,CUDA完整安装成功
8、安装cudnn
没有安装cudnn可能会遇到的错误:
安装:
win11 WSL ubuntu安装CUDA、CUDNN、TensorRT最有效的方式(需要注意的时这里面的 cuda路径也有可能是 cuda-版本号)
cuDNN 9.5.1 下载(nvidia 官网)
验证:
- ls /usr/local/cuda/lib64/libcudnn_ops_infer.so.8
- # 需要注意的时这里面的 cuda 也有可能是 cuda-版本号
以下文章暂时弃用
9、wsl2 子系统可视化
1)安装之前,
2)wsl 子系统需要的操作
- # 安装xfce4
- sudo apt install xfce4 # 失败重新安装 sudo apt reinstall xfce4
-
- # 再bashrc最后一行添加如下内容并保存,把其中的172.30.16.1换成自己的ipv4地址即可,可以在windows 终端中输入 ipconfig 进行查看
- sudo vim ~/.bashrc
- # 需要加入的内容
- export DISPLAY=172.30.16.1:0
- # 重载配置文件激活
- source ~/.bashrc
-
-
- #重启一下wsl子系统,具体方法是,在windows终端里运行以下指令,再重新打开
- wsl --shutdown # 关闭wsl
- wsl -d Ubuntu-22.04 # 再启动
-
- #使用sudo 启动 Xfce 会话:
- sudo startxfce4
3)安装 VcXsrv X Server 并启动它,地址为:VcXsrv - Open-Source X Server for Windows
一键安装后启动时需要进行配置:
以上文章暂时弃用
参考资料:
新版 WSL2 2.0 设置 Windows 和 WSL 镜像网络教程
评论记录:
回复评论: