index-wslg
上一级页面:index-wsl
前言
wslg就是个大坑!!
官方文档见使用 WSL |运行 Linux GUI 应用程序微软文档 (microsoft.com)
wsl端安装所需依赖
安装x11-xserver-utils,它包含xhost+、xrdb等常用命令。
并且可以通过x11-xserver-utils拉取大部分图形界面所需的依赖
sudo apt install x11-xserver-utils
screen能够新建一个screen。使用方法:直接在终端输入screen并回车
sudo apt install screen
wsl端配置环境变量
使用xclock测试是否能够正常使用
可以安装一个简单的X程序来初始化,并验证X11环境是否已经配置成功:如xclock,
sudo apt install x11-apps #包含xclock
安装之后,在确认DISPLAY变量已经设置
临时指定变量LC_ALL并运行xclock
LC_ALL=C xclock
若弹出一个时钟窗口,则配置成功。
解决报错
Warning: Missing charsets in String to FontSet conversion
根源
- 不正确的区域设置环境变量。
诊断步骤
- 检查错误日志
- 使用以下命令检查用户的设置:
locale
解决方案:
临时指定变量LC_ALL并运行xclock
LC_ALL=C xclock
使用方式
以后重启电脑后,只需要重新启动系统,然后在WSL中输入命令启动GUI程序即可使用。
配置快捷方式
如何禁用wslg
如果想禁用wslg,编辑 ~/.wslconfig
,文件路径为 C:\Users\<UserName>\.wslconfig
.
# Settings apply across all Linux distros running on WSL 2
[wsl2]
guiApplications=false
之后重启系统
虚拟包
许多Linux的图形应用程序都包含对它们所需的GUI实现包的依赖性,但WSLG已经提供了完美的支持,
WSLG
已经提供了完美的GUI依赖支持,例如WSLG
已经提供了完美的pulseaudio``和xwayland
等依赖支持,故如果使用WSLG,那么在wsl中不应当再安装Wayland
包,通过WSLG就可以获取开箱即用的体验
如果你使用WSLG。因为WSLg已经为您提供了一个完美工作的副本,这些GUI的依赖包不应当安装在wsl中,反而应当以虚拟包的方式提供。
见wslg-在不安装包本身的情况下提供依赖项-传递声音-pulseaudio-虚假依赖包
配置OpenGL以及D3D12加速
先决条件
按照官方文档的说法:WSL 上的 CUDA :: CUDA Toolkit Documentation (nvidia.com)
最新的NVIDIA Windows GPU驱动程序将完全支持WSL 2。借助驱动程序中的 CUDA 支持,现有应用程序(在 Linux 系统上为同一目标 GPU 编译的其他位置)可以在 WSL 环境中未经修改地运行。
也就是说,如果你只是正常的运行图形程序,那么只要安装GPU驱动即可,见wsl2安装配置gpu驱动
但如果你需要使用cuda为python等提供cuda加速(只有部分开发人员需要),要编译新的 CUDA 应用程序,需要一个适用于 Linux x86 的 CUDA 工具包。对 WSL 的 CUDA Toolkit 支持仍处于预览阶段,因为调试器和探查器等开发人员工具尚不可用。但是,WSL2环境中完全支持CUDA应用程序开发,因此,用户应该能够使用适用于x86 Linux的最新CUDA Toolkit编译新的CUDA Linux应用程序。即需要安装额外的cuda工具包,详见wsl2-cuda安装
实际上,最重要的就是分清楚上面所说的cuda驱动,GPU驱动,cuda工具包等等概念。
如果计算机上已安装 WSL,则可以通过从提升的命令提示符运行 update 命令来更新到包含 Linux GUI 支持的最新版本。
选择“开始”,键入 PowerShell,右键单击“Windows PowerShell”,然后选择“以管理员身份运行”。
输入 WSL 更新命令:
PowerShell复制
wsl --update
您需要重新启动 WSL 才能使更新生效。可以通过在 PowerShell 中运行关机命令来重新启动 WSL。
PowerShell复制
wsl --shutdown
注意
Linux GUI 应用仅受 WSL 2 支持,不适用于为 WSL 1 配置的 Linux 发行版。了解如何将分发从 WSL 1 更改为 WSL 2。
现在WSLG已经可用了,直接在WSL2端安装GUI程序即可
OpenGL以及D3D12加速
WSLG默认采用的D3D12加速(GPU硬件加速的一种)
注意:
D3D12加速不支持测试版mesa,见测试版mesa不支持D3D12
D3D12加速的主要贡献则来自WSLG项目,它被包括在了上游的GPU驱动中,
如果你想在WSL中使用D3D12硬件加速,那么请放弃测试版mesa。
如果你必须使用测试版mesa,那么测试版mesa会自动采用LLVMPIPE(软件渲染)
wslg与genie的集成
genie
(1.39+) 还安装了一对 systemd 单元wslg-xwayland.service
和 wslg-xwayland.socket
以及对user-runtime-dir@.service
进行了覆盖,以确保 WSLg 从瓶子内部正确运行。
如果需要使用,可以独立于genie
本身启用这些功能。
sudo systemctl enable wslg-xwayland.service wslg-xwayland.socket user-runtime-dir@.service
sudo systemctl start wslg-xwayland.service wslg-xwayland.socket user-runtime-dir@.service