零、win10环境下wsl1升级wsl2
打开win10的设置,搜索windows功能,打开启用或者关闭Windows功能(win11可能搜不到,需要在控制面板里面搜索)
勾选以下2个地方,并重启,也有可能是中文名字“虚拟机平台”
下载WSL2升级包,并点击安装
WSL2升级包
以管理打开Powershell,并执行以下命令
将WSL 2设置为默认版本,以后下载安装的ubnutu默认就是wsl2,也可以不执行这条命令
wsl --set-default-version 2
(2)用指令查看当前子系统的版本号,你可能有多个系统
wsl -l -v
如上图,我的版本号为2是因为我升级过WSL2,未升级过的应该是1,然后记住你的系统名字 Ubuntu-20.04
(3)执行升级指令,其实执行这一条指令就行
指令如下,其中的Ubuntu-20.04就是你上个步骤查看到的系统名字,你的如果是18.04的话就换个系统名字就行
wsl --set-version Ubuntu-20.04 2
大约几分钟后出现转换完成就表示转换OK。
(3)确认升级成功
指令如下
wsl -l -v
成功后版本号就是2
一、wsl中镜像安装
在启用或关闭Windows功能
勾选一下两个选项
打开powershell,输入wsl, 可以根据wsl的命令来安装镜像。也可以在软件商店中进行安装ubuntu
安装完成后,打开ubuntu,会自动完成初始化。提示安装成功,自动登入账户,登入为root账户。
这样设置完成后,登入的都是root用户。可以通过下面的方式来修改:
只需要在C:\Users\用户名\AppData\Local\Microsoft\WindowsApps路径下确认所安装的Linux子系统具体的版本号
然后打开CMD,输入XXXXXX版本号.exe config --default-user root运行
再重新登入即可。
出现错误:
如果出现系统找不到指定的文件
,是因为之前安装的没有卸载的原因
wsl --list --all
wsl --unregister 名字
重新安装就行了
二、将安装的镜像移出C盘
三、配置cuda环境
值得注意的是WSL版本要求是WSL2.0,可以选择本地安装也可以选择网络安装,我选择的是本地运行文件(因为前两种试了都不行),官网的安装源码如下,安装的时候需要注意一下安装的cuda版本,默认为最新版本,但目前pytorch官网上支持的最新cuda版本为11.3所以需要选择安装:
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.run
安装的过程中可以看到驱动检测不到,属于正常情况。
可能会出现gcc版本不对的问题
这样可以跳过错误
sudo sh cuda_11.3.0_465.19.01_linux.run --override
安装完成以后
sudo vim ~/.bashrc
在上面的文档中添加下面两句
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
source ~/.bashrc
#查看cuda版本
nvcc -V
#查看nvidia界面,这个需要在原本的Windows系统上安装nvidia驱动的
nvidia-smi
至此,cuda安装完毕,但是gcc版本不匹配的问题还没有解决。
在使用nvcc编译的时候会出现错误。
unsupported GNU version! gcc versions later than 10 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
由于linux中可以有多个版本的gcc和g++,我们可以为系统默认的gcc和g++指定特定的默认版本,但是对于cuda的nvcc来说有更方便的方法,那就是nvcc会优先读取自身路径下的gcc然后如果没有再读取系统默认路径下的gcc,因此我们只需要为nvcc设置特定版本gcc的软连接即可:
可以支持多个版本的gcc和g++安装
gcc -v
sudo apt-get install gcc-10
sudo apt-get install g++-10
安装的时候可能出现找不到包的问题
以下解决
sudo apt-get update
为cuda设置软链接:
sudo ln -s /usr/bin/gcc-10 /usr/local/cuda/bin/gcc
接下来就可以编译了
nvcc t.cu -o t
./t
四、docker安装
五、miniconda安装
- 下载安装包
清华源miniconda
清华源anaconda
下载下来时xxxxx.sh文件
- 安装
bash xxxxx.sh
配置环境变量
vim ~/.bashrc
文件末尾加
export PATH=$PATH:/home/xxxx/miniconda3/bin
保存
source .bashrc
conda -V
激活conda的base环境
source activate
- 源配置
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud//pytorch/
- 环境创建和包安装
conda create -n name python=3.9
activate name
两种包安装方式
pip2 install pytorch
conda install pytorch
六、更改wsl网络模式为桥接(默认为NAT)
参考
由于WSL2底层使用的是Hyper-V虚拟机,所以我们可以修改虚拟交换机的类型,来启用桥接网络
打开Hyper-V管理器 -> 操作 -> 虚拟交换机管理器, 修改WSL的连接类型为“外部网络”
这一步,需要将wsl关闭
wsl --shutdown
注意点:重启Windows10后桥接失败。重启后桥接可能会失败,而且上不了网,可以取消勾选外网网口的“Hyper-V可扩展的虚拟交换机”选项,然后重新配置桥接(自测不需要重新配置桥接)
WSL2的MAC地址不固定
由于WSL2的MAC地址每次重启后都会变化,所以桥接后DHCP的ip也是非固定的,参考issue。
目前没有好的解决办法,一些依赖MAC地址的服务,可能会工作不正常。如samba的域名访问。