安装WSL2
和Ubuntu
见https://blog.csdn.net/bule_shake/article/details/135992375
补充,可以在安装WSL2
和Ubuntu
时,就把启动或关闭Windows功能
的hyper-v
、适用于Linux的Windows子系统
、虚拟机平台
就都勾选了,后面的WSL2实现linux子系统GPU直通
需要使用。
wsl相关命令:
wsl # 启动wsl实例
wsl -l -v # 显示安装的wsl实例及其状态、版本
wsl --shutdown # 退出wsl实例
说明正常安装了ubuntu且是wsl2版本(这里的STATE
应该为Running
)
问题:wsl --update
进度卡住
如果命令wsl --update
进度一直为0,可以先运行wsl --shutdown
,然后再次升级。
问题:微软商店打不开、连不上、无法下载?
见https://www.bilibili.com/read/cv9824316/
问题:微软商店找不到wsl2
这很正常,直接安装ubuntu
也是可以的,会默认安装wsl
,然后执行wsl --update
即可。
WSL2实现linux子系统GPU直通
视频和配套文章
视频地址:https://www.bilibili.com/video/BV1ej41167KV
配套文章:https://blog.csdn.net/qq_43197914/article/details/132262379
步骤详解
其中配套文章没有讲解细节,可以见如下步骤:
检查主机 NVIDIA GPU 的当前状态
在主机的命令行窗口输入
nvidia-smi
如果没有出现类似如上内容,说明主机的gpu
驱动有问题,需要安装或更新。
启动systemd
在ubuntu
实例中输入
echo -e “[boot]\nsystemd=true” | tee -a /etc/wsl.conf
本质就是新建一个/etc/wsl.conf
文件,然后写入
[boot]
systemd=true
用其他命令代替也行。
退出ubuntu
实例,且在主机的命令行窗口中用wsl --shutdown
停止ubuntu
进程,然后重启ubuntu
实例,再在实例中输入如下命令检查:
ps --no-headers -o comm 1
显示systemd
即可。
启动nvidia-smi
在ubuntu
实例中输入如下
cp /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
chmod ogu+x /usr/bin/nvidia-smi
设置网络
在主机命令行窗口输入:
ifconfig
看到172
开头的ip
,因为hyper-v
默认地址是172
开头的。
如果不更改,这个ubuntu
子系统就不可以被远程连接,即使是在一个局域网里。
所以我们在搜索栏搜索“启动或关闭Windows功能”,勾选hyper-v
打开Hyper-V管理器
记住创建虚拟交换机的名字,在这里我命名为ubuntu
。
找到网络和共享中心
就可以看到多了一个网络连接,该适配器的名字是刚刚虚拟交换机名字。
然后打开文件管理器,输入%USERPROFILE%
,新建.wslconfig
文件
[wsl2]
networkingMode=bridged
vmSwitch=【适配器的名字】
ipv6=true
退出ubuntu
实例,且在主机的命令行窗口中用wsl --shutdown
停止ubuntu
进程,然后重启ubuntu
实例,输入ifconfig
发现172
开头的ip
变为刚刚网络适配器内的ip
。
启动开机自启(可选)
win+r
快捷键输入shell:startup
并打开,创建wsl-startup.vbs
文件并写入如下内容:
set ws=wscript.CreateObject(“wscript.shell”)
ws.run “wsl -d 【实例名称】”, 0
像本人是安装的ubuntu
,所以写的是
set ws=wscript.CreateObject(“wscript.shell”)
ws.run “wsl -d Ubuntu”, 0
问题:网络连接失败
ping 8.8.8.8和baidu.com有问题
问题截图:
解决方案一:
https://www.cnblogs.com/VAllen/p/how-enable-systemd-wsl-windows-11-and-fixed-dns-resolved-error.html
解决方案二:
https://blog.csdn.net/weixin_41446370/article/details/132422315
解决方案三:
删掉%%USERPROFILE
下的.wslconfig
文件,删除Hyper-v管理器
前面步骤新创建的交换机。
打开梯子的局域网连接和系统代理,检查端口是否是默认的7897
在主机命令行窗口输入:
ipconfig
找到【无线局域网适配器 WLAN】的【ipv4地址】。
在ubuntu
实例下的/usr/bin
目录下新建proxy.sh
,然后输入如下内容:
export http_proxy=http://$1:7897 && export https_proxy=http://$1:7897 \
&& echo "已使用$1的7897端口作为网络代理。"
并保存。随后执行如下命令
mv proxy.sh proxy
chmod +x proxy
每次打开ubuntu
实例时,都执行. proxy 【ipv4地址】
即可
wsl: 检测到 localhost 代理配置,但未镜像到 WSL
见https://blog.csdn.net/m0_62815143/article/details/141285660
安装cuda(12.5)
首先查看是否有gpu和合适的cuda版本
在ubuntu
实例中输入
nvidia-smi
输出如下:
说明该实例上存在gpu
驱动,且适合的CUDA
版本是12.5
cuda
的安装见:https://blog.csdn.net/m0_54634272/article/details/142392644
的显卡驱动和CUDA安装
部分。
主机和子系统互相访问文件
在主机的文件管理器上输入:\\wsl$\<你的Ubuntu发行版名称>\
后即可打开子系统文件夹。
而在子系统上cd /mnt/
即可访问主机文件