一、win10系统配置
1.1 开启虚拟化
在bios中开启电脑的虚拟化功能
1.2 开启Windows功能
设置 -> 应用 -> 程序和功能 -> 启用或关闭 windows 功能
勾选:
- 使用用于 Linux 的Windows 子系统
- 虚拟机平台
一、安装wsl
1.1 不使用 Windows store 下载 wsl
# 在管理员身份下使用(其中Ubuntu的版本可变)
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile ./Ubuntu.appx -UseBasicParsing
# 上述命令会在当前路径下下载一个 Ubuntu.appx 文件,将其后缀改为zip,并解压
# 双击其中的Ubuntu.exe文件可自动配置wsl
# 注意:解压文件即为wsl的安装路径,可以控制解压路径来控制wsl文件的保存路径
1.2 wsl 的部分指令
https://www.cnblogs.com/kylingx/p/12984487.html
# 查看所有已安装的wsl子系统
wsl --list --verbose
# 进入指定的wsl子系统(使用 wsl 可进入默认的子系统)
wsl -d <wsl_name>
# 取消注册和重新安装分发版 注销后,与该分发关联的所有数据、设置和软件都将永久丢失。 从 Store 重新安装会安装分发版的干净副本
wsl --unregister <DistributionName>
1.3 将 wsl 切换至 wsl2
# 设置wsl默认下载的版本
wsl --set-default-version 2
# 设置指定的wsl为指定的版本
wsl --set-version <distribution name> <versionNumber>
# eg. wsl --set-version Ubuntu18.04 2
二、设置 wsl2 远程连接
https://blog.csdn.net/weixin_43718675/article/details/106844150
2.1 重装 wsl2 的 openssh-server
sudo apt-get remove openssh-server
sudo apt-get install openssh-server
2.2 修改 wsl2 配置文件
sudo vim /etc/ssh/sshd_config
# 修改配置文件中的参数
Port 2222 #设置ssh的端口号, 由于22在windows中有别的用处, 尽量不修改系统的端口号
PermitRootLogin yes # 可以root远程登录
PasswordAuthentication yes # 密码验证登录
2.3 wsl2 重启 ssh 服务
sudo service ssh --full-restart
2.4 开启windows的端口
设置 -> 更新和安全 -> windows 安全中心 -> 防火墙和网络保护 -> 高级设置
入站规则 -> 新建规则 -> 特定端口(2222 与 wsl2 中设置的一致) -> …
2.5 设置 wsl2 与 windows 端口映射
# 在windows的powershell中执行,获取 wsl 内ubuntu的ip地址
wsl -- ifconfig eth0
# 将ip地址的对应的端口映射到宿主win10对应的端口
# netsh interface portproxy add v4tov4 listenport=[win10端口] listenaddress=0.0.0.0 connectport=[虚拟机的端口] connectaddress=[虚拟机的ip]
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=172.29.41.233
# 检测是否设置成功
netsh interface portproxy show all
三、配置WSL使用cuda
3.1 在Windows系统中安装 适用于 wsl2 的 cuda 驱动
3.2 在WSL2中安装CUDA Toolkit
执行下列命令安装CUDA Toolkit。下列命令中的URL适用于Ubuntu 18.04版本,如果你安装的是其他版本需要修改命令中的URL
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list'
sudo apt-get update
sudo apt-get install -y cuda-toolkit-11-0
3.3 测试CUDA是否能在WSL2中运作
使用PyTorch中的torch.cuda.is_available()测试,如返回True说明可以运行
四、创建 wsl2 桌面远程终端访问
4.1 在wsl中安装所需用的包
sudo apt update
sudo apt install -y xfce4 xrdp
4.2 修改xrdp默认端口
由于 xrdp
安装好后默认配置使用的是和Windows远程桌面相同的3389 端口,为了防止和Windows系统远程桌面冲突,建议修改成其他的端口
sudo vim /etc/xrdp/xrdp.ini
# 修改下面这一行,将默认的3389改成其他端口即可
port=3391
4.3 为当前用户指定登录session类型
注意这一步很重要,如果不设置的话会导致后面远程桌面连接上闪退
vim ~/.xsession
# 写入下面内容(就一行)
xfce4-session
4.4 启动xrdp
由于WSL2里面不能用 systemd
,所以需要手动启动
sudo /etc/init.d/xrdp start
4.5 开启window的端口(参见 2.4)
4.6 开启wsl2到window的端口映射(参见 2.5)
五、关于重启电脑后的重新配置
5.1 wsl到window的端口映射
- 由于Windows重启后会给wsl重新赋ip地址,因此需要重新设置wsl到window的端口映射
# 查看已有的端口映射
netsh interface portproxy show all
# 删除之前的映射关系
netsh interface portproxy delete v4tov4 listenport=XXXX listenaddress=0.0.0.0
# 查看当前wsl的ip地址
wsl -- ifconfig eth0
# 设置新的端口映射关系
# netsh interface portproxy add v4tov4 listenport=[win10端口] listenaddress=0.0.0.0 connectport=[虚拟机的端口] connectaddress=[虚拟机的ip]
netsh interface portproxy add v4tov4 listenport=XXXX listenaddress=0.0.0.0 connectport=XXXX connectaddress=XXXX