先用了vmware + ubuntu的方法,结果发现现在gpu无法透传到vmware的虚拟机里
故此使用wsl2的开发环境,后续会更新许多更舒服丝滑的操作
查看所有发行版本
wsl --list --online
安装指定版本
wsl --install Ubuntu-22.04
安装成功之后设置一下账户密码就行
用脚本安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
conda list
用脚本安装就一直yes就行
使用 nvidia-smi查看cuda版本,在下面链接选择相应的版本
https://developer.nvidia.com/cuda-toolkit-archive

选择好之后下面有一行一行的代码,逐步运行即可
在 ~/.bashrc中添加路径,注意版本的区别:
export PATH=/usr/local/cuda-12.9/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:$LD_LIBRARY_PATH
是toolkit用wsl-Ubuntu版本,默认已经安装了。此时使用命令来验证:
(base) moyu@DESKTOP-5C0FGMS:~$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Tue_May_27_02:21:03_PDT_2025
Cuda compilation tools, release 12.9, V12.9.86
Build cuda_12.9.r12.9/compiler.36037853_0
注意:这是非必要操作,如果迁移wsl系统,如果迁移到硬盘里,极大可能是无法编译源码的,请尽可能放在pcie设备中。
wsl的系统放在:
C:\Program Files\WindowsApps\CanonicalGroupLimited.安装的ubuntu的版本__xxxxxxxxx
有需要可以备份
先查看有哪些系统
C:\Users\32341>wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 2
然后关闭实例
C:\Users\32341>wsl --shutdown
到处系统的镜像,具体来说为wsl --export 系统实例 路径
wsl --export Ubuntu-22.04 F:\WSL\Ubuntu-22.04.tar
导入实例
wsl --import 虚拟机名字 安装路径 tar包路径 --version 2
请注意这里的文件夹可以自己设定,比如说我执行的是:
wsl --import ubuntu F:\ubuntuWSL F:\WSL\Ubuntu-22.04.tar --version 2

设置默认访问用户,不然root和用户的环境不一样
ubuntu2204.exe config --default-user moyu
我这里不知道为什么,用户设定不了,无所谓,su moyu即可
wsl启动指定实例:
wsl -d <指定的实例名字>

用一段时间没问题了,可以选择注销原来的实例
wsl --unregister Ubuntu-22.04
注意,如果你两个都stop的情况下,开启非主实例,会把主实例也开启

而如果你只开了主实例,那么唤醒的只会是主实例

在命令行中选择刚刚的wsl2的系统

使用su命令避开root用户,然后查看环境是否正确

window的vscode可以直接连接wsl2,所以只要保持wsl2的干净即可
sudo apt-get remove --purge openssh-server ## 先删ssh
sudo apt-get install openssh-server ## 再安装ssh
当左下角出现蓝色的连接即可。
由于WSL2是通过虚拟化技术实现的,所以翻墙有点不一样,本质是两套系统在同一个局域网内,首先要找到ubuntu的IP:
$ 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 172.xxx.xxx.1
$ export ALL_PROXY="http://172.xxx.xxx.1:17890"这里需要注意的是端口号17890是外部软件的端口
将上面的过程写入一个 bash 脚本,可以轻松的实现一键配置代理:
"~/.bashrc"
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:17890"脚本通过 cat /etc/resolv.conf 来获取 DNS 服务器,也就是 Windows 的 IP,再将其中的 IP 部分截取出来,加上代理客户端的端口
新建一个hello_world.cu文件,输入:
#include <cuda_runtime.h>
#include <iostream>
__global__ void hello_world(void) {
printf("block idx:%d thread idx: %d\n", blockIdx.x, threadIdx.x);
if (threadIdx.x == 0) {
printf("GPU: Hello world!\n");
}
}
int main(int argc, char **argv) {
printf("CPU: Hello world!\n");
hello_world<<<
1, 1>>>();
cudaDeviceSynchronize();
if (cudaGetLastError() != cudaSuccess) {
std::cerr << "CUDA error: " << cudaGetErrorString(cudaGetLastError())
<< std::endl;
return 1;
} else {
std::cout << "GPU: Hello world finished!" << std::endl;
}
std::cout << "CPU: Hello world finished!" << std::endl;
return 0;
}
编译运行
nvcc -g -G -O0 -o hello course1/hello_world.cu
./hello 
如果在wsl运行发现权限报错,请务必查看文件的归属是那个用户
(base) moyu@DESKTOP-5C0FGMS:~/cuda_code$ ls -ld .
drwxr-xr-x 14 root root 4096 Aug 4 00:19 .
(base) moyu@DESKTOP-5C0FGMS:~/cuda_code$ sudo chown -R moyu:moyu .
只要将其归到现在用户,就可以执行了
其他更多的请查看【CUDA从入门到入土】二、CUDA调试和必知必会
下面可以不用看了
垃圾,用不了,因为虚拟机无法将gpu虚拟到虚拟机的系统里
sudo apt install gcc
vmware 虚拟机 --> 设置

window + R,输入cmd,打开终端,然后输入ipconfig,查看ipv4

然后在Ubuntu中设置,这里的端口号根据梯子软件来设定,记得梯子软件要开启局域网连接

搜索官网直接下载,然后输入
sudo apt install ./google-chrome-stable_current_amd64.deb
