跳转至

WSL2 踩坑全记录

1.安装WSL

进入insider 空白要开信息采集,开启灰色需要进计算机管理给权限(还挺麻烦的,网上有教程,例如这个

需要系统版本BUILD > 20145吧,大概是这个数,据说202xx的也有问题,就选最新的dev通道吧。

Store里装Ubuntu 18.04

进去之后创建用户名密码

创建root密码

sudo passwd root

更改软件源

sudo nano /etc/apt/sources.list

Alt + T 全选剪切

注意:需要复制多行文本时需要用Windows Terminal打开!Windows Terminal通过Store安装。

添加清华源,注意版本18.04

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

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

Ctrl + X 保存退出

更新包,系统初始状态是空包,一定要更新

sudo apt update && sudo apt update -y
# 清理缓存
sudo apt -y clean && sudo apt -y autoclean && sudo apt -y autoremove

连不上网,惊不惊喜。因为WSL2目前版本吧有很多BUG,连不上网的问题还没修好,只能手动解决,具体方式如下:

首先删除 /etc/resolv.conf,这是个软连接,直接改重启就没了

sudo rm /etc/resolv.conf

然后再生成一个 /etc/resolv.conf

sudo touch /etc/resolv.conf

然后在这个文件里写入自定义的DNS服务器,因为默认的不好使

sudo nano /etc/resolv.conf

写入内容,可以用别的DNS:

nameserver 114.114.114.114

再创建一个/etc/wsl.conf,阻止启动时创建/etc/resolv.conf

sudo touch /etc/wsl.conf
sudo nano /etc/wsl.conf

写入内容:

[network] 
generateResolvConf = false 

继续更新包

sudo apt update && sudo apt update -y
# 清理缓存
sudo apt -y clean && sudo apt -y autoclean && sudo apt -y autoremove

2. 安装Miniconda 和 Jupyter-lab

接着安装一下conda,这里先装个Miniconda吧,首先下载

wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

然后最好给个权限,不然可能安装的会有点问题,777就是啥权限都有

sudo chmod 777 ~/Miniconda3-latest-Linux-x86_64.sh

然后开始安装,最好还是给个sudo权限

sudo bash Miniconda3-latest-Linux-x86_64.sh 

很多人说吧,不要自动初始化,但是咱全新的安装和别的软件也冲突不了,就直接第三步选yes了

接着装个JupyterLab

conda install -c conda-forge jupyterlab

然后发现,

conda: command not found

可能需要重启下,重启就是把终端关了再打开,很简单,此时能看到(base)

还需要添加一下安装源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

此时输入命令,还是装不了

Collecting package metadata (current_repodata.json): failed

这时候应该是权限出了问题,得给miniconda3还有.conda这个文件夹权限,wy这里填自己的用户名

sudo chown -R wy ~/miniconda3
sudo chown -R wy ~/.conda

好了这就开始安装了,继续执行

conda install -c conda-forge jupyterlab

下的还挺慢,感觉channel不是太好

然后打开jupyter-lab,直接打

jupyter lab

此时吧,会给一个地址,同时他会试图打开一个浏览器,这时候就乱码了,可能是我的win是英文版的问题。按Ctrl + C是能看到地址的,反正就不能自动打开windows 里的浏览器。

于是,设置一下。Ctrl + Z结束jupyter-lab进程

首先,生成默认配置文件

jupyter notebook --generate-config

修改这个文件

nano ~/.jupyter/jupyter_notebook_config.py

Ctrl + W 搜索 c.NotebookApp.use_redirect_file这个配置选项,把它改成,并取消注释

c.NotebookApp.use_redirect_file = False

之后修改~/.bashrc

nano ~/.bashrc

添加浏览器指向,例如"C:\Program Files\Google\Chrome\Application\chrome.exe"写成'/mnt/c/Program Files/Google/Chrome/Application/chrome.exe'

export BROWSER='/mnt/c/Program Files/Google/Chrome/Application/chrome.exe'

刷新bash

source ~/.bashrc

此时用jupyter lab命令就能直接打开windows内部的浏览器了

3.安装CUDA

接下来装一下CUDA

首先要有Nvidia的显卡,然后在windows里装上最新的驱动(得是最新的,目前还是预览版,需要注册Nvidia账户,在这里下载)

然后进入WSL2,下载WSL-Ubuntu的CUDA,可以在这个网站找到

wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
sudo sh cuda_11.1.0_455.23.05_linux.run

这一步可以先搭个梯子把那个run文件下下来挺大的3GB+,然后拷进去,下次要是重装就不用重复下了。

拷进去之后安装前先给个权限,这里我也拷在~下了

在这之前需要安装几个需要的软件(系统里自带的啥也没有。。)

sudo apt-get install -y gcc g++ make
sudo chmod 777 ~/cuda_11.1.0_455.23.05_linux.run
sudo sh cuda_11.1.0_455.23.05_linux.run

需要等待一段时间,可能比较卡,此时内存占用巨大,基本用满了(14.3GB/15.9GB),可能在解压吧。出错的话查看对应的log文件。

进入之后输入accept,然后选择安装即可,注意如果出现了driver的选项,需要把driver的×去掉。

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.1/
Samples:  Installed in /home/wy/, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-11.1/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.1/lib64, or, add /usr/local/cuda-11.1/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.1/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least .00 is required for CUDA 11.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

Logfile is /var/log/cuda-installer.log===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.1/
Samples:  Installed in /home/wy/, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-11.1/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.1/lib64, or, add /usr/local/cuda-11.1/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.1/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least .00 is required for CUDA 11.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

Logfile is /var/log/cuda-installer.log

可以看到一个Summary,他说他装完了,但是环境需要你配。具体来说呢,可以参考官方文档

这里版本号,我装的是11.1的,需要修改一下

环境变量可以添加在很多地方,这里加在~/.bashrc里

nano ~/.bashrc

在最后加如下:

export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

刷新一下bash

source ~/.bashrc

运行一下

nvcc --version

可以看到CUDA装好了

还可以进一步验证,执行如下操作

cd ./NVIDIA_CUDA-11.1_Samples/1_Utilities/deviceQuery
make
./deviceQuery

很尴尬,这里报错了代码35,表示没找到GPU,可能跟我用的P106有关系。

4.安装3D点云识别库——OpenPcdet

OpenPcdet是mmlab的一个3D点云识别库。

查看CUDA版本:

nvcc -V

我的是11.1.74

首先安装11.1.74的cudatoolkit

conda install -c nvidia cudatoolkit

会发现下的好慢啊,所以装个代理proxychains4,让WSL2能够访问主机代理。

git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr/local --sysconfdir=/etc
# 据说用下面这个更好,没试
./configure --prefix=/usr --sysconfdir=/etc
make && make install
make install-config
sudo nano /etc/proxychains.conf

最后一段改成socks5 主机ip 端口,主机ip,打开任务管理器--性能-以太网,注意不是WSL那个

Conda切换成清华源,之前那个expoert的方式会有一点点问题。这里采用官方做法。

nano ~/.condarc

替换成如下内容

channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - 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
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

运行 conda clean -i 清除索引缓存

利用conda构建一个pcdet环境:

注意,我们之前安装的cuda版本比较新,然后11.1 的cudatoolkit版本还没有(可能是清华源没有),这里先用10.1的凑活一下

conda create -n pcdet python=3.7.7 pytorch==1.3.1 torchvision cudatoolkit==10.1.243 cmake mayavi -c pytorch --yes

创建好之后我们可以通过以下命令进出pcdet环境,命令行前会从(base)变成(pcdet)

source activate pcdet
conda deactive

如果cuda装的没问题,在pcdet环境下,执行如下python代码:

python
import torch
print(torch.__version__)
print(torch.cuda.is_available())

会显示1.3.1的pytorch版本号,True表示能正确调用cuda

评论