超详细wsl2安装+深度学习环境配置(代码片段)

ww_khun ww_khun     2023-04-06     562

关键词:

超详细 WSL2安装+深度学习环境配置

一点记录 !

实验室配的联想 GeekPro 2022 台式机虽然配备有 Nvidia RTX 3060 显卡,但在 win11 下实测非常难用,我用来跑深度学习动不动卡机、黑屏并接连弹出诸多程序出错的弹窗,而实际上并没有超出显存大小,我怀疑是 win11 下英伟达驱动存在问题,另外该机的 CPU 是 AMD,略显拉胯,一旦运行的程序达到四五个,卡顿感十足。

原以为 win11 下也可以很好的跑深度学习,无奈还是被现实打败(虽然也是可以跑的,但是有很多问题,不如 Linux 好用)。总结一句,深度学习最终的归途还得是 Linux。

鉴于装双系统每次只能用一个系统,在 Ubuntu 下办公不如 Windows 方便,在虚拟机上装 Ubuntu 又没办法共享宿主机的GPU,跑深度学习直接泡汤,想到了微软之前推出的WSL,Windows Subsystem for Linux,这不,微软自己出手做 Windows 下的 Linux 子系统,解决了上面的问题,既能同时使用 Windows 和 Linux,又可以在Linux中使用 Windows 下的GPU,简直不要太完美。

从2016年8月首次发布到现在,经过六年多的迭代,WSL 从 WSL1 发展到 WSL2,在 win11 中已默认集成 WSL1(默认未开启状态)。这里给出维基百科对 WSL 的介绍和微软官方对 WSL 两个系列的区别说明。

👉 维基百科介绍
Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

WSL提供了一个微软开发的Linux兼容内核接口(不包含Linux代码),来自Ubuntu的用户模式二进制文件在其上运行。
此子系统起源于命运多舛的Astoria项目,其目的是允许Android应用运行在Windows 10 Mobile上。此功能组件从Windows 10 Insider Preview build 14316开始可用。

👉 微软对WSL两个系列的比较
WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。
WSL 2 是安装 Linux 发行版时的当前默认版本,它使用最新最好的虚拟化技术在轻量级实用工具虚拟机 (VM) 内运行 Linux 内核。 如果你的发行版当前运行的是 WSL 1,而你想要更新到 WSL 2,请参阅从 WSL 1 更新到 WSL 2。

  • WSL2相比WSL1来说可以完美支持Docker。与WSL1的模拟Linux
    API不同的是,WSL2采用在Hyper-V虚拟机中运行的方案。可以说WSL2和原汁原味的Linux已经十分接近。
  • WSL1 没有 Linux 内核,不支持 docker;WSL2 是有 Linux 内核的轻量化虚拟机,支持 docker。
    目前 docker 已经针对 WSL2 做了适配,安装时检测到 WSL2 就会启用 WSL2 后端,不仅能同时在 Windows 和 WSL 下操作 docker 服务器,还比以前的 docker on Windows 启动更快、占用资源更少。

正式开始 !

 

先决条件

电脑具有虚拟化功能,在BIOS中开启虚拟化,这是因为我们要安装的 WSL 2 基于hyper-v。我的电脑 BIOS 中默认开启了虚拟化,在正式安装之前请百度查找自己电脑型号开启虚拟化的方法
注:没有特别说明,本文以下内容提到的 WSL 均指 WSL 2。
 

WSL 启用

最新动态:随着 Windows 10 Insider Preview Build 21332 的推出,在 Windows Subsystem for Linux 2 中开始包含了原生的 GUI 支持(称为 WSLg),意味着不需要手动配置远程桌面连接即可在 Windows 环境中无缝体验 GUI 交互下的 Linux 环境。这里 WSLg 并不是给 WSL 加上桌面,而是让子系统能够运行具有图形界面的应用。例如我在 Liunx 终端里启动 gedit,就会直接弹出一个 gedit的界面,和在 Windows 下使用 x11 转发接收远程服务器的应用界面很像是不是!!!以下是官方给出的图片。

目前,微软 Craig Loewen 的博客[1] [2]中指出,WSL分为应用 Microsoft Store 版本内版本

  • Microsoft Store 版本目前已经移除了”预览“标签,正式发布,新用户(即满足系统要求且未启用过 “Windows Subsystem for Linux” 可选组件的用户)通过命令 wsl --install 将自动安装 WSL 的 Microsoft Store 版本,且不再启用 “Windows Subsystem for Linux” 可选组件,或者安装 WSL 内核或 WSLg MSI 包,但虚拟机平台可选组件仍将启用,默认情况下仍将安装 Ubuntu。目前安装 Microsoft Store 版本捆绑 WSLg,支持GUI。

  • 内版本 即 Windows 系统中集成的 “Windows Subsystem for Linux” 可选组件,对于一些系统版本稍旧的用户使用手动安装方式将没有 WSLg,WSL 的更新将通过 Windows 更新接收,而不是通过 Microsoft Store 中推送的可用更新来接收,但可以通过安装 Microsoft Store 中的 “Windows Subsystem for Linux” 或命令 wsl --update,将内版本的 WSL 从 Windows 版本分离,并更新为 Microsoft Store 版。通过 Microsoft Store 安装 WSL 将允许我们更快地获取最新的 WSL 更新和功能,而无需修改 Windows 版本。

对于版本的要求,网上有各种不一样的说法,我根据微软官方文档中的说明,总结一下:

  • 运行Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11WSL 新用户,可以通过命令安装,从上面 Craig Loewen 的博客中提到的来看,按理通过命令安装将自动安装WSL的应用商店版本,即带有GUI的WSL,但是在官方文档的 Tutorials -> Run Linux GUI apps 中又提到需要运行 Windows 10 内部版本 19044+Windows 11 的用户才能获得 Linux GUI 支持,可见在 版本为2004(内部版本 19041)到 内部版本 19044+ 的 win10 WSL2新用户,即便用命令安装WSL,也无法获得GUI支持,即不是WSLg版
  • 如果已经安装了 WSL,但不支持 GUI,可通过以管理员权限打开的命令提示符运行更新命令来更新到包含 Linux GUI 支持的最新版本,在该部分第四节进行介绍。

请对照上述版本要求,下面根据微软官方文档,给出两种安装方式:命令安装和手动安装,以及非新用户或非 WSLg 版本更新到WSLg 版本的方法。如有不清楚的地方移步官方文档,或直接根据官方文档进行安装。

一、命令安装

在管理员模式下打开 PowerShell 或 Windows 命令提示符,根据需求输入以下三种命令的其中一种,然后重新启动计算机。

默认情况下,使用 wsl --install 安装的新 Linux 安装将设置为 WSL 2,以下命令1或命令2会将Linux发行版安装在C盘,对于系统盘容量小和介意不能自定义安装位置的用户来说,非常不友好,因此推荐使用命令3,并查看第二部分安装Linux发行版

此外使用命令安装会提示是否有安装GUI。

# 命令1:安装 WSL 并安装默认的Linux发行版:Ubuntu
wsl --install

# 命令2:安装 WSL 并指定要安装的Linux发行版
# <Distribution Name>替换为要安装的发行版名称
wsl --install -d <Distribution Name>

# 命令3:安装 WSL 并且不安装 Linux发行版
wsl --install --no-distribution

二、手动安装(推荐方式)

1、启用“Windows Subsystem for Linux”可选功能

  • 以管理员身份打开 PowerShell(PowerShell >“开始”菜单>右键单击>以管理员身份运行),然后输入以下命令,然后重新启动计算机
# 默认安装WSL 1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2、更新到 WSL 2

版本要求:win10 或 win11。
win10要求:

  • 对于 x64 系统:版本 1903 或更高版本,内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,内部版本 19041 或更高版本。
  • 在安装 WSL 2 之前,必须启用虚拟机平台可选功能,以管理员身份打开 PowerShell 并运行以下命令,然后重启计算机。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

三、设置 WSL 默认大版本

命令安装默认 WSL 大版本为 2,手动安装默认为 1,通过以下方式更改 WSL 版本:
若要在安装新的 Linux 发行版时将默认版本设置为 WSL 2,请使用命令:

# <Version#>替换为 1或2
wsl --set-default-version <Version#> 

# 这里我将默认版本设为 2
wsl --set-default-version 2

四、更新 WSL2 版本(可选)

若需要更新最新的WSL版本(WSLg),不论安装的是 WSL 的应用商店版还是内版本,均可通过以下两种方式更新

  1. 通过命令更新
wsl --update
  1. 在 Microsoft Store 中 安装或更新 Windows Subsystem for Linux

  • 检查是否更新到 WSLg 版本,在 PowerShell 运行以下命令可查看 WSLg版本,若未出现图中所示,则不是 WSLg 版本
wsl --version

五、一些常用的 wsl 命令

强烈建议在进行完第二部分linux发行版的安装之后,备份一下安装的镜像,以便各种误操作之后可以进行还原,我尝试了一下,非常方便。

# 列出可安装的 Linux 发行版
wsl --list --online 或 wsl -l -o

# 列出已安装的 Linux 发行版
wsl --list --verbose 或 wsl -l -v

# 导出镜像(备份)
wsl --export <Distribution Name> <FileName>

# 导入镜像(还原)
wsl --import <Distribution Name> <InstallLocation> <FileName>

 

Linux 发行版安装

在WSL启用部分中若通过命令方式(命令1或命令2)安装WSL,直接跳过该部分。对于通过命令3或手动方式安装的WSL,需要自行安装Linux发行版,以下介绍两种安装方式:Microsoft Store 安装默认安装在C盘,手动安装可选择任意盘安装(当然是选非C盘了),推荐手动安装

一、Microsoft Store 中安装

在 Microsoft Store 中搜索 Linux,查看可安装的Linux发行版,如选择Ubuntu 20.04.5 LTS,”免费下载“直接下载安装。安装完成后会弹出一个terminal,设置用户名和密码,设置完成即可进入Ubuntu。

二、手动安装(推荐方式)

从官网下载想要安装的Linux发行版:Manual installation steps for older versions of WSL | Microsoft Learn

以我下载的Ubuntu 22.04 LTS为例,在D盘新建 WSL 文件夹,将下载得到的 AppxBundle 文件放到 WSL 文件夹下,修改后缀名为 .zip ,然后提取其中的 Ubuntu_2204.1.7.0_x64.appx。

同样更改后缀名为 .zip ,接着解压缩,进入 Ubuntu_2204.1.7.0_x64 文件夹,双击 ubuntu.exe 安装。设置用户名和密码,设置完成即可进入Ubuntu。

通过此种方式安装的发行版不会集成在应用列表中。相比于通过商店安装的方式,这种方式可以看到安装生成的文件:在 ubuntu.exe 所在目录下生成 ext4.vhdx

三、进入已安装的 Linux 发行版

1、进入安装的Linux发行版的方式有很多种,如:

  • 打开 powershellcmd 命令行,输入wsl,进入默认的Linux发行版;
  • 通过商店安装的Linux发行版会存在于应用列表中,可从应用列表中打开,这时会打开自带的Linux终端并进入子系统;
  • 这里强烈推荐通过 Microsoft Store 安装 Windows Terminal (win11默认安装), Windows Terminal 可以集成多个shell,如powershell、cmd、git bash,安装完的Linux发行版的终端也会自动集成到 Windows Terminal 中。另外,已经启动的 Linux 发行版,可以打开多个终端界面,不会相互影响


注意:通过手动方式安装的发行版,这里显示的名称应该是 Ubuntu,可以在设置 -> 名称中进行修改想要的名称


至此我们已完成了Linux发行版的安装,通过以下命令检查已安装的版本及运行状态:

wsl -l -v

四、查看 Ubuntu 文件系统

WS L的一大好处就是可以和 Windows 主机互相访问文件系统,在 Windows 下的文件资源管理器界面左边的窗口栏即可看到一个Linux图标。对于不习惯使用命令进行复制移动文件的用户来说,有图形操作界面的复制和移动非常友好。

五、WSLg 界面显示

  • 如在上一部分第四节更新了 WSL 到 WSLg 版本,那么在 WSL Ubuntu中新安装的软件均可以在 Windows 下的应用列表看到并打开
  • 此外,在 Ubuntu 终端输入软件名称也可以弹出软件的显示界面,类似 x11转发,如打开 gedit(需先安装)

 

链接主机代理

由于 WSL 可以共享 Windows 的网络,因此自然希望能使用 Windows 的代理服务,但 WSL 的 linux 子系统与主机的ip地址不同(无法使用静态的方式设置代理),且会被 Windows Defender 当作公网链接屏蔽,因而无法正常访问 localhost 的各种端口

新的 WSL2 架构会为 Linux 系统分配一个虚拟网卡,Linux 虚拟机与 Windows 组成了一个局域网,因此 若想在 Linux下访问 Windows 的服务,必须要使用 Windows 的主机地址。
Windows 认为 WSL 的虚拟网卡是公用网络,因此任何阻止公用网络入站请求的防火墙策略都会拦住 WSL 发过来的请求。

我根据[6]博客的方案,重新整理一下:

  • 软件:Cxxsh for Windows ( VxrayN也可以,但是具体方法不同,自行查找资料 ) (名称打全了无法审核通过,用xx代替了,自行搜索吧)

1、在Windows下, Cxxsh 中打开 General -> Allow LAN,即允许局域网接入 Cxxsh,同时打开General -> System Proxy,即开启系统代理
2、在Linux下,创建 proxy.sh

khun@DESKTOP-PDPQM7V:~$ cd ~
khun@DESKTOP-PDPQM7V:~$ vim proxy.sh

写入以下内容并保存

#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk ' print $2 ')
wslip=$(hostname -I | awk 'print $1')
# 这里填写主机代理的端口
port=7890

PROXY_HTTP="http://$hostip:$port"

set_proxy()
    export http_proxy="$PROXY_HTTP"
    export HTTP_PROXY="$PROXY_HTTP"

    export https_proxy="$PROXY_HTTP"
    export HTTPS_proxy="$PROXY_HTTP"

    git config --global http.proxy "$PROXY_HTTP"
    git config --global https.proxy "$PROXY_HTTP"


unset_proxy()
    unset http_proxy
    unset HTTP_PROXY
    unset https_proxy
    unset HTTPS_PROXY
    git config --global --unset http.proxy
    git config --global --unset https.proxy


test_setting()
    echo "Host ip:" $hostip
    echo "WSL ip:" $wslip
    echo "Current proxy:" $https_proxy


if [ "$1" = "set" ]
then
    set_proxy

elif [ "$1" = "unset" ]
then
    unset_proxy

elif [ "$1" = "test" ]
then
    test_setting
else
    echo "Unsupported arguments."
fi

3、在该文件所在目录下(或使用 proxy.sh 的绝对/相对路径),运行命令:

# 开启代理
khun@DESKTOP-PDPQM7V:~$ source ./proxy.sh set 

# 关闭代理
khun@DESKTOP-PDPQM7V:~$ source ./proxy.sh unset

# 输出主机 ip,WSL ip和代理状态
khun@DESKTOP-PDPQM7V:~$ source ./proxy.sh test

4、将 proxy.sh 写入 ~/.bashrc,每次启动 Terminal 自动执行

khun@DESKTOP-PDPQM7V:~$ vim ~/.bashrc

# 英文状态下按 i 键进入编辑,写入以下内容
alias proxy="source ~/proxy.sh"
. ~/proxy.sh set

# 按 ESC 键退出编辑,按 :wq 保存退出

5、以管理员模式打开 Windows 的 Powershell,写入 WSL 入站规则

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

运行后,在 Windows 安全中心-防火墙与网络保护-高级设置-入站规则 中,可以看到WSL的规则

6、在 Windows 安全中心-防火墙与网络保护-允许应用通过防火墙 中,将涉及代理的应用和功能设置为允许专用+允许公网,并保存。(这一步我没做也可以,如果不行就试一下)

7、在 Linux 下测试是否可以 ping 通主机 ip 以及使用代理

# 查看主机ip
khun@DESKTOP-PDPQM7V:~$ cat /etc/resolv.conf

# 输出:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 192.168.112.1

# ping主机ip,不断刷新出现: xx bytes from xxx.xxx.xxx.xxx(主机ip): icmp_seq=xx ttl=xxx time=xxx, 即ping通主机ip
# 否则未ping通主机ip,检查上述步骤
khun@DESKTOP-PDPQM7V:~$ ping 192.168.112.1

# 查看是否能下载google页面
khun@DESKTOP-PDPQM7V:~$ wget www.google.com


 

Python 环境及深度学习框架安装

一、安装 miniconda3

通过 wget 下载 miniconda.sh,运行 sh 文件

khun@DESKTOP-PDPQM7V:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
khun@DESKTOP-PDPQM7V:~$ sh Miniconda3-latest-Linux-x86_64.sh

随后会显示 miniconda 的 license,就一直按回车,直到出现 yes/no,键入 yes,一路 yes,直到最后,初始化 miniconda3,自动将环境变量写入 .bashrc 。

khun@DESKTOP-PDPQM7V:~$ source ~/.bashrc    # 重新激活环境变量
khun@DESKTOP-PDPQM7V:~$ conda -h          # 检查conda是否安装成功

二、配置 conda 镜像源

  • 新建 .condarc 文件
vim ~/.condarc
  • 以下给出常用的清华源,英文状态下按 i 键进入编辑模式,粘贴到 .condarc 中后,按 Esc 键返回命令模式,键入 :wq 保存退出,就完成了 conda 镜像源的配置。
channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

三、安装 pytorch-gpu

一般会新建一个虚拟环境,与base环境隔离,便于打包项目所需的包。

# -n 后面的参数为环境名,可自行更改, python版本也根据自己项目决定
khun@DESKTOP-PDPQM7V:~$ conda create -n torch-1.10.2 python=3.8
# 激活环境
khun@DESKTOP-PDPQM7V:~$ conda activate torch
  • 在线方式,建议使用 pip 方式安装
# 使用 pip 安装
# 其中具体版本号不确定时,可以仅执行 pip install torch== --extra-index-url https://download.pytorch.org/whl/cu113 (cu113表示cuda11.3版本) ,执行后会提示可以安装的具体版本号。
khun@DESKTOP-PDPQM7V:~$ pip install torch==1.10.2+cu113 torchvision==0.11.3+cu113 --extra-index-url https://download.pytorch.org/whl/cu113

# 使用 conda 安装
# 这种方式容易失败,经常自动安装cpu版本,我也很迷
khun@DESKTOP-PDPQM7V:~$ conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
  • 离线方式,pip安装自己离线下载的 torch 和 torch-version
# 下载需要的版本到本地,下载地址:
http://download.pytorch.org/whl/torch_stable.html

# pip 离线安装, 如安装下载到本地的 python3.8版的torch-1.10.0+cu113
khun@DESKTOP-PDPQM7V:~$ pip install torch-1.10.0+cu113-cp38-cp38m-linux_x86_64.whl
khun@DESKTOP-PDPQM7V:~$ pip install torchvision-0.11.0+cu113-cp38-cp38m-linux_x86_64.whl
  • 验证是否能使用 GPU
khun@DESKTOP-PDPQM7V:~$ python
>>> import torch
>>> torch.cuda.is_available() # 出现 True 即成功安装GPU版本pytorch

 

CUDA on WSL 安装

目前从英伟达的[7]官方文档中可以看到,只需要在 Windows 下安装 NVIDIA 的驱动程序,不需要在 WSL 中安装任何 Linux 显示驱动最新的 NVIDIA Windows GPU 驱动程序 完全支持 WSL 2,网络上其他博客提到的在WSL下安装 GPU 驱动已经不适用了。通过 nvidia-smi 命令即可查看到 WSL Ubuntu 下已经有 NVIDIA 驱动。

关于 WIndows 下 NVIDIA 驱动程序的安装这里不再介绍,下面介绍在 WSL2 上安装 CUDA 和 Cudnn。

另外特别提醒一点,如果只是使用 Pytorch 框架,那么无需单独安装 CUDA,pytorch-gpu 版的安装文件中包含有 CUDA;Tensorflow 或者 TensorRT 则需要再单独安装CUDA

一、CUDA Toolkit 安装

  • 官方下载地址:CUDA Toolkit Archive | NVIDIA 开发者,根据自己的需求选择版本,我安装的是 CUDA 11.3,选择 Linux -> x86_64 -> WSL-Ubuntu ->2.0。

  • 在下载页面的下方给出了安装的步骤,根据步骤进行安装即可。

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
sudo apt-key del 7fa2af80
sudo apt-get update
wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-3-local_11.3.1-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
  • 在执行第四条命令时提示错误:
khun@DESKTOP-PDPQM7V:~$ sudo apt-get update
Get:1 file:/var/cuda-repo-wsl-ubuntu-11-7-local  InRelease [1575 B]
Get:1 file:/var/cuda-repo-wsl-ubuntu-11-7-local  InRelease [1575 B]
Get:2 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64
Err:2 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC

执行下面的命令即可解决,recv-keys的值可能不太一样,根据自己的替换掉

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A4B469963BF863CC
  • 添加环境变量,更新可能需要的依赖
khun@DESKTOP-PDPQM7V:~$ vim ~/.bashrc

# 添加内容
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64$LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH

# 更新一下bashrc
khun@DESKTOP-PDPQM7V:~$ source ~/.bashrc

# 更新可能需要的依赖
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
  • 检查是否安装成功

二、cuDNN 配置

cuDNN下载地址:cuDNN Archive | NVIDIA Developer,需要注册并登录账号。
选择适配的 cuDNN 版本,这里我下载到 Windows 下的目录中。WSL 2 Linux 下若要访问 Windows 下文件,可进入 /mnt/ 查看。

# 以下是安装命令,其中文件路径需要更改成你自己下载的路径
tar -zxvf /mnt/d/Downloads/cudnn-11.3-linux-x64-v8.2.1.32.tgz
# 版本号更改成自己下载的版本号
sudo cp -P /mnt/d/Downloads/cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64/
sudo cp /mnt/d/Downloads/cuda/include/cudnn.h /usr/local/cuda-11.3/include/
 
# 更改读取权限
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h
sudo chmod a+r /usr/local/cuda-11.3/lib64/libcudnn*

至此,CUDA 和 cuDNN配置完成。

 

桌面环境配置(可选)

虽然 WSLg 已经可以显示软件的 GUI 界面,但对于一个喜欢瞎折腾的人来说,终究不像完整版 Ubuntu,这里给出配置桌面环境的方案。

鉴于前期 WSL 不支持 systemd,网上大部分教程都是配置 Xfce4 桌面环境(因为xcf4不需要systemd),但是个人觉得太丑,还是 gnome 桌面更符合我的审美,但 gnome 从某个版本之后就需要 systemd 服务,前期的一些方法使用了[8]一个 Github 大神的脚本开启 systemd 服务,目前[9]官方已经支持手动开启 systemd 服务,因此我使用官方给出的方法。

特别注意:经过个人测试,开启 systemd 后进入wsl ubuntu速度明显变慢,在安装 gnome桌面环境的过程中很容易遇到报错,且用到桌面环境的机会很少,因此正常使用来跑深度学习代码不推荐开启 systemd 和 安装桌面环境。

  • 安装 Gnome 并开启 systemd
# 注意,经测试,要切换到 root 用户下才能使用 gnome
ubuntu2004 config --default-user root

# 安装gnome桌面环境
sudo apt-get install ubuntu-desktop

# 安装相关工具
sudo apt-get install gnome-tweak-tool

# 开启systemd
sudo vim /etc/wsl.conf

# 在 wsl.conf 中写入以下内容,并保存退出
[boot]
systemd=true
  • 切换到 PowerShell,关机 WSL 并重新启动
wsl --shutdown
  • 安装xrdp远程控制服务
# 依然切换到 root 用户
ubuntu2004 config --default-user root

# 安装xrdp远程控制服务
sudo apt-get install xrdp

# 将端口从3389改为3390,因为此前默认的3389端口已保留用于ubuntu shell
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

# 配置启动session,否则远程桌面登录输入密码之后会直接闪退
echo "gnome-session" > ~/.xsession

# 重新启动xrdp服务
sudo systemctl restart xrdp

# 查看xrdp的状态,出现绿色的running表示正常启动
sudo systemctl status xrdp
  • 打开 win 下的远程桌面连接,输入 localhost:3390,出现以下窗口,输入 ubuntu 用户名和密码

  • 可能会有短暂黑屏,进入之后再次输入用户密码,即可进入桌面

  • 给出切换回普通用户的命令和关闭 systemd 的方法
# 切换回普通用户,在 powershell 中输入,default-user后面为自己的用户名
ubuntu2004 config --default-user xxx

# 关闭 systemd,在 linux 终端下输入
sudo vim /etc/wsl.conf

# 在 wsl.conf 中写入以下内容,并保存退出
[boot]
systemd=true

 

一些可能出现的问题(持续补充…)

1、Ubuntu安装软件sudo apt install xxx 时报错

 E: Unable to correct problems, you have held broken packages

原因:Ubuntu 版本跟 apt 源不匹配,使用与版本相对应的源即可(不同的 Ubuntu 版本 apt 源列表可能不同,并且有些软件包使用的是其它特定的源),每个发行版本都有自己的代号,在apt数据源中要修改为相应的代号。我安装的 Ubuntu 22.04,代号为 jammy。

Ubuntu 16.04 代号:xenial
Ubuntu 17.04 代号:zesty
Ubuntu 18.04 代号:bionic
Ubuntu 19.04 代号:disco
Ubuntu 20.04 代号:focal
Ubuntu 22.04 代号:jammy

# 查看自己系统上的版本号(代号)
lsb_release -a 

以下为修改默认源方法:

# 备份默认源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 打开并替换默认源,下面给出几个常用的源
# vim界面下按i进入编辑模式
sudo vim /etc/apt/sources.list 

# vim界面下按Esc退出编辑模式,返回命令模式,输入一下命令保存退出
:wq

 # 更新数据源
 sudo apt update
 sudo apt-get upgrade 

常用源:

# 阿里源
# 默认注释了源码仓库,如有需要可自行取消注释
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
 
# Pre-released source, not recommended.
# deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# 清华源
# 默认注释了源码仓库,如有需要可自行取消注释                               
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
 
# Pre-released source, not recommended.
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# 网易163源         
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
# deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
 
# deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
 
# Pre-released source, not recommended.
# deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
# 中科大源
# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

最后,给出一些 wsl ubuntu美化教程,有兴趣的小伙伴可以自己尝试一下。
安装中文语言
ubuntu 与 windows terminal zsh 美化教程

参考

[1] How to install and-use WSL in the Microsoft Store
[2] The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux
[3] Install WSL | Microsoft Learn
[4] Manual installation steps for older versions of WSL | Microsoft Learn
[5] Run Linux GUI apps with WSL | Microsoft Learn
[6] Win10 WSL2 链接主机代理 - 知乎 (zhihu.com)
[7] CUDA on WSL User Guide
[8] The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux
[9] Systemd support is now available in WSL
[10] Ubuntu22.04更换国内镜像源

pycharm与anaconda超详细安装配置教程(代码片段)

摘要:本文详细介绍如何在Windows10中安装PyCharm和Anaconda这两款Python中必备的软件,博文中每一步均有详细截图和步骤讲解,最后介绍如何使用Anaconda创建虚拟环境并在PyCharm中配置该环境。所提供的软件安装步骤在Window... 查看详情

超详细windows10/windows11子系统(wsl2)安装ubuntu20.04(带桌面环境)(代码片段)

目录前言一、在Windows上安装Linux子系统前提条件安装步骤1.开启开发者模式2.开启“适用于Linux的Windows子系统”3.安装Linux分发版3.1升级WSL内核3.2启用虚拟机功能3.3将WSL2设置为默认版本3.4安装Ubuntu20.04二、在子系统Ubuntu20.04上安装... 查看详情

《动手学深度学习》环境搭建全程详细教程window用户(代码片段)

一、下载并安装Miniconda第一步是根据操作系统下载并安装Miniconda,在安装过程中需要勾选“AddAnacondatothesystemPATHenvironmentvariable"选项(如当conda版本为4.6.14时)第二步安装完成后,打开anacondaprompt这个终端(安装min... 查看详情

小白入门深度学习|第一篇:配置深度学习环境(代码片段)

文章目录一、配置Python3环境二、安装CPU版本的tf2环境三、安装jupyternotebook四、安装GPU版本tf2环境1.找到显卡对应的CUDA2.下载相应的CUDA3.下载相应的cudnn4.添加环境变量5.安装tensorflow-gpu一、配置Python3环境这里推荐去Python官网下载安... 查看详情

深度学习环境配置10——ubuntu下的torch==1.7.1环境配置(代码片段)

...言各个版本pytorch的配置教程环境内容环境配置一、Anaconda安装1、Anaconda的下载2、Anaconda的安装二、Cudnn和CUDA的下载和安装1、Cudnn和CUDA的下载2、Cudnn和CUDA的安装a、CUDA的安装b、Cudnn的安装三、配置py 查看详情

通过wsl2搭建pytorch1.10+cuda11.4+nvidiadriver深度学习框架(代码片段)

文章目录参考链接一、WSL的安装1.首先去windows官网查看安装方法2.WSL与Windows的文件传输二、NVIDIADriver1.找到显卡型号,到nvidiageforce驱动下载并安装对应的驱动2.使用“nvidia-smi”命令查看更新后的版本号三、CUDA与Pytorch安装1.下... 查看详情

深度学习环境配置5——windows下的torch-cpu=1.2.0环境配置(代码片段)

...项一、2021/10/8更新学习前言环境内容环境配置一、Anaconda安装1、Anaconda的下载2、Anaconda的安装二、配置pytorch环境1、pytorch环境的创建与激活2、pytorch库的安装3、其它依赖库的安装4、安装较慢请注意换源三、安装VSCODE1、下载安装... 查看详情

python深度学习环境安装(tensorflow-gpu)(代码片段)

文章目录一、安装Anaconda1.换源2.常用指令二、安装cuda和cudnn1.对应版本2.创建虚拟环境3.激活虚拟环境4.安装cuda4.安装cudnn三、安装tensorflow的GPU版本1.判断是否安装成功四、pycharm配置虚拟环境1.新建项目2.配置环境3.完成创建总结一... 查看详情

深度学习环境配置9——ubuntu下的tensorflow-gpu==2.4.0环境配置(代码片段)

...个版本tensorflow2的配置教程环境内容环境配置一、Anaconda安装1、Anaconda的下载2、Anaconda的安装二、Cudnn和CUDA的下载和安装1、Cudnn和CUDA的下载2、Cudnn和CUDA的安装a、CUDA的安装b、C 查看详情

[人工智能-深度学习-41]:开发环境-gpu进行训练安装与搭建(pytrochtensorflownvidiacuda)详细过程(代码片段)

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121241620目录第1章英伟达Nvidia CUDA编程框架简介1.1概述1.2不同模块的版... 查看详情

linux环境下zookeeper的安装教程(超详细!!)(代码片段)

1.什么是zookeeper2.为什么要使用zookeeper3.zookeeper的安装与配置3.1.环境准备3.2.下载安装3.3配置3.3.启动测试  3.4.退出1.什么是zookeeperzooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实... 查看详情

youcans的深度学习02pytorchcpu版本安装与环境配置(代码片段)

...度学习』系列,持续更新中…【youcans的深度学习01】安装环境之miniconda【youcans的深度学习02】PyTorchCPU版本安装与环境配置【youcans的深度学习02】PyTorchCPU版本安装与环境配置1.安装环境要求PyTorch支持Windows、Linux、Macos等操作系... 查看详情

youcans的深度学习02pytorchcpu版本安装与环境配置(代码片段)

...度学习』系列,持续更新中…【youcans的深度学习01】安装环境之miniconda【youcans的深度学习02】PyTorchCPU版本安装与环境配置【youcans的深度学习02】PyTorchCPU版本安装与环境配置1.安装环境要求PyTorch支持Windows、Linux、Macos等操作系... 查看详情

windows10配置tensorflow深度学习环境(gpu版)各种坑(代码片段)

...dows1064python3.5vs2017(需要C++部分)cuda9.0cudnn7.1GeForceGTX10601.安装python我们选择python3.5,直接从官网下载windows10版本的安装就行,可以选择默认安装路径,并添加环境变量。测试打卡cmd,输入python,输出python的版本信息则安装成功2.安装v... 查看详情

ubuntu20.04极简配置一个深度学习环境(代码片段)

...所有内核删除冗余的内核锁定ubuntu的内核解锁ubuntu的内核安装cuda11.3和cudnn8.2.1安装CUDA11.3安装cudnn8.2.1安装OpenCV4.6.0支持cuda加速安装相关依赖编译安装测试卸载安装pytorch1.11ubuntu的内核配置避免安装cuda后更新liunx内核引发的cuda驱动... 查看详情

《动手学深度学习》环境配置(pytorch版)(代码片段)

...#xff09;1环境配置1.1Anaconda1.2Jupyter1.3PyTorch1.4其他2.PyTorch最新安装教程1环境配置本节简单介绍一些必要的软件的安装与配置,由于不同机器软硬件配置不同,所以不详述,遇到问题请善用Google。1.1AnacondaAnaconda是Python的一... 查看详情

python安装与环境配置,超详细保姆级教程,学不会退出it圈(代码片段)

▌▌安装Python来到Python官网:https://www.python.org/Downloads>Windows:选择想要的版本后点击进去:下载后点击安装:在本地电脑输入命令提示符:win+R▌▌环境变量配置若执行命令提示符,输入Python后,... 查看详情

python安装与环境配置,2022最新,超详细保姆级教程,python入门必备(代码片段)

▌▌安装Python来到Python官网:https://www.python.org/Downloads>Windows:选择想要的版本后点击进去:下载后点击安装:在本地电脑输入命令提示符:win+R▌▌环境变量配置若执行命令提示符,输入Python后,... 查看详情