在Win11配置WSL


Win11配置WSL

前言废话:

在电脑上需要LINUX开发的时候,由于虚拟机无法直接连接到电脑主机的显卡,无法在LINUX上进行CUDA编程。所以如果需要在该电脑进行LINUX的CUDA开发,配置一个wsl就显得十分重要。

本次配置是在一台(刚装过vs c++和CUDA的)全新的电脑上配置的,系统是win11。

1、电脑系统内的配置

有两种方法,大同小异,可自行选择其中一种方案

1.1 用控制面板

控制面板->程序->启用或关闭 windows 功能 中,开启 Windows 虚拟化、 Linux 子系统(WSL2)、Hyper-V

控制面板

勾选画框的部分

用管理员身份打开powershell,输入以下指令:

bcdedit /set hypervisorlaunchtype auto

1.2 用命令行

用管理员身份打开powershell分别输入以下的指令:

bcdedit /set hypervisorlaunchtype Auto

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform #需要重启系统,请注意按y让他重启

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

如果以上内容不能顺利运行,可以执行以下的指令:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2、下载linux子操作系统

打开Microsoft Store,里面有很多不同的linux操作系统,有debain,Ubuntu、kali等等,在搜索框输入自己需要的操作系统名,选择下载即可,这里使用大家都爱用的Ubuntu,版本20.04。

选择需要的系统即可

下载完成后,在cmd或者powershell输入wsl即可。初始化会让你注册用户名,设定密码等等。如果你一路操作下来都很顺利,本次安装到此结束。

如果你出现了报错,希望在第四部分,我的踩坑解决方案可以帮助到你

3、查看子系统的文件

使用Win+r调出运行界面框,输入\\wsl$即可打开wsl的文件管理器。

但我们的运行界面有时候要用别的功能,自然会希望可以在 “此电脑” 界面中直接可以打开了

我们用上面的方法打开目录后,点选上面的路径复制下来

复制wsl的路径

然后返回此电脑的界面,右键菜单栏选择添加一个网络位置

此电脑中右键菜单栏

一路点选 “下一页”,然后他要你填写网络位置的时候,把刚刚的路径粘贴进去,点选 “下一页”继续。

然后就可以在此电脑界面中直接查看wsl文件了。

4、踩坑记录

我出现的报错内容大致如下:

并且我初步配置的时候,是没有功能Hyper-V 的,而且运行下面这条指令的话,会报错功能名称 Microsoft-Hyper-V 未知。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

4.1 解决Microsoft-Hyper-V不存在

首先在电脑新建一个txt文件,把以下内容贴进去

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

然后保存,文件后缀名改成.cmd格式,然后运行他。

运行完毕,重新在管理员权限下的powershell中运行刚刚的Microsoft-Hyper-V指令即可

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

4.2 解决wsl启动时出现一堆???的问题

首先下载Windows Subsystem for Linux Update setup 官方版将WSL1升级到WSL2。

下载地址1:https://www.xitongzhijia.net/soft/244754.html

下载地址2:https://www.aliyundrive.com/s/F297Y6SNpSf

下载完毕执行一下该msi程序。

然后重新跑一下以下代码:

bcdedit /set hypervisorlaunchtype Auto

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform #需要重启系统,请注意按y让他重启

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

然后我在完成到这一步就解决问题了。


5、给wsl安装图形化界面

回来更新wsl的图形界面

sudo apt-get purge xrdp

sudo apt-get install -y xrdp

安装完成后,选择第一个选修gdm3

如果选错了,可以用这个语句修改: sudo dpkg-reconfigure gdm3

sudo apt install -y xfce4-goodies

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini

sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini

echo xfce4-session > ~/.xsession

然后编辑/etc/xrdp/srartwm.sh文件,这里随便用什么都可以,我是直接使用vscode的wsl插件进行修改。可以使用nano对文件进行修改。

sudo nano /etc/xrdp/srartwm.sh

末尾两句注释掉:

# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# exec /bin/sh /etc/X11/Xsession

并自行在最末尾加上:

# xfce
startxfce4

然后启动服务:sudo /etc/init.d/xrdp start

使用win+r后,输入mstsc回车

在界面输入localhost:3390

输入账号密码登录即可使用

用完记得用sudo /etc/init.d/xrdp stop 关闭哦

如果普通用户无法正常登录,比如我会出现 login failed for display 0 的报错:

可以使用su进入超级用户,然后启动服务。使用root账户名和密码登录远程图形化界面,即可使用。

如果以上内容还不能解决到你的问题,可以参考/var/log/xrdp-sesman.log日志,根据问题在网上查找相关解决方案


文章作者: 拓佑豪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 拓佑豪 !
评论
  目录