从0开始进行WSL的一些配置(网络,headers、CUDA、Container)
一、WSL2配置网络
WSL 2 发布了最新版本 2.0.0,这个版本开始,自带支持新的镜像网络解决所有的网络相关问题。
需要条件:Windows 11 22H2以上的版本,安装好的WSL2和linux。
更新 WSL:wsl --update --pre-release
在用户目录 %USERPROFILE%
下面创建一个配置文件 .wslconfig
,写入以下内容:
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
如果你遇到 docker 无法从 Windows 访问的问题,这个是 iptables 的问题,在 /etc/docker/daemon.json
里添加一句 "iptables": false
就好了。
二、安装WSL2头文件
基本上参考 WSL升级到最新版本Linux内核headers的方法 - 知乎 (zhihu.com) 的步骤,前提条件如下:
1)安装好的WSL2,并已选用。
2)sudo apt-get install dwarves
3)sudo mount -t debugfs debugfs /sys/kernel/debug
步骤如下:
- 首先,到 Releases · microsoft/WSL2-Linux-Kernel · GitHub 这里下载你内核对应版本的源码(查看内核版本:echo $(uname -r),建议直接升级到最新版本的内核,方法参考参考资料)
- 安装依赖:sudo apt install libelf-dev build-essential pkg-config bison flex libssl-dev bc
- 内核源码下载后,上传到wsl里面的home目录
- 执行解压缩:tar -zxvf xxxx.tar.gz
- 进入源码文件夹,执行 cp Microsoft/config-wsl .config
- 上一步执行完毕,参照bpftrace的要求,在.config文件末尾加上bpftrace/INSTALL.md at master · iovisor/bpftrace (github.com) 这里提到要加的配置项
- 再执行 make oldconfig && make prepare
- 执行 make scripts
- 再执行 sudo make modules && sudo make modules_install
- 手动安装bpftool,cd ./tools/bpf/bpftool;make;sudo make install
上述执行完毕,执行:sudo apt install bpftrace,安装上bpftrace,执行:sudo bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %s\n", comm, str(args->filename)); }' 看看是否可行,可行就表示安装成功了
三、CUDA
参考官网流程:CUDA Toolkit 12.3 Downloads | NVIDIA Developer
1、安装依赖
sudo apt-get "${APT_ARGS[@]}" install \
build-essential \
curl \
"linux-headers-$(uname -r)"
2、通过CUDA_TOOLKIT安装CUDA
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-3
3、查看结果
nvcc -V
四、CUDNN
CUDNN_TAR_FILE="cudnn-11.3-linux-x64-v8.2.0.53.tgz"
wget -q https://developer.download.nvidia.com/compute/redist/cudnn/v8.2.0/${CUDNN_TAR_FILE}
tar -xzvf ${CUDNN_TAR_FILE}
sudo cp -P cuda/include/cudnn.h /usr/local/cuda-11/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-11/lib64/
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-11/lib64/
sudo chmod a+r /usr/local/cuda-11/lib64/libcudnn*
sudo ldconfig
五、Nvidia Container
- Configure the repository:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container- toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
- Install the NVIDIA Container Toolkit packages:
$ sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
- 测试
sudo docker run --gpus 1 nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04 nvidia-smi
参考资料:
WSL2 网络的最终解决方案 - 知乎 (zhihu.com)
WSL升级到最新版本Linux内核headers的方法 - 知乎 (zhihu.com)
CUDA Toolkit 12.3 Downloads | NVIDIA Developer
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.14.3 documentation