Windows WSL 环境配置
最后更新于
最后更新于
本教程由社区同学 @geoffreyfan 贡献~
1、Win10 系统一定要升级到最新版,否则是无法在 Linux 子系统里加载出显卡驱动的,那么就无法进行深度学习!
2、Linux 子系统不需要配置显卡。因为它是调用 Win10 系统下的显卡驱动进行深度学习的,这就意味着不需要在 Linux 子系统下载安装显卡驱动!
大家可能会有这样的疑问:不是安装 WSL2 的显卡驱动吗?为什么会装 Win10 系统上的显卡驱动?其实,官网文档上说明了,带有 WSL2 的官方 NVIDIA 驱动是整个过程唯一要装的 GPU 驱动!所以后面关于 Linux 上的 cuda toolkit 的配置就要求不勾选 Driver!
微软 Microsoft 官网下载:https://www.microsoft.com/zh-cn/software-download/windows10。
点击立即更新,会下载一个微软软件,按照提示更新即可,装完需要重启,网速快的话整个过程大约一个小时。(请确保您的网络能够正常访问)。
另一种方式更新 Win10 系统:
PS:查询系统版本方法:Win+R 输入 winver 回车:
下载驱动(下载GEFORCE的那个):http://www.nvidia.com/Download/index.aspx
注意,该是安装 Win10 驱动,而不是安装 Linux 驱动,在 Win10 下安装驱动后,会自动将驱动以 libcuda.so 的形式集成至 WSL2 中,因此切勿在 WSL Linux 中重复安装驱动。
根据自己显卡的型号选择驱动,Notebooks 代表笔记本,我是台式电脑 3080 显卡,所以选择 GeForce RX 30 Series 下的 GeForce RX 3080。
在 Ubuntu-22.04.exe 程序中输入以下指令,验证驱动是否安装成功:
下载链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载完点击安装即可,安装中不停地点击next就可以。
打开 powershell:
启动 WSL2 ,在 powershell 中输入下面指令:
启用“虚拟机平台”,在 powershell 中输入下面指令:
将 WSL2 设置为默认版本,在 powershell 中输入下面指令:
网站地址:https://www.microsoft.com/zh-cn/
搜索 ubuntu,选择 22.04 版本安装:
进入控制面板的 “程序和功能” 里边的设置,勾选 “ Hyper-V ” 和 “适用于 Linux 的 Windows 子系统” :
下载完打开 Ubuntu-22.04 Linux 子系统:
在 PowerShell 中运行下面命令显示所有发行版的详细信息:
终止正在运行的 wsl:
将需要迁移的 Ubuntu-22.04 Linux 子系统,进行导出:
导出完成之后,就需要将原有的进行卸载:
注销完后:
然后将导出的文件放到需要保存的地方,进行导入即可:
如果后面想要重装 Ubuntu-22.04 Linux 子系统,删除之前的版本,在执行了 wsl --shutdown 指令后,直接删除 ext4.vhdx 文件即可。
在 cmd 里面输入下面指令,切换到根目录:
打开 Ubuntu-22.04.exe 程序,此时就进入根目录了,输入 passwd 用户名,并设置密码:
在 cmd 里面输入下面指令,切换到普通用户:
打开 Ubuntu-22.04.exe 程序,此时就进入普通用户界面了:
下载 WSL 远程连接 Ubuntu-22.04 Linux 子系统的插件:
快捷指令远程连接,用 VScode 打开 Ubuntu-22.04 Linux 子系统:
手动远程连接,用 VScode 打开 Ubuntu-22.04 Linux 子系统:
关闭远程连接, Powershell 输入下面指令(重装系统卸载 Ubuntu-22.04 Linux 子系统也需要先输入下面指令):
点击打开 Ubuntu-22.04.exe 程序:
重新进行远程连接:
打开 Ubuntu-22.04 Linux 子系统里面的文件:open Folder , 点击 OK :
Ubuntu-22.04 Linux 子系统里面的 /home/geoffreyfan (这里是你自己的用户名字) / 路径下的文档就被打开了:
可以通过拖拉 Win10 里面的文件,方便地上传文件到 Ubuntu-22.04 Linux 子系统的这个路径下面:
安装 Miconda 地址: https://docs.conda.io/en/latest/miniconda.html
浏览器下载下完后,拖入到 Ubuntu-22.04 Linux 子系统里面:
输入指令:bash Miniconda3-latest-Linux-x86_64.sh 安装:
安装过程中,刚开始要按回车键很多次(大概一直按住5秒这样),之后两三个地方会让你输入 yes/no ,全输入 yes 。有提示输入回车的,就按回车。
安装完成之后,在 .bashrc 文件中最后一行加上:PATH=/home/user/miniconda3/bin:$PATH ,并保存:
创建一个 project.py 文件,配置 miniconda 路径下的 python 解释器,并在终端执行该 python 文件,如果前面有 (base) 这个标志,那么说明 miniconda 配置成功:
用 miniconda 创建虚拟环境, 并激活该虚拟环境(根据自己的需求来,这里我们选择配置 3.9 版本的 python 环境):
配置好虚拟环境后,我们配置 miniconda 下我们创建的虚拟环境下的解释器:
配置好后,我们在终端运行我们创建的python文件,会发现 (base) 标志变成了我们的虚拟环境的名称 (pytorch) :
如果用以下指令下载很慢:
直接手动去官网下载.whl文件,然后拖到 Ubuntu-22.04 Linux 子系统里面,官网地址:https://download.pytorch.org/whl/torch_stable.html
蓝色小横线消失了,就上传完了:
上传完之后,Ubuntu-22.04 Linux 子系统的 /home/geoffreyfan (这里是你自己的用户名字) / 路径下的文件中会有两个相应的安装包:
创建一个 project.py 文件,输入下面的代码,并配置之前我们创建的 miniconda 的虚拟环境的 python 的解释器:
在终端执行以下指令:
然后运行我们刚才创建的 project.py 文件:
注意:不要使用 sudo apt install nvidia-cuda-toolkit 进行配置,会默认配置一个低版本的 cuda toolkit 。
没有配置 cuda toolkit 之前:
去英伟达的官网:https://developer.nvidia.com/cuda-downloads
下载往期版本:
下载 cu111 版本(注意, Win10 系统上的显卡驱动的版本可以不用与这里的 cuda 版本一致,比如我下载的 Win10 系统上的显卡驱动版本为 12.1 ,显卡驱动是向下兼容的):
进行选择,下方会出现相应的指令(可以勾选 “runfile(local)” ,操作步骤同理):
打开 Ubuntu-22.04.exe :输入下面指令:
小知识:在执行了 wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda-repo-wsl-ubuntu-11-1-local_11.1.0-1_amd64.deb 指令后,Ubuntu-22.04 Linux 子系统的 /home/geoffreyfan (这里是你自己的用户名字) / 路径下会出现相应的安装包,后面重新安装,直接执行 sudo dpkg -i cuda-repo-wsl-ubuntu-11-1-local_11.1.0-1_amd64.deb 就可以了,不用再反复下载安装包:
注意:在 sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-1-local/7fa2af80.pub 指令之后,安装的过程中不要勾选 Driver 否则会下载失败:
在 .bashrc 文件中添加下面两条代码指令,并保存:
安装完了后,输入下面指令进行验证:
nvcc 是 The main wrapper for the NVIDIA CUDA Compiler suite. Used to compile and link both host and gpu code. ( NVIDIA CUDA 编译器套件的主要包装器,用于编译和链接主机和 gpu 代码)。一般使用 nvcc -V 查看CUDA版本。
输入下面指令,查看 cuda toolkit 的 bin 目录下是否有 nvcc:
如果存在(如果不存在,请参考WSL2的cuda配置,进行重新配置):
直接将 cuda toolkit 的路径加入系统路径(即将下面指令加入 .bashrc 文件)即可:
保存:
退出 Ubuntu-22.04.exe 程序,然后再开启,再次执行 nvcc -V 就可以看到相应 cuda 版本了:
解释说明:
Ubuntu-22.04 Linux 里面的 Cuda toolkit api 使用 nvcc -V 显示
Win10 系统里面的 Driver api, 使用 nvidia-smi 显示
如果报错的命令是 RuntimeError ,那就使用 nvcc -V 命令查看是否是版本不匹配。
gpu 重启以后,是默认关闭的,在 Ubuntu-22.04.exe 下执行:
将以下添加到 Ubuntu-22.04 Linux 子系统的 /home/geoffreyfan (这里是你自己的用户名字) / 路径下的 .bashrc 文件里面:
在终端运行 project.py 文件,前面有 (base) 这个标示符就表示成功了:
su 命令不能切换 root ,提示 su: Authentication failure,只要你 sudo passwd root 过一次之后,下次再 su 的时候只要输入密码就可以成功登录了。
系统卸载没有卸载干净,导致重新安装后出现该问题。
第一步,查询当前已安装的系统:
第二步,注销当前注册的系统:
第三步,重新启动 unbuntu 系统,系统会重新初始化,效果如下: